diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index 1a274ec5e..44103215d 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -58,7 +58,10 @@ jobs: run: | tar -zxf ${{ env.OFFLINE_PACKAGE_PATH }} docker load -i ./harbor/harbor.${{ env.BASE_TAG }}.tar.gz - source tools/release/release_utils.sh && publishImages ${{ env.CUR_TAG }} ${{ env.BASE_TAG }} ${{ secrets.DOCKER_HUB_USERNAME }} ${{ secrets.DOCKER_HUB_PASSWORD }} + images="$(docker images --format "{{.Repository}}" --filter=reference='goharbor/*:${{ env.BASE_TAG }}' | xargs)" + source tools/release/release_utils.sh + publishImages ${{ env.CUR_TAG }} ${{ env.BASE_TAG }} ${{ secrets.DOCKER_HUB_USERNAME }} ${{ secrets.DOCKER_HUB_PASSWORD }} $images + publishPackages ${{ env.CUR_TAG }} ${{ env.BASE_TAG }} ${{ github.actor }} ${{ secrets.GITHUB_TOKEN }} $images - name: Generate release notes run: | release_notes_path=$(pwd)/release-notes.txt diff --git a/tools/release/release_utils.sh b/tools/release/release_utils.sh index 50d7b5daf..d60e135d1 100644 --- a/tools/release/release_utils.sh +++ b/tools/release/release_utils.sh @@ -59,8 +59,8 @@ function publishImages { local baseTag=$2 local dockerHubUser=$3 local dockerHubPassword=$4 + local images=${@:5} docker login -u $dockerHubUser -p $dockerHubPassword - local images="$(docker images --format "{{.Repository}}" --filter=reference='goharbor/*:'$baseTag'')" for image in $images do echo "push image: $image" @@ -70,6 +70,22 @@ function publishImages { docker logout } +function publishPackages { + local curTag=$1 + local baseTag=$2 + local ghcrUser=$3 + local ghcrPassword=$4 + local images=${@:5} + docker login ghcr.io -u $ghcrUser -p $ghcrPassword + for image in $images + do + echo "push image: $image" + docker tag $image:$baseTag "ghcr.io/"$image:$curTag + retry 5 docker push "ghcr.io/"$image:$curTag + done + docker logout ghcr.io +} + function retry { local -r -i max="$1"; shift local -i n=1