2021-06-16 21:15:08 +00:00
|
|
|
# GitHub Actions CI
|
|
|
|
|
2023-12-01 17:32:19 +00:00
|
|
|
## Reusable workflows
|
|
|
|
- `build.yaml`:
|
|
|
|
Build and test all combinations of OS & build settings. Also builds docs on
|
|
|
|
Linux.
|
|
|
|
|
|
|
|
- `build-docs.yaml`:
|
|
|
|
Build Packager docs. Runs only on Linux.
|
|
|
|
|
|
|
|
- `build-docker.yaml`:
|
|
|
|
Build the official Docker image.
|
|
|
|
|
|
|
|
- `lint.yaml`:
|
|
|
|
Lint Shaka Packager.
|
|
|
|
|
|
|
|
- `publish-docs.yaml`:
|
|
|
|
Publish Packager docs. Runs on the latest release.
|
|
|
|
|
|
|
|
- `publish-docker.yaml`:
|
|
|
|
Publish the official docker image. Runs on all releases.
|
|
|
|
|
|
|
|
- `publish-npm.yaml`:
|
|
|
|
Publish binaries to NPM. Runs on all releases.
|
|
|
|
|
|
|
|
- `test-linux-distros.yaml`:
|
|
|
|
Test the build on all Linux distros via docker.
|
|
|
|
|
|
|
|
## Composed workflows
|
|
|
|
- On PR (`pr.yaml`), invoke:
|
|
|
|
- `lint.yaml`
|
|
|
|
- `build.yaml`
|
|
|
|
- `build-docs.yaml`
|
|
|
|
- `build-docker.yaml`
|
|
|
|
- `test-linux-distros.yaml`
|
|
|
|
|
|
|
|
## Release workflow
|
|
|
|
- `release-please.yaml`
|
|
|
|
- Updates changelogs, version numbers based on conventional commits syntax
|
|
|
|
and semantic versioning
|
|
|
|
- https://conventionalcommits.org/
|
|
|
|
- https://semver.org/
|
|
|
|
- Generates/updates a PR on each push
|
|
|
|
- When the PR is merged, runs additional steps:
|
|
|
|
- Creates a GitHub release
|
|
|
|
- Invokes `publish-docs.yaml` to publish the docs
|
|
|
|
- Invokes `publish-docker.yaml` to publish the docker image
|
|
|
|
- Invokes `build.yaml`
|
|
|
|
- Attaches the binaries from `build.yaml` to the GitHub release
|
|
|
|
- Invokes `publish-npm.yaml` to publish the binaries to NPM
|
|
|
|
|
|
|
|
## Common workflows from shaka-project
|
|
|
|
- `sync-labels.yaml`
|
|
|
|
- `update-issues.yaml`
|
|
|
|
- `validate-pr-title.yaml`
|
2021-06-16 21:15:08 +00:00
|
|
|
|
|
|
|
## Required Repo Secrets
|
2023-12-01 17:32:19 +00:00
|
|
|
- `RELEASE_PLEASE_TOKEN`: A PAT for `shaka-bot` to run the `release-please`
|
|
|
|
action. If missing, the release workflow will use the default
|
|
|
|
`GITHUB_TOKEN`
|
2021-06-16 21:15:08 +00:00
|
|
|
- `DOCKERHUB_CI_USERNAME`: The username of the Docker Hub CI account
|
|
|
|
- `DOCKERHUB_CI_TOKEN`: An access token for Docker Hub
|
|
|
|
- To generate, visit https://hub.docker.com/settings/security
|
2021-06-17 20:36:56 +00:00
|
|
|
- `DOCKERHUB_PACKAGE_NAME`: Not a true "secret", but stored here to avoid
|
|
|
|
someone pushing bogus packages to Docker Hub during CI testing from a fork
|
|
|
|
- In a fork, set to a private name which differs from the production one
|
2021-06-16 21:15:08 +00:00
|
|
|
- `NPM_CI_TOKEN`: An "Automation"-type access token for NPM for the `shaka-bot`
|
|
|
|
account
|
|
|
|
- To generate, visit https://www.npmjs.com/settings/shaka-bot/tokens and
|
|
|
|
select the "Automation" type
|
2021-06-17 20:36:56 +00:00
|
|
|
- `NPM_PACKAGE_NAME`: Not a true "secret", but stored here to avoid someone
|
|
|
|
pushing bogus packages to NPM during CI testing from a fork
|
|
|
|
- In a fork, set to a private name which differs from the production one
|
2023-12-01 17:32:19 +00:00
|
|
|
|
|
|
|
## Repo Settings
|
|
|
|
|
|
|
|
Each of these workflow features can be enabled by creating a "GitHub
|
|
|
|
Environment" with the same name in your repo settings. Forks will not have
|
|
|
|
these enabled by default.
|
|
|
|
|
|
|
|
- `debug`: enable debugging via SSH after a failure
|
|
|
|
- `self_hosted`: enable self-hosted runners in the build matrix
|