- Reusable workflows (note: matrix strategy doesn't work here): https://docs.github.com/en/actions/using-workflows/reusing-w...
- Creating an action: https://docs.github.com/en/actions/creating-actions/metadata...
- Composite actions: https://docs.github.com/en/actions/creating-actions/creating...
- Fact, the "uses" in step can be a relative path in the same repository (obviously, you must checkout the code, when it uses a relative path): https://docs.github.com/en/actions/using-workflows/workflow-...
- Script as an action: https://github.com/actions/github-script
- Using GitHub Packages and artifacts: https://docs.github.com/en/actions/publishing-packages/about...
- Using docker-compose-like services that run alongside of the container: https://docs.github.com/en/actions/using-containerized-servi...
- Using heredoc to share multi-line JSON in an environment variable, also using fromJSON/toJSON functions:
- name: get-version
id: get-version
run: |-
echo 'JSON_RESPONSE<<EOF' >> $GITHUB_ENV
cat package.json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: print-version
run: echo "${{ fromJSON(env.JSON_RESPONSE).version }}"
- The matrix/strategy of the dependent workflow can be created dynamically, like in the following workflow: https://github.com/googleapis/google-cloud-go/blob/83bbc2e7c...And many, many more :)