CI/CD strategy
Most of the release process should be automated, this is why we configured GitHub actions to run different jobs.
PR validation strategy
- On each PR (and when new commits arrive) and on push on main,
cargo build
andcargo test
are run to make sure everything is working - On each git tag, we will run a CI job to test, build and run
cargo publish
to release PLX on crates.io
GitHub workflow
- We protect the main branch on the main repository to avoid pushing commits directly without any review. The 2 others repository (website + organisation profile) are not protected for ease of change.
- For each feature or change:
- we create a new issue and assign it to the correct person
- create a new branch,
- try to follow the conventionnal commits standard for writing commit messages,
- when done we send a PR.
- The PR is automatically merged only after one review, and trivial changes that do not review can be merged by the PR creator.
- Github is configured to block merging if CI jobs are failing.
- We try to delete the branch when PR is merged.
Release strategy
To release a new version of PLX, here are the manual steps:
- Create a new release branch
- Choose a new version number based following semantic version
- Modify the
CHANGELOG.md
to document changes since last release - Modify the
Cargo.toml
with the chosen version - Run
cargo build
to update the duplicated version number inCargo.lock
- Push the changes
- Open and merge PR of this release branch (tests must pass so we cannot release code with compilation errors)
The CI release job starts and detect a version change (version in Cargo.toml
different from the latest git tag) so the release process start
- Create a new tag with the extracted version
- Create a new release on Github with a link to the
CHANGELOG.md
- Run
cargo publish
to publish plx oncrates.io
The result is that running cargo install plx
again will install the new version!