From 5edbd0031832c0c9c30b0269a8de72c60d9d3be6 Mon Sep 17 00:00:00 2001 From: Yan Date: Wed, 21 Mar 2018 13:03:49 +0800 Subject: [PATCH] Revise harbor build version (#4445) --- .travis.yml | 2 +- Makefile | 9 +++-- VERSION | 2 +- docs/compile_guide.md | 10 +++-- make/dev/ui/Dockerfile | 2 +- make/photon/ui/Dockerfile | 4 +- src/ui/api/systeminfo.go | 2 +- tests/integration.sh | 67 +++++++++++++++++++++---------- tests/resources/Harbor-Util.robot | 4 +- 9 files changed, 66 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index 336c92a06..d8e45ede9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -77,7 +77,7 @@ script: - sudo mkdir -p /etc/ui/ca/ - sudo mv ./tests/ca.crt /etc/ui/ca/ - sudo mkdir -p /harbor - - sudo mv ./VERSION /harbor/VERSION + - sudo mv ./VERSION /harbor/UIVERSION - sudo service mysql stop - sudo make run_clarity_ut CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.3.0 - cat ./src/ui_ng/lib/npm-ut-test-results diff --git a/Makefile b/Makefile index edca0d685..754ba16f2 100644 --- a/Makefile +++ b/Makefile @@ -85,9 +85,12 @@ BUILDBIN=false MIGRATORFLAG=false # version prepare +# for docker image tag VERSIONTAG=dev +# for harbor package name +PKGVERSIONTAG=dev VERSIONFILEPATH=$(CURDIR) -VERSIONFILENAME=VERSION +VERSIONFILENAME=UIVERSION #versions REGISTRYVERSION=v2.6.2 @@ -205,13 +208,13 @@ DOCKERSAVE_PARA=$(DOCKERIMAGENAME_ADMINSERVER):$(VERSIONTAG) \ $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) \ vmware/nginx-photon:$(NGINXVERSION) vmware/registry-photon:$(REGISTRYVERSION)-$(VERSIONTAG) \ vmware/photon:$(PHOTONVERSION) -PACKAGE_OFFLINE_PARA=-zcvf harbor-offline-installer-$(VERSIONTAG).tgz \ +PACKAGE_OFFLINE_PARA=-zcvf harbor-offline-installer-$(PKGVERSIONTAG).tgz \ $(HARBORPKG)/common/templates $(HARBORPKG)/$(DOCKERIMGFILE).$(VERSIONTAG).tar.gz \ $(HARBORPKG)/prepare $(HARBORPKG)/NOTICE \ $(HARBORPKG)/LICENSE $(HARBORPKG)/install.sh \ $(HARBORPKG)/harbor.cfg $(HARBORPKG)/$(DOCKERCOMPOSEFILENAME) \ $(HARBORPKG)/ha -PACKAGE_ONLINE_PARA=-zcvf harbor-online-installer-$(VERSIONTAG).tgz \ +PACKAGE_ONLINE_PARA=-zcvf harbor-online-installer-$(PKGVERSIONTAG).tgz \ $(HARBORPKG)/common/templates $(HARBORPKG)/prepare \ $(HARBORPKG)/LICENSE $(HARBORPKG)/NOTICE \ $(HARBORPKG)/install.sh $(HARBORPKG)/$(DOCKERCOMPOSEFILENAME) \ diff --git a/VERSION b/VERSION index 90012116c..76864c1c2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -dev \ No newline at end of file +v1.5.0 \ No newline at end of file diff --git a/docs/compile_guide.md b/docs/compile_guide.md index f5ab6ffba..6d6090aad 100644 --- a/docs/compile_guide.md +++ b/docs/compile_guide.md @@ -44,25 +44,25 @@ You can compile the code by one of the three approaches: * Get offcial Golang image from docker hub: ```sh - $ docker pull golang:1.7.3 + $ docker pull golang:1.9.2 ``` * Build, install and bring up Harbor without Notary: ```sh - $ make install GOBUILDIMAGE=golang:1.7.3 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.2.7 + $ make install GOBUILDIMAGE=golang:1.9.2 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.3.0 ``` * Build, install and bring up Harbor with Notary: ```sh - $ make install GOBUILDIMAGE=golang:1.7.3 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.2.7 NOTARYFLAG=true + $ make install GOBUILDIMAGE=golang:1.9.2 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.3.0 NOTARYFLAG=true ``` * Build, install and bring up Harbor with Clair: ```sh - $ make install GOBUILDIMAGE=golang:1.7.3 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.2.7 CLAIRFLAG=true + $ make install GOBUILDIMAGE=golang:1.9.2 COMPILETAG=compile_golangimage CLARITYIMAGE=vmware/harbor-clarity-ui-builder:1.3.0 CLAIRFLAG=true ``` #### II. Compile code with your own Golang environment, then build Harbor @@ -118,6 +118,8 @@ REGISTRYSERVER | Remote registry server IP address REGISTRYUSER | Remote registry server user name REGISTRYPASSWORD | Remote registry server user password REGISTRYPROJECTNAME| Project name on remote registry server +VERSIONTAG | Harbor images tag, default: dev +PKGVERSIONTAG | Harbor online and offline version tag, default:dev * Predefined targets: diff --git a/make/dev/ui/Dockerfile b/make/dev/ui/Dockerfile index 046b047ea..ac4978ef1 100644 --- a/make/dev/ui/Dockerfile +++ b/make/dev/ui/Dockerfile @@ -12,7 +12,7 @@ COPY src/ui/static /go/bin/static COPY src/favicon.ico /go/bin/favicon.ico RUN mkdir /go/bin/harbor/ -COPY VERSION /go/bin/harbor/VERSION +COPY VERSION /go/bin/harbor/UIVERSION RUN chmod u+x /go/bin/harbor_ui diff --git a/make/photon/ui/Dockerfile b/make/photon/ui/Dockerfile index 12c7acd78..7300a1e15 100644 --- a/make/photon/ui/Dockerfile +++ b/make/photon/ui/Dockerfile @@ -1,6 +1,6 @@ FROM vmware/photon:1.0 -RUN tdnf distro-sync -y || echo \ +RUN tdnf distro-sync -y \ && tdnf erase vim -y \ && tdnf install sudo -y >> /dev/null\ && tdnf clean all \ @@ -8,7 +8,7 @@ RUN tdnf distro-sync -y || echo \ && mkdir /harbor/ HEALTHCHECK CMD curl -s -o /dev/null -w "%{http_code}" 127.0.0.1:8080/api/systeminfo|grep 200 -COPY ./make/dev/ui/harbor_ui ./src/favicon.ico ./make/photon/ui/start.sh ./VERSION /harbor/ +COPY ./make/dev/ui/harbor_ui ./src/favicon.ico ./make/photon/ui/start.sh ./UIVERSION /harbor/ COPY ./src/ui/views /harbor/views COPY ./src/ui/static /harbor/static diff --git a/src/ui/api/systeminfo.go b/src/ui/api/systeminfo.go index 4974ffdbd..699d2fef6 100644 --- a/src/ui/api/systeminfo.go +++ b/src/ui/api/systeminfo.go @@ -37,7 +37,7 @@ type SystemInfoAPI struct { } const defaultRootCert = "/etc/ui/ca/ca.crt" -const harborVersionFile = "/harbor/VERSION" +const harborVersionFile = "/harbor/UIVERSION" //SystemInfo models for system info. type SystemInfo struct { diff --git a/tests/integration.sh b/tests/integration.sh index 685dd5ebc..7c63e71b7 100755 --- a/tests/integration.sh +++ b/tests/integration.sh @@ -13,11 +13,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # - set -x gsutil version -l set +x +## -------------------------------------------- Pre-condition -------------------------------------------- +if [[ $DRONE_REPO != "vmware/harbor" ]]; then + echo "Only run tests again Harbor Repo." + exit 1 +fi +# It won't package an new harbor build against tag, just pick up a build which passed CI and push to release. +if [[ $DRONE_BUILD_EVENT == "tag" ]]; then + echo "We do nothing against 'tag'." + exit 0 +fi + ## --------------------------------------------- Init Env ------------------------------------------------- dpkg -l > package.list # Start Xvfb for Chrome headlesss @@ -25,16 +35,7 @@ Xvfb -ac :99 -screen 0 1280x1024x16 & export DISPLAY=:99 export DRONE_SERVER=$DRONE_SERVER export DRONE_TOKEN=$DRONE_TOKEN -buildinfo=$(drone build info vmware/harbor $DRONE_BUILD_NUMBER) -echo $buildinfo -git_commit=$(git rev-parse --short=8 HEAD) -if [[ $DRONE_BUILD_EVENT == "tag" ]]; then - build_number=$(git describe --abbrev=0 --tags) -else - build_number=$DRONE_BUILD_NUMBER-$git_commit -fi -echo build_number -export HARBOR_BUILD_NUMBER=$build_number + upload_build=false nightly_run=false upload_latest_build=false @@ -68,6 +69,35 @@ echo "default_project_id = $GS_PROJECT_ID" >> $botofile container_ip=`ip addr s eth0 |grep "inet "|awk '{print $2}' |awk -F "/" '{print $1}'` echo $container_ip +## --------------------------------------------- Init Version ----------------------------------------------- +buildinfo=$(drone build info vmware/harbor $DRONE_BUILD_NUMBER) +echo $buildinfo +git_commit=$(git rev-parse --short=8 HEAD) + +# 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) +# the harbor ui version will be shown in the about dialog. +Harbor_UI_Version=$target_release_version-$git_commit +# the harbor package version is for both online and offline installer. +Harbor_Package_Version=$target_release_version-$DRONE_BUILD_NUMBER +# the harbor assets version is for tag of harbor images: +# 1, On master branch, it's same as package version. +# 2, On release branch(others), it would set to the target realese version so that we can rename the latest passed CI build to publish. +if [[ $DRONE_REPO_BRANCH == "master" ]]; then + Harbor_Assets_Version=$target_release_version-$DRONE_BUILD_NUMBER +else + Harbor_Assets_Version=$target_release_version +fi +export Harbor_Assets_Version=$Harbor_Assets_Version +# the env is for online and offline package. +export Harbor_Package_Version=$Harbor_Package_Version + +echo "--------------------------------------------------" +echo "Harbor UI version: $Harbor_UI_Version" +echo "Harbor Package version: $Harbor_Package_Version" +echo "Harbor Assets version: $Harbor_Assets_Version" +echo "--------------------------------------------------" + # GS util function uploader { gsutil cp $1 gs://$2/$1 @@ -84,29 +114,24 @@ function package_offline_installer { } ## --------------------------------------------- Run Test Case --------------------------------------------- -if [[ $DRONE_REPO != "vmware/harbor" ]]; then - echo "Only run tests again Harbor Repo." - exit 1 -fi - echo "--------------------------------------------------" echo "Running CI for $DRONE_BUILD_EVENT on $DRONE_REPO_BRANCH" echo "--------------------------------------------------" ## -# Any merge code or tag on branch master, release-* or pks-* will trigger package offline installer. +# Any merge code(PUSH) on branch master, release-* will trigger package offline installer. # # Put code here is because that it needs clean code to build installer. ## -if [[ $DRONE_REPO_BRANCH == "master" || $DRONE_REPO_BRANCH == *"refs/tags"* || $DRONE_REPO_BRANCH == "release-"* || $DRONE_REPO_BRANCH == "pks-"* ]]; then - if [[ $DRONE_BUILD_EVENT == "push" || $DRONE_BUILD_EVENT == "tag" ]]; then +if [[ $DRONE_REPO_BRANCH == "master" || $DRONE_REPO_BRANCH == *"refs/tags"* || $DRONE_REPO_BRANCH == "release-"* ]]; then + if [[ $DRONE_BUILD_EVENT == "push" ]]; then package_offline_installer upload_latest_build=true fi fi ## -# Any Event(PR or merge code) on any branch will trigger test run. +# Any Event(pull_request or push) on any branch will trigger test run. ## if (echo $buildinfo | grep -q "\[Specific CI="); then buildtype=$(echo $buildinfo | grep "\[Specific CI=") @@ -171,7 +196,7 @@ if [ $upload_latest_build == true ] && [ $upload_bundle_success == true ] && [ $ fi ## ------------------------------------- Build & Publish NPM Package for VIC ------------------------------------ -if [ $publish_npm == true ] && [ $rc -eq 0 ] && [[ $DRONE_BUILD_EVENT == "push" || $DRONE_BUILD_EVENT == "tag" ]]; then +if [ $publish_npm == true ] && [ $rc -eq 0 ] && [[ $DRONE_BUILD_EVENT == "push" ]]; then echo "build & publish package harbor-ui-vic to npm repo." ./tools/ui_lib/build_ui_lib_4_vic.sh fi diff --git a/tests/resources/Harbor-Util.robot b/tests/resources/Harbor-Util.robot index bc7eebed7..cd7a9f932 100644 --- a/tests/resources/Harbor-Util.robot +++ b/tests/resources/Harbor-Util.robot @@ -57,7 +57,7 @@ Package Harbor Offline [Arguments] ${golang_image}=golang:${GOLANG_VERSION} ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=true ${with_clair}=true ${with_migrator}=true Log To Console \nStart Docker Daemon Start Docker Daemon Locally - ${rc} ${output}= Run And Return Rc And Output make package_offline VERSIONTAG=%{HARBOR_BUILD_NUMBER} GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= + ${rc} ${output}= Run And Return Rc And Output make package_offline VERSIONTAG=%{Harbor_Assets_Version} PKGVERSIONTAG=%{Harbor_Package_Version} GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= Log ${rc} Log ${output} Should Be Equal As Integers ${rc} 0 @@ -66,7 +66,7 @@ Package Harbor Online [Arguments] ${golang_image}=golang:${GOLANG_VERSION} ${clarity_image}=vmware/harbor-clarity-ui-builder:${CLAIR_BUILDER} ${with_notary}=true ${with_clair}=true ${with_migrator}=true Log To Console \nStart Docker Daemon Start Docker Daemon Locally - ${rc} ${output}= Run And Return Rc And Output make package_online VERSIONTAG=%{HARBOR_BUILD_NUMBER} GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= + ${rc} ${output}= Run And Return Rc And Output make package_online VERSIONTAG=%{Harbor_Assets_Version} PKGVERSIONTAG=%{Harbor_Package_Version} GOBUILDIMAGE=${golang_image} COMPILETAG=compile_golangimage CLARITYIMAGE=${clarity_image} NOTARYFLAG=${with_notary} CLAIRFLAG=${with_clair} MIGRATORFLAG=${with_migrator} HTTPPROXY= Log ${rc} Log ${output} Should Be Equal As Integers ${rc} 0