Events
on:
push:
paths-ignore:
- 'docs/**'
Alternatively, developers can also add strings in the commit comments to skip manually:
[skip ci]
https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs
Steps
can be shell scripts, or actions (using "with
" to configure).
Jobs: In Parallel vs Sequential
Jobs can be sequential be specifying "needs: [job1, job2]
" keywords.
Expressions & Context Objects
e.g.
run: echo "${{ toJSON(github) }}"
Example NodeJS project workflow
name: Deploy Project
on: [push, workflow_dispatch]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Get code
uses: actions/checkout@v3
- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- name: Get code
uses: actions/checkout@v3
- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Build project
run: npm run build
- name: Deploy
run: echo "Deploying ..."
Useful actions:
Uploading Job Artifacts
https://github.com/actions/upload-artifact
Downloading Artifacts
https://github.com/actions/download-artifact
**Job Outputs**
find dist/assets/*.js -type f -execdir echo 'my-variable={}' >> $GITHUB_OUTPUT ';'
later on, this variable can be accessed via:
outputs:
script-file: {{ steps.publis.outputs.my-variable }}
Sharing outputs across multiple jobs
needs
https://docs.github.com/en/actions/learn-github-actions/contexts#needs-context
Caching Dependencies for speeding up jobs
https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows
e.g. use cache action in both build and test, with same hash value in the cache name (to make sure they are using the same cache in the central place):
Top comments (0)