Skip to content

Commit

Permalink
migrate CI to github action (#275)
Browse files Browse the repository at this point in the history
Signed-off-by: Woojoong Kim <woojoong.kim@intel.com>
  • Loading branch information
woojoong88 authored Jun 30, 2024
1 parent 0a89e68 commit a7a0e6b
Show file tree
Hide file tree
Showing 12 changed files with 315 additions and 94 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/build-test.yml
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
43 changes: 43 additions & 0 deletions .github/workflows/code-scan.yml
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
58 changes: 0 additions & 58 deletions .github/workflows/master.yml

This file was deleted.

98 changes: 98 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# 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
}'
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
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,4 @@
# build tools
build/build-tools
vendor


venv
2 changes: 1 addition & 1 deletion .reuse/dep5
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/

Files: VERSION *.so *.gnmi *.png *.gif *.jpg go.mod go.sum *.pb.go *_mock_test.go
Files: VERSION *.so *.gnmi *.png *.gif *.jpg go.mod go.sum *.pb.go *_mock_test.go docs/logging/api/logging.md
Copyright: 2021 Open Networking Foundation
License: Apache-2.0

50 changes: 26 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,43 +9,45 @@ export GO111MODULE=on

ONOS_PROTOC_VERSION := v0.6.9

build: # @HELP build the Go binaries (default)
build:
go build github.com/onosproject/onos-lib-go/pkg/...

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
GOLANG_CI_VERSION := v1.52.2

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)"
all: build

build: # @HELP build the Go binaries (default)
go build github.com/onosproject/onos-lib-go/pkg/...

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-lib-go/pkg/...

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-lib-go/pkg/... ./build/build-tools/build/jenkins/make-unit

protos: # @HELP compile the protobuf files (using protoc-go Docker)
docker run -it -v `pwd`:/go/src/github.com/onosproject/onos-lib-go \
-w /go/src/github.com/onosproject/onos-lib-go \
--entrypoint build/bin/compile-protos.sh \
onosproject/protoc-go:${ONOS_PROTOC_VERSION}

publish: # @HELP publish version on github and dockerhub
./build/build-tools/publish-version ${VERSION}
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

jenkins-publish: jenkins-tools # @HELP Jenkins calls this to publish artifacts
./build/build-tools/release-merge-commit
./build/build-tools/build/docs/push-docs
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

all: test
check-version: # @HELP check version is duplicated
./build/bin/version_check.sh all

clean:: # @HELP remove all the build artifacts
go clean -testcache github.com/onosproject/onos-lib-go/...
go clean github.com/onosproject/onos-lib-go/...

help:
@grep -E '^.*: *# *@HELP' $(MAKEFILE_LIST) \
| sort \
| awk ' \
BEGIN {FS = ": *# *@HELP"}; \
{printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}; \
'
20 changes: 16 additions & 4 deletions build/bin/compile-protos.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: Apache-2.0
Expand All @@ -9,16 +9,28 @@ protoc -I=$proto_imports --doc_out=docs/logging/api --doc_opt=markdown,logging.

protoc -I=$proto_imports --go_out=../../.. api/asn1/v1/asn1.proto
# Remove the license header copied over by protoc
sed -i "1,4d" api/asn1/v1/asn1/asn1.pb.go
cp api/asn1/v1/asn1/asn1.pb.go api/asn1/v1/asn1/asn1.pb.go_tmp
tail -n +5 api/asn1/v1/asn1/asn1.pb.go_tmp > api/asn1/v1/asn1/asn1.pb.go
rm -rf api/asn1/v1/asn1/asn1.pb.go_tmp
# old one for above: not working on Mac
#sed -i -e "1,4d" api/asn1/v1/asn1/asn1.pb.go

protoc -I=$proto_imports:api --go_out=. pkg/asn1/test/aper-test.proto
# Remove the license header copied over by protoc
sed -i "1,6d" pkg/asn1/test/aper-test.pb.go
cp pkg/asn1/test/aper-test.pb.go pkg/asn1/test/aper-test.pb.go_tmp
tail -n +5 pkg/asn1/test/aper-test.pb.go_tmp > pkg/asn1/test/aper-test.pb.go
rm -rf pkg/asn1/test/aper-test.pb.go_tmp
# old one for above: not working on Mac
#sed -i "1,6d" pkg/asn1/test/aper-test.pb.go

protoc-go-inject-tag -input=pkg/asn1/test/aper-test.pb.go

protoc -I=$proto_imports:api --go_out=. pkg/asn1/testsm/test_sm.proto
# Remove the license header copied over by protoc
sed -i "1,8d" pkg/asn1/testsm/test_sm.pb.go
cp pkg/asn1/testsm/test_sm.pb.go pkg/asn1/testsm/test_sm.pb.go_tmp
tail -n +5 pkg/asn1/testsm/test_sm.pb.go_tmp > pkg/asn1/testsm/test_sm.pb.go
rm -rf pkg/asn1/testsm/test_sm.pb.go_tmp
# old one for above: not working on Mac
#sed -i "1,8d" pkg/asn1/testsm/test_sm.pb.go

protoc-go-inject-tag -input=pkg/asn1/testsm/test_sm.pb.go
Loading

0 comments on commit a7a0e6b

Please sign in to comment.