feat: testing job output setup and usage #74
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Project | |
on: | |
pull_request: | |
types: [opened, synchronize] | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
- fix-* | |
- feat/** | |
paths-ignore: | |
- wofkflows/* | |
jobs: | |
lint: | |
# Notice: ubuntu runner comes with node.js pre installed | |
runs-on: ubuntu-latest | |
steps: | |
# download the code from the repository | |
- name: Get code | |
uses: actions/checkout@v4 | |
# To fix a node.js version | |
- name: Install NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: info on kind of event triggering the workflow | |
run: echo '${{ toJSON(github.event) }}' | |
- name: install dependencies | |
run: npm ci # to ensure you don't install some breaking versions | |
- name: run linter | |
run: npm run lint | |
test: | |
needs: [lint] | |
runs-on: ubuntu-latest | |
steps: | |
# download the code from the repository | |
- name: Get code | |
uses: actions/checkout@v4 | |
# To fix a node.js version | |
- name: Install NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: install dependencies | |
run: npm ci # to ensure you don't install some breaking versions | |
- name: Run tests | |
run: npm test | |
build: | |
needs: [lint, test] | |
runs-on: ubuntu-latest | |
outputs: | |
script-file: ${{ steps.publish-js.ouputs.script-file }} | |
steps: | |
# download the code from the repository | |
- name: Get code | |
uses: actions/checkout@v4 | |
# To fix a node.js version | |
- name: Install NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: install dependencies | |
run: npm ci # to ensure you don't install some breaking versions | |
- name: Build code | |
run: npm run build | |
- name: Publish JS filename | |
id: publish-js | |
run: | | |
find dist/assets/*.js -type f -exec echo 'script-file={}' >> $GITHUB_OUTPUT ';' | |
find dist/assets/*.js -type f -execdir echo 'script-file={}' ';' | |
cat "$GITHUB_OUTPUT" | |
# soon deprecated | |
# run: find dist/assets/*.js -type f -execdir echo '::set-output name=script-file::{}' ';' | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: built-artifacts | |
path: dist | |
deploy: | |
# to run the deployment only when the test job is successful... | |
needs: [lint, test, build] # array of jobs to wait for | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: built-artifacts | |
- name: Output built files | |
run: ls -la | |
- name: Output file name | |
# needs object contains all output of jobs | |
run: | | |
echo "${{ needs.build.outputs.script-file }}" | jq | |
- name: Deploy | |
run: echo "Deploying project..." |