Design
Reorganize Makefile for each repo
Previously, SD-RAN Makefile imported the Makefile in onos/build-tools.
Now, we are trying to decouple it from the tool repo.
- Essential Makefile targets in repos which should tag code, publish and push Docker images
build
- build the binaries and run all validationtest
- run the unit tests and source code validationdocker-build
- build all Docker images in the repodocker-push
- push all Docker images to the registrylint
- examine Go source code and reports coding problemslicense
- run license checkcheck-version
- check version if it is valid and duplicatedclean
- remove all build artifactshelp
- show help message
- Essential Makefile targets in repos which should tag code only
build
- build the binaries and run all validationtest
- run the unit tests and source code validationlint
- examine Go source code and reports coding problemslicense
- run license checkcheck-version
- check version if it is valid and duplicatedclean
- remove all build artifactshelp
- show help message
- Essential Makefile targets in repos which should tag code, publish and push Helm charts
build
- build the binaries and run all validationtest
- run the unit tests and source code validationhelm-package
- package all Helm chartshelm-push
- push all Helm charts to the registrylint
- examine Go source code and reports coding problemslicense
- run license checkcheck-version
- check version if it is valid and duplicatedclean
- remove all build artifactshelp
- show help message
Create a PR
- Run two 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 1: Code scanning
Merge a PR
- 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
Target repositories
Repository | Code Scan | Test and Build | Release and Publish | Done? |
---|---|---|---|---|