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 buildandcargo testare run to make sure everything is working - On each git tag, we will run a CI job to test, build and run
cargo publishto 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.mdto document changes since last release - Modify the
Cargo.tomlwith the chosen version - Run
cargo buildto 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 publishto publish plx oncrates.io
The result is that running cargo install plx again will install the new version!
