a2e07a901e
It turns out that workflows were the wrong way to abstract reusable pieces of work. This turns common steps into custom actions (build docs, build packager, test packager) which can be used as encapsulated steps in multiple workflows. This is a much more natural way to avoid duplication compared to the previous approach of triggering one workflow from another. This also has the benefit of all of the steps of a release being represented on GitHub as a single workflow, making it easier to understand what is happening and what event triggered those steps. Change-Id: Ife156d60069a39594c7b3bb3bc32080e6453b544 |
||
---|---|---|
.. | ||
custom-actions | ||
README.md | ||
build_and_test.yaml | ||
docker_hub_release.yaml | ||
github_release.yaml | ||
npm_release.yaml | ||
update_docs.yaml |
README.md
GitHub Actions CI
Actions
custom-actions/build-packager
: Builds Shaka Packager. Leaves build artifacts in the "artifacts" folder. Requires OS-dependent and build-dependent inputs.custom-actions/test-packager
: Tests Shaka Packager. Requires OS-dependent and build-dependent inputs.custom-actions/build-docs
: Builds Shaka Packager docs.
Workflows
- On PR:
build_and_test.yaml
: Builds and tests all combinations of OS & build settings. Also builds docs.
- On release tag:
github_release.yaml
: Creates a draft release on GitHub, builds and tests all combinations of OS & build settings, builds docs on all OSes, attaches static release binaries to the draft release, then fully publishes the release.
- On release published:
docker_hub_release.yaml
: Builds a Docker image to match the published GitHub release, then pushes it to Docker Hub.npm_release.yaml
: Builds an NPM package to match the published GitHub release, then pushes it to NPM.update_docs.yaml
: Builds updated docs and pushes them to the gh-pages branch.
Required Repo Secrets
DOCKERHUB_CI_USERNAME
: The username of the Docker Hub CI accountDOCKERHUB_CI_TOKEN
: An access token for Docker Hub- To generate, visit https://hub.docker.com/settings/security
NPM_CI_TOKEN
: An "Automation"-type access token for NPM for theshaka-bot
account- To generate, visit https://www.npmjs.com/settings/shaka-bot/tokens and select the "Automation" type
SHAKA_BOT_TOKEN
: A GitHub personal access token for theshaka-bot
account, withworkflow
scope- To generate, visit https://github.com/settings/tokens/new and select the
workflow
scope
- To generate, visit https://github.com/settings/tokens/new and select the