mirror of
https://github.com/goharbor/harbor.git
synced 2024-10-31 23:59:32 +01:00
Add build package workflow in git action of Harbor V1.10
Signed-off-by: danfengliu <danfengl@vmware.com>
This commit is contained in:
parent
279c8d3565
commit
a89cb0a550
119
.github/workflows/build-package.yml
vendored
Normal file
119
.github/workflows/build-package.yml
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
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.15.6
|
||||
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.1.0
|
||||
- uses: jitterbit/get-changed-files@v1
|
||||
id: changed-files
|
||||
with:
|
||||
format: space-delimited
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: src/github.com/goharbor/harbor
|
||||
- name: Build Base Image
|
||||
if: contains(steps.changed-files.outputs.modified, 'Dockerfile.base') || contains(steps.changed-files.outputs.modified, 'VERSION')
|
||||
run: |
|
||||
set -x
|
||||
base_image_tag=$(cat ./VERSION)
|
||||
cd src/github.com/goharbor/harbor
|
||||
sudo make build_base_docker -e BASEIMAGETAG=$base_image_tag -e REGISTRYUSER="${{ secrets.DOCKER_HUB_USERNAME }}" -e REGISTRYPASSWORD="${{ secrets.DOCKER_HUB_PASSWORD }}" -e PUSHBASEIMAGE=yes
|
||||
- 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
|
||||
harbor_target_bucket=$harbor_builds_bucket
|
||||
else
|
||||
Harbor_Assets_Version=$target_release_version
|
||||
harbor_target_bucket=$harbor_releases_bucket/$target_branch
|
||||
fi
|
||||
|
||||
if [[ $target_branch == "release-"* ]]; then
|
||||
Harbor_Build_Base_Tag=$target_release_version
|
||||
else
|
||||
Harbor_Build_Base_Tag=dev
|
||||
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 MIGRATORFLAG=true CHARTFLAG=true HTTPPROXY=
|
||||
sudo make package_online GOBUILDTAGS="include_oss include_gcs" VERSIONTAG=${Harbor_Assets_Version} PKGVERSIONTAG=${Harbor_Package_Version} NOTARYFLAG=true CLAIRFLAG=true MIGRATORFLAG=false CHARTFLAG=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 "BUILD_BUNDLE=$harbor_offline_build_bundle" >> $GITHUB_ENV
|
||||
|
||||
publishImage $target_branch $Harbor_Assets_Version "${{ secrets.DOCKER_HUB_USERNAME }}" "${{ secrets.DOCKER_HUB_PASSWORD }}"
|
||||
|
||||
- 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()
|
28
tests/ci/build_util.sh
Normal file
28
tests/ci/build_util.sh
Normal file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
set -x
|
||||
|
||||
set -e
|
||||
|
||||
function uploader {
|
||||
gsutil cp $1 gs://$2/$1
|
||||
gsutil -D setacl public-read gs://$2/$1 &> /dev/null
|
||||
}
|
||||
|
||||
function publishImage {
|
||||
echo "Publishing images to Docker Hub..."
|
||||
echo "The images on the host:"
|
||||
# for master, will use 'dev' as the tag name
|
||||
# for release-*, will use 'release-*-dev' as the tag name, like release-v1.8.0-dev
|
||||
if [[ $1 == "master" ]]; then
|
||||
image_tag=dev
|
||||
fi
|
||||
if [[ $1 == "release-"* ]]; then
|
||||
image_tag=$2-dev
|
||||
fi
|
||||
# rename the images with tag "dev" and push to Docker Hub
|
||||
docker images
|
||||
docker login -u $3 -p $4
|
||||
docker images | grep goharbor | grep -v "\-base" | sed -n "s|\(goharbor/[-._a-z0-9]*\)\s*\(.*$2\).*|docker tag \1:\2 \1:$image_tag;docker push \1:$image_tag|p" | bash
|
||||
echo "Images are published successfully"
|
||||
docker images
|
||||
}
|
Loading…
Reference in New Issue
Block a user