Skip to content
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

Epic: Setup GitHub actions for PRs, periodic testing, releasing #61

Closed
4 of 7 tasks
aburkleaux-amazon opened this issue Feb 23, 2021 · 0 comments
Closed
4 of 7 tasks
Assignees
Labels

Comments

@aburkleaux-amazon
Copy link
Contributor

aburkleaux-amazon commented Feb 23, 2021

Includes:

Code for Content Localization solution is delivered and released in stages where it undergoes different types of automated checks driven by GitHub Actions workflows. The stages are: Pre-commit → PR → Nightly → Release. The objective and configuration of each stage is summarized in the table below:

Pre-commit Pull-request (PR) Nightly Release
Branch Feature development development development → PR → main
Trigger Push to remote (public) repository Pull request Nightly workflow Release workflow
AWS region us-west-2 us-west-2 us-west-2 all supported regions for solution
Deployment modes N/A New deploy New Deploy and Update New deploy and update
Objective Prevent sensitive data or unliscensed third party code from being commited to the public repository The PR code is "clean" and builds successfully. Unit tests are passing. Deployment is successful. Deployment is successful on development branch against MIE for update deploy. All scans are passing. Unit, integration and end-to-end tests are passing. Deployment is successful on release branch against latest MIE release for new deploy and update of previous release. All scans are passing. Integration tests are passing.
Actions performed by stage
Pre-commit Pull-request (PR) Nightly Release
build yes yes yes yes
third party scan yes yes yes yes
sensitive data scan yes yes yes yes
quality scan yes yes yes yes
unit test yes yes yes yes
deploy test new new and update* new and update
integration test yes yes
end to end test yes no
publish code packages and label release yes
publish solution

*When update deployment is failing on the Nightly test runs, it may mean there is a breaking change in the current development code base and the next release will need to be a major version. It is not necessarily considered a failure, but surfaces a significant finding. The team will need to decide the course of action for advising users under previous versions for using the new release.

Pre-commit stage

The objective of the Pre-commit stage of testing is to prevent sensitive data or unlicensed third party code from being committed to the public repository. Developers commit feature work to the remote (public) instance of the repository throughout a development sprint using feature branches. Work is committed to feature branches that are not yet integrated with the shared code base on the development and main branches. Even though these changes are not integrated to the shared code base, pushing a feature branch to the public repository is "publishing" the code in the sense that the work in progress is viewable and consumable by everyone on GitHub. We need to ensure that this steps doesn't inadvertently expose the GitHub community to intellectual property or security risks.

Pull-request (PR) stage

The objective of the Pull-request (PR) stage is to ensure the code from a feature branch that is being integrated into the shared code base under development doesn’t introduce instability into the shared code base. At a minimum, the code is "clean", builds and deploys successfully and unit tests are passing. Developers integrate their feature work to the shared code base by creating a PR on the development branch. The PR must pass the automated PR tests as well as being reviewed by a committer for the project. PR testing should support the code review process and help ensure the stability of the code base. It is important to maintain stability of the builds and deployments as problems at this stage can impact the productivity of the entire development team.

Nightly stage

Some testing may not be feasible for every PR due to time and resource constraints. A nightly test run is used to perform longer running tests on the shared code base to ensure ongoing stability.

Release stage

The objective of the Release stage is to test and publish new release of Content Localization on GitHub. Committers for the project periodically create releases with bug fixes and new features. The release workflow includes:

  1. creating a release branch from development branch
  2. building deployment packages that will be hosted for the release
  3. updating one-click deploy button(s) in the README.md to point to the release deployment package
  4. testing the deployment packages
  5. pushing the release to the main branch
  6. labelling the release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants