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
Type | Repository | Code Scan | Test and Build | Release | Publish | Done? |
---|---|---|---|---|---|---|
xApp | onos-pci (link) | Y | Y | Y | Y (Docker image) | Y |
onos-kpimon | Y | Y | Y | Y (Docker image) | Y | |
onos-mho | Y | Y | Y | Y (Docker image) | Y | |
onos-mlb | Y | Y | Y | Y (Docker image) | Y | |
onos-rsm | Y | Y | Y | Y (Docker image) | Y | |
rimedo-ts | Y | Y | Y | Y (Docker image) | Y | |
RAN | openairinterface5g | |||||
ran-simulator | ||||||
scalable-ran-simulator | ||||||
Core | onos-e2t | Y | Y | Y | Y (Docker image) | Y |
onos-a1t | Y | Y | Y | Y (Docker image) | Y | |
onos-o1t | ||||||
onos-exporter | ||||||
onos-uenib | ||||||
onos-cli | ||||||
onos-config | ||||||
onos-topo | ||||||
Lib | onos-a1-dm | |||||
onos-api | ||||||
onos-e2-sm | ||||||
onos-lib-go | ||||||
onos-ric-sdk-go | ||||||
rrm-son-lib | ||||||
Chart | sdran-helm-charts | |||||
onos-helm-charts | ||||||
Tool | sdran-in-a-box | |||||
Misc | onos-operator | |||||
onos-proxy |