-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: implement build and release automation #34
Closed
+334
−210
Conversation
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
Validation run of |
Closing this in favor of splitting out build and release into separate PRs. See #35 for the build steps. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements GitHub Actions Workflows to automate an initial set of PR checks and canary/production releases. It is modeled after the workflows in https://github.com/dequelabs/axe-core-maven-html, https://github.com/dequelabs/axe-core-npm, https://github.com/dequelabs/axe-core, and off discussion with @AdnoC about how certain internal Deque .NET builds work.
It is intended to work very similarly to existing build/release automation in the other similar libraries, except with everything based on GitHub actions instead of going through CircleCI. Specifically:
/package.json
file (the version number is repeated in each non-test.csproj
)pull-request.yml
) and produce packages for debugging purposes with version numbers like1.2.3-development.f4aeb4fa83661e5a5b612abb25997c379919bbde
publish-canary.yml
workflow, which repeats the build/tests in a release configuration, produces.nupkg
artifacts for each library, and publishes them as pre-release NuGet versions with a version number like1.2.3-alpha.1
, where the final number comes fromgithub.run_number
.create-release.yml
workflow, which automates the creation of a PR fromdevelop
tomaster
which usescommit-and-tag-version
andconventional-changelog-cli
to update version numbers and CHANGELOG.md appropriately.create-release.yml
) will kick off thepublish-production.yml
workflow, which works similarly topublish-canary
except using a version number without a suffix (like1.2.3
) and which includes an additionalpublish-github-release
job based on the similar circleci implementation from the example repossync-master-develop.yml
workflow to resync develop with the version update applied to master. This workflow is copied from the examples, with the pr reviewers changed to @AdnoC and @michael-siekI've also included a copy of the
auto-assign-issues.yml
that was present in all the example repos, as well as moved thesemantic-pr-title.yml
workflow from./github/workflow
to./github/workflows
(more idiomatic and consistent with other example repos).Finally, to enable the build/test step to run on
ubuntu-latest
(which is about 5x faster thanwindows-latest
), I needed to make a few modifications to the selenium integration tests:file://
protocols when translating from file paths to URLs to be compatible with linux-style file pathsWebDriver
andWait
properties are queried to remove some noise from failures during driver initializationThe assorted release builds will require the following secrets be added to the repo:
MY_GITHUB_TOKEN
: same as in example repos (used byauto-assign-issues.yml
, needs permissions to assign issues to the Axe API team project board)CHANGELOG_VERSION
: same as in example repos (used bycreate-release.yml
, should be a version number of theconventional-changelog-cli
npm package)COMMIT_AND_TAG_VERSION_VERSION
: new, similar toSEMANTIC_VERSION_VERSION
in example repos (used bycreate-release.yml
, should be a version number of thecommit-and-tag-version
npm packageADT_API_RELEASE_NAME
: same as in example repos (used bycreate-release.yml
, will be the committer name for release commits)ADT_API_RELEASE_EMAIL
: same as in example repos (used bycreate-release.yml
, will be the committer email for release commits)NUGET_API_KEY
: new, should be a NuGet API key with scoped permissions to publish new versions of the 3 specific packages in question. Used by allpublish-*
workflows.RELEASE_PUBLISHING_GITHUB_TOKEN
: new, similar to theGITHUB_TOKEN
assumed by the examples' circleci configs. Used bypublish-production.yml
to create GitHub releases, needs write permissions for releases. Can update this to reuseMY_GITHUB_TOKEN
fromauto-assign-issues.yml
if you want to consolidate.Once this is merged and working, we should enable corresponding branch protection policies for develop and master
Closes Issue: #4