From 12f4f73c8ae1dae7c2cfc7b2c72eb06c34ec91f1 Mon Sep 17 00:00:00 2001 From: danfengliu Date: Fri, 25 Sep 2020 07:18:45 +0000 Subject: [PATCH] Add harbor build in gith action workflow Signed-off-by: danfengliu --- .github/workflows/build-package.yml | 108 ++++++++++++++++++++++++++++ tests/ci/build_util.sh | 9 +++ 2 files changed, 117 insertions(+) create mode 100644 .github/workflows/build-package.yml create mode 100644 tests/ci/build_util.sh diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml new file mode 100644 index 000000000..2a021358f --- /dev/null +++ b/.github/workflows/build-package.yml @@ -0,0 +1,108 @@ +name: "Build Package Workflow" +env: + DOCKER_COMPOSE_VERSION: 1.23.0 + +on: + push: + branches: + - master + - release-* + tags: + - v* +jobs: + BUILD_PACKAGE: + env: + BUILD_PACKAGE: true + runs-on: + #- self-hosted + - ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master + with: + version: '285.0.0' + project_id: ${{ secrets.GCP_PROJECT_ID }} + service_account_email: ${{ secrets.GCP_SA_EMAIL }} + service_account_key: ${{ secrets.GCP_SA_KEY }} + export_default_credentials: true + - run: gcloud info + - name: Set up Go 1.14 + uses: actions/setup-go@v1 + with: + go-version: 1.14.7 + id: go + - name: setup Docker + uses: docker-practice/actions-setup-docker@0.0.1 + with: + docker_version: 18.09 + docker_channel: stable + - uses: actions/checkout@v2 + with: + path: src/github.com/goharbor/harbor + - name: Build Package + run: | + set -x + env + df -h + harbor_target_bucket="" + target_branch="$(echo ${GITHUB_REF#refs/heads/})" + harbor_offline_build_bundle="" + harbor_online_build_bundle="" + harbor_logs_bucket="harbor-ci-logs" + harbor_builds_bucket="harbor-builds" + harbor_releases_bucket="harbor-releases" + harbor_ci_pipeline_store_bucket="harbor-ci-pipeline-store/latest" + # the target release version is the version of next release(RC or GA). It needs to be updated on creating new release branch. + target_release_version=$(cat ./VERSION) + Harbor_Package_Version=$target_release_version-'build.'$GITHUB_RUN_NUMBER + + if [[ $target_branch == "master" ]]; then + Harbor_Assets_Version=$Harbor_Package_Version + else + Harbor_Assets_Version=$target_release_version + fi + + if [[ $target_branch == "release-"* ]]; then + Harbor_Build_Base_Tag=$target_release_version + else + Harbor_Build_Base_Tag=dev + fi + + if [[ $target_branch == "master" ]]; then + harbor_target_bucket=$harbor_builds_bucket + else + harbor_target_bucket=$harbor_releases_bucket/$target_branch + fi + + cd src/github.com/goharbor/harbor + sudo make package_offline GOBUILDTAGS="include_oss include_gcs" BASEIMAGETAG=${Harbor_Build_Base_Tag} VERSIONTAG=${Harbor_Assets_Version} PKGVERSIONTAG=${Harbor_Package_Version} NOTARYFLAG=true CLAIRFLAG=true CHARTFLAG=true TRIVYFLAG=true HTTPPROXY= + sudo make package_online GOBUILDTAGS="include_oss include_gcs" BASEIMAGETAG=${Harbor_Build_Base_Tag} VERSIONTAG=${Harbor_Assets_Version} PKGVERSIONTAG=${Harbor_Package_Version} NOTARYFLAG=true CLAIRFLAG=true CHARTFLAG=true TRIVYFLAG=true HTTPPROXY= + harbor_offline_build_bundle=$(basename harbor-offline-installer-*.tgz) + harbor_online_build_bundle=$(basename harbor-online-installer-*.tgz) + echo "Package name is: $harbor_offline_build_bundle" + echo "Package name is: $harbor_online_build_bundle" + + echo -en "${{ secrets.HARBOR_SIGN_KEY }}" | gpg --import + gpg -v -ab -u ${{ secrets.HARBOR_SIGN_KEY_ID }} $harbor_offline_build_bundle + gpg -v -ab -u ${{ secrets.HARBOR_SIGN_KEY_ID }} $harbor_online_build_bundle + + source tests/ci/build_util.sh + cp ${harbor_offline_build_bundle} harbor-offline-installer-latest.tgz + cp ${harbor_offline_build_bundle}.asc harbor-offline-installer-latest.tgz.asc + uploader ${harbor_offline_build_bundle} $harbor_target_bucket + uploader ${harbor_offline_build_bundle}.asc $harbor_target_bucket + uploader ${harbor_online_build_bundle} $harbor_target_bucket + uploader ${harbor_online_build_bundle}.asc $harbor_target_bucket + uploader harbor-offline-installer-latest.tgz $harbor_target_bucket + uploader harbor-offline-installer-latest.tgz.asc $harbor_target_bucket + echo "::set-env name=BUILD_BUNDLE::$harbor_offline_build_bundle" + - name: Slack Notification + uses: sonots/slack-notice-action@v3 + with: + status: ${{ job.status }} + title: Build Package - ${{ env.BUILD_BUNDLE }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} + if: always() + diff --git a/tests/ci/build_util.sh b/tests/ci/build_util.sh new file mode 100644 index 000000000..1eb3561ff --- /dev/null +++ b/tests/ci/build_util.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -x + +set -e + +function uploader { + gsutil cp $1 gs://$2/$1 + gsutil -D setacl public-read gs://$2/$1 &> /dev/null +} \ No newline at end of file