-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* migrate CI to github action Signed-off-by: Woojoong Kim <[email protected]> * fix linters --------- Signed-off-by: Woojoong Kim <[email protected]>
- Loading branch information
1 parent
7aea789
commit b95158e
Showing
14 changed files
with
376 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright 2024 Intel Corporation | ||
|
||
version: 2 | ||
updates: | ||
|
||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" | ||
|
||
- package-ecosystem: "docker" | ||
directory: "build/" | ||
schedule: | ||
interval: "weekly" | ||
|
||
- package-ecosystem: "gomod" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright 2024 Intel Corporation | ||
|
||
name: Build and test workflow | ||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
push: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: 'go.mod' | ||
- name: build | ||
run: make build | ||
test: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: 'go.mod' | ||
- name: Unit tests | ||
run: make test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright 2024 Intel Corporation | ||
|
||
name: Code scan workflow | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
push: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
version-check: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: check version | ||
run: make check-version | ||
lint: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: 'go.mod' | ||
- name: golang-lint | ||
run: make lint | ||
license: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: check license | ||
run: make license | ||
fossa-check: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: FOSSA scan | ||
uses: fossa-contrib/fossa-action@v3 | ||
with: | ||
fossa-api-key: 6d304c09a3ec097ba4517724e4a4d17d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright 2024 Intel Corporation | ||
# Copyright 2024 Kyunghee University | ||
name: Publish image and tag/release code | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
version-check: | ||
if: (github.repository_owner == 'onosproject') | ||
runs-on: ubuntu-latest | ||
outputs: | ||
valid_version: ${{ steps.version-check-step.outputs.valid_version }} | ||
dev_version: ${{ steps.dev-version-check-step.outputs.dev_version }} | ||
target_version: ${{ steps.get-target-version-step.outputs.target_version }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: check version | ||
id: version-check-step | ||
run: | | ||
make check-version; if [[ $? == 0 ]]; then echo "valid_version=true" >> $GITHUB_OUTPUT; else echo "valid_version=false" >> $GITHUB_OUTPUT; fi | ||
cat $GITHUB_OUTPUT | ||
- name: check dev version | ||
id: dev-version-check-step | ||
run: | | ||
f_dev=$(./build/bin/version_check.sh is_dev) | ||
if [[ $f_dev == "true" ]]; then echo "dev_version=true" >> $GITHUB_OUTPUT; else echo "dev_version=false" >> $GITHUB_OUTPUT; fi | ||
cat $GITHUB_OUTPUT | ||
- name: get target version | ||
id: get-target-version-step | ||
run: | | ||
echo "target_version=$(cat VERSION)" >> $GITHUB_OUTPUT | ||
cat $GITHUB_OUTPUT | ||
tag_versions: | ||
runs-on: ubuntu-latest | ||
needs: version-check | ||
if: (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true') && (needs.version-check.outputs.dev_version == 'false') | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: create release using REST API | ||
run: | | ||
curl -L \ | ||
-X POST \ | ||
-H "Accept: application/vnd.github+json" \ | ||
-H "Authorization: Bearer ${{ secrets.GH_ONOS_PAT }}" \ | ||
-H "X-GitHub-Api-Version: 2022-11-28" \ | ||
https://api.github.com/repos/${{ github.repository }}/releases \ | ||
-d '{ | ||
"tag_name": "v${{ needs.version-check.outputs.target_version }}", | ||
"target_commitish": "${{ github.event.repository.default_branch }}", | ||
"name": "v${{ needs.version-check.outputs.target_version }}", | ||
"draft": false, | ||
"prerelease": false, | ||
"generate_release_notes": true | ||
}' | ||
publish-images: | ||
runs-on: ubuntu-latest | ||
needs: version-check | ||
if: (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true') | ||
env: | ||
REGISTRY: docker.io | ||
DOCKER_REPOSITORY: onosproject/ | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: 'go.mod' | ||
- uses: docker/[email protected] | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | ||
- name: Build and push Docker image with tag latest | ||
env: | ||
DOCKER_TAG: latest | ||
run: | | ||
ONOS_OPERATOR_VERSION=${{ env.DOCKER_TAG }} make docker-build | ||
ONOS_OPERATOR_VERSION=${{ env.DOCKER_TAG }} make docker-push | ||
- name: Build and push Docker image with tag | ||
if: needs.version-check.outputs.dev_version == 'false' | ||
env: | ||
DOCKER_TAG: v${{ needs.version-check.outputs.target_version }} | ||
run: | | ||
ONOS_OPERATOR_VERSION=${{ env.DOCKER_TAG }} make docker-build | ||
ONOS_OPERATOR_VERSION=${{ env.DOCKER_TAG }} make docker-push | ||
bump-up-version: | ||
runs-on: ubuntu-latest | ||
needs: version-check | ||
if: (github.repository_owner == 'onosproject') && (needs.version-check.outputs.valid_version == 'true') && (needs.version-check.outputs.dev_version == 'false') | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: increment version | ||
run: | | ||
IFS='.' read -r major minor patch <<< ${{ needs.version-check.outputs.target_version }} | ||
patch_update=$((patch+1)) | ||
NEW_VERSION="$major.$minor.$patch_update-dev" | ||
echo $NEW_VERSION > VERSION | ||
echo "Updated version: $NEW_VERSION" | ||
- name: Create Pull Request | ||
uses: peter-evans/create-pull-request@v6 | ||
with: | ||
token: ${{ secrets.GH_ONOS_PAT }} | ||
commit-message: Update version | ||
committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | ||
author: ${{ github.actor }} <${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com> | ||
signoff: true | ||
branch: version-update | ||
delete-branch: true | ||
title: Update version | ||
body: | | ||
Update VERSION file | ||
add-paths: | | ||
VERSION |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,3 +30,4 @@ _output | |
*-output.out | ||
|
||
build/build-tools | ||
venv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
# SPDX-FileCopyrightText: 2022 2020-present Open Networking Foundation <[email protected]> | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright 2019 Open Networking Foundation | ||
# Copyright 2024 Intel Corporation | ||
|
||
export CGO_ENABLED=1 | ||
export GO111MODULE=on | ||
|
@@ -10,55 +10,67 @@ export GO111MODULE=on | |
ONOS_OPERATOR_VERSION ?= latest | ||
KIND_CLUSTER_NAME ?= kind | ||
|
||
build: # @HELP build the Go binaries and run all validations (default) | ||
build: | ||
go build -o build/_output/admission-init ./cmd/admission-init | ||
go build -o build/_output/topo-operator ./cmd/topo-operator | ||
go build -o build/_output/app-operator ./cmd/app-operator | ||
GOLANG_CI_VERSION := v1.52.2 | ||
|
||
build-tools:=$(shell if [ ! -d "./build/build-tools" ]; then cd build && git clone https://github.com/onosproject/build-tools.git; fi) | ||
include ./build/build-tools/make/onf-common.mk | ||
all: build docker-build | ||
|
||
version_check: # @HELP verify that release versions are correct | ||
./build/bin/check-versions | ||
build: # @HELP build the Go binaries and run all validations (default) | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/_output/admission-init ./cmd/admission-init | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/_output/topo-operator ./cmd/topo-operator | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/_output/app-operator ./cmd/app-operator | ||
|
||
test: # @HELP run the unit tests and source code validation | ||
test: build deps license linters version_check | ||
test: build lint license | ||
go test github.com/onosproject/onos-operator/pkg/... | ||
go test github.com/onosproject/onos-operator/cmd/... | ||
|
||
jenkins-test: # @HELP run the unit tests and source code validation producing a junit style report for Jenkins | ||
jenkins-test: deps license linters version_check | ||
TEST_PACKAGES=github.com/onosproject/onos-operator/pkg/... ./build/build-tools/build/jenkins/make-unit | ||
|
||
images: # @HELP build Docker images | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/admission-init/_output/bin/admission-init ./cmd/admission-init | ||
docker-build-admission-init: # @HELP build admission-init Docker image | ||
docker build . -f build/admission-init/Dockerfile -t onosproject/config-operator-init:${ONOS_OPERATOR_VERSION} | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/topo-operator/_output/bin/topo-operator ./cmd/topo-operator | ||
docker build . -f build/topo-operator/Dockerfile -t onosproject/topo-operator:${ONOS_OPERATOR_VERSION} | ||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/app-operator/_output/bin/app-operator ./cmd/app-operator | ||
docker build . -f build/app-operator/Dockerfile -t onosproject/app-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
kind: # @HELP build Docker images and add them to the currently configured kind cluster | ||
kind: images | ||
@if [ "`kind get clusters | grep ${KIND_CLUSTER_NAME}`" = '' ]; then echo "no kind cluster found" && exit 1; fi | ||
kind load docker-image --name ${KIND_CLUSTER_NAME} onosproject/config-operator-init:${ONOS_OPERATOR_VERSION} | ||
kind load docker-image --name ${KIND_CLUSTER_NAME} onosproject/topo-operator:${ONOS_OPERATOR_VERSION} | ||
kind load docker-image --name ${KIND_CLUSTER_NAME} onosproject/app-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
all: build images | ||
docker-build-topo-operator: # @HELP build topo-operator Docker image | ||
docker build . -f build/topo-operator/Dockerfile -t onosproject/topo-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
publish: # @HELP publish version on github and dockerhub | ||
./build/build-tools/publish-version ${VERSION} onosproject/config-operator-init onosproject/topo-operator onosproject/app-operator | ||
docker-build-app-operator: # @HELP build app-operator Docker image | ||
docker build . -f build/app-operator/Dockerfile -t onosproject/app-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
jenkins-publish: # @HELP Jenkins calls this to publish artifacts | ||
./build/bin/push-images | ||
./build/build-tools/release-merge-commit | ||
docker-build: # @HELP build all Docker images | ||
docker-build: build docker-build-admission-init docker-build-topo-operator docker-build-app-operator | ||
|
||
push: # @HELP push latest versions of the images to docker hub | ||
docker-push-admission-init: # @HELP push admission-init Docker image | ||
docker push onosproject/config-operator-init:${ONOS_OPERATOR_VERSION} | ||
|
||
docker-push-topo-operator: # @HELP push topo-operator Docker image | ||
docker push onosproject/topo-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
docker-push-app-operator: # @HELP push app-operator Docker image | ||
docker push onosproject/app-operator:${ONOS_OPERATOR_VERSION} | ||
|
||
clean:: # @HELP remove all the build artifacts | ||
|
||
docker-push: # @HELP push docker images | ||
docker-push: docker-push-admission-init docker-push-topo-operator docker-push-app-operator | ||
|
||
lint: # @HELP examines Go source code and reports coding problems | ||
golangci-lint --version | grep $(GOLANG_CI_VERSION) || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b `go env GOPATH`/bin $(GOLANG_CI_VERSION) | ||
golangci-lint run --timeout 15m | ||
|
||
license: # @HELP run license checks | ||
rm -rf venv | ||
python3 -m venv venv | ||
. ./venv/bin/activate;\ | ||
python3 -m pip install --upgrade pip;\ | ||
python3 -m pip install reuse;\ | ||
reuse lint | ||
|
||
check-version: # @HELP check version is duplicated | ||
./build/bin/version_check.sh all | ||
|
||
clean: # @HELP remove all the build artifacts | ||
rm -rf ./build/_output ./vendor ./cmd/dummy/dummy build/admission-init/_output build/topo-operator/_output build/app-operator/_output | ||
|
||
help: | ||
@grep -E '^.*: *# *@HELP' $(MAKEFILE_LIST) \ | ||
| sort \ | ||
| awk ' \ | ||
BEGIN {FS = ": *# *@HELP"}; \ | ||
{printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}; \ | ||
' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.