...
- Run three workflows in parallel
- Workflow 1: Code scanning
- Version check job: validate version in VERSION file with Makefile target -
make check-version
- Lint job: check linters with Makefile target -
make lint
- License job: check license with Makefile target -
make license
- Fossa check job: run Fossa check with
fossa-action
- Version check job: validate version in VERSION file with Makefile target -
- Workflow 2: Test and build
- Build job: build code with Makefile target -
make build
- Test job: run tests with Makefile target -
make test
- Build job: build code with Makefile target -
- Workflow 3: Publish image/chart and tag/release code
- Version check job: validate version again right before publish image/chart and tag/release code
- Tag version job: if version is valid and not including
-dev
suffix, create a tag with version inVERSION
file - Publish image job:
- Step 1: build and push Docker image with tag
latest
if version is valid - Step 2: build and push Docker image with a specific version in
VERSION
file, if version is valid and not including-dev
suffix
- Step 1: build and push Docker image with tag
- Bump-up version job: if version is valid and not including
-dev
suffix, update VERSION file to increase thepatch
version and add-dev
suffix and then create a PR for this VERSION file change
- Workflow 1: Code scanning
How to check version?
Sample: https://raw.githubusercontent.com/onosproject/onos-pci/master/build/bin/version_check.sh
Repository configuration
- Github repo settings > General tab > Pull Requests section
- Github repo settings > branches > main rule
...