-
Notifications
You must be signed in to change notification settings - Fork 32
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]> * migrate CI to github action Signed-off-by: Woojoong Kim <[email protected]> * disable TestWriter test Signed-off-by: Woojoong Kim <[email protected]> --------- Signed-off-by: Woojoong Kim <[email protected]>
- Loading branch information
1 parent
7d22b13
commit 7d0c680
Showing
10 changed files
with
367 additions
and
155 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,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 was deleted.
Oops, something went wrong.
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_TOPO_VERSION=${{ env.DOCKER_TAG }} make docker-build | ||
ONOS_TOPO_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_TOPO_VERSION=${{ env.DOCKER_TAG }} make docker-build | ||
ONOS_TOPO_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 |
---|---|---|
|
@@ -13,3 +13,4 @@ coverage.txt | |
*-output.out | ||
build/build-tools | ||
.idea | ||
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,69 +1,66 @@ | ||
# SPDX-FileCopyrightText: 2022-present Intel Corporation | ||
# SPDX-FileCopyrightText: 2019-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 | ||
|
||
.PHONY: build | ||
|
||
ONOS_TOPO_VERSION := latest | ||
ONOS_TOPO_VERSION ?= latest | ||
PLATFORM ?= --platform linux/x86_64 | ||
|
||
GOLANG_CI_VERSION := v1.52.2 | ||
|
||
all: build docker-build | ||
|
||
build: # @HELP build the Go binaries and run all validations (default) | ||
build: | ||
CGO_ENABLED=1 go build -o build/_output/onos-topo ./cmd/onos-topo | ||
go build -o build/_output/topo-generator ./cmd/topo-generator | ||
go build -o build/_output/topo-visualizer ./cmd/topo-visualizer | ||
|
||
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 | ||
|
||
mod-update: # @HELP Download the dependencies to the vendor folder | ||
go mod tidy | ||
go mod vendor | ||
mod-lint: mod-update # @HELP ensure that the required dependencies are in place | ||
# dependencies are vendored, but not committed, go.sum is the only thing we need to check | ||
bash -c "diff -u <(echo -n) <(git diff go.sum)" | ||
|
||
test: # @HELP run the unit tests and source code validation producing a golang style report | ||
test: mod-lint build linters license | ||
test: build lint license | ||
go test -race github.com/onosproject/onos-topo/... | ||
|
||
jenkins-test: # @HELP run the unit tests and source code validation producing a junit style report for Jenkins | ||
jenkins-test: mod-lint build linters license | ||
TEST_PACKAGES=github.com/onosproject/onos-topo/pkg/... ./build/build-tools/build/jenkins/make-unit | ||
|
||
helmit-topo: integration-test-namespace # @HELP run helmit gnmi tests locally | ||
make helmit-topo -C test | ||
|
||
integration-tests: helmit-topo | ||
|
||
onos-topo-docker: # @HELP build onos-topo base Docker image | ||
docker-build-onos-topo: # @HELP build onos-topo base Docker image | ||
@go mod vendor | ||
docker build ${PLATFORM} . -f build/onos-topo/Dockerfile \ | ||
-t onosproject/onos-topo:${ONOS_TOPO_VERSION} | ||
@rm -rf vendor | ||
|
||
images: # @HELP build all Docker images | ||
images: build onos-topo-docker | ||
docker-build: # @HELP build all Docker images | ||
docker-build: build docker-build-onos-topo | ||
|
||
docker-push-onos-topo: # @HELP push onos-topo Docker image | ||
docker push onosproject/onos-topo:${ONOS_TOPO_VERSION} | ||
|
||
kind: # @HELP build Docker images and add them to the currently configured kind cluster | ||
kind: images | ||
@if [ "`kind get clusters`" = '' ]; then echo "no kind cluster found" && exit 1; fi | ||
kind load docker-image onosproject/onos-topo:${ONOS_TOPO_VERSION} | ||
docker-push: # @HELP push docker images | ||
docker-push: docker-push-onos-pci | ||
|
||
all: build images | ||
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 | ||
|
||
publish: # @HELP publish version on github and dockerhub | ||
./build/build-tools/publish-version ${VERSION} onosproject/onos-topo | ||
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 | ||
|
||
jenkins-publish: jenkins-tools # @HELP Jenkins calls this to publish artifacts | ||
./build/bin/push-images | ||
./build/build-tools/release-merge-commit | ||
./build/build-tools/build/docs/push-docs | ||
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/onos-topo/onos-topo ./cmd/dummy/dummy | ||
|
||
help: | ||
@grep -E '^.*: *# *@HELP' $(MAKEFILE_LIST) \ | ||
| sort \ | ||
| awk ' \ | ||
BEGIN {FS = ": *# *@HELP"}; \ | ||
{printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}; \ | ||
' |
Oops, something went wrong.