diff --git a/.github/workflows/go-release.yml b/.github/workflows/go-release.yml index 01cb87da0..7f7e540da 100644 --- a/.github/workflows/go-release.yml +++ b/.github/workflows/go-release.yml @@ -16,9 +16,29 @@ defaults: working-directory: go/src/open-cluster-management.io/registration jobs: + env: + name: prepare release env + runs-on: ubuntu-latest + steps: + - name: checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 1 + path: go/src/open-cluster-management.io/registration + - name: get release version + run: | + echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + - name: get major release version + run: | + echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV + echo "TRIMED_RELEASE_VERSION=${RELEASE_VERSION#v}" >> $GITHUB_ENV + outputs: + MAJOR_RELEASE_VERSION: ${{ env.MAJOR_RELEASE_VERSION }} + RELEASE_VERSION: ${{ env.RELEASE_VERSION }} images: name: images runs-on: ubuntu-latest + needs: [ env ] strategy: matrix: arch: [ amd64, arm64 ] @@ -34,75 +54,57 @@ jobs: go-version: ${{ env.GO_VERSION }} - name: install imagebuilder run: go install github.com/openshift/imagebuilder/cmd/imagebuilder@v1.2.1 - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - name: pull base image run: docker pull registry.access.redhat.com/ubi8/ubi-minimal:latest --platform=linux/${{ matrix.arch }} - name: images run: | - IMAGE_TAG=$RELEASE_VERSION-${{ matrix.arch }} \ + IMAGE_TAG=${{ needs.env.outputs.RELEASE_VERSION }}-${{ matrix.arch }} \ IMAGE_BUILD_EXTRA_FLAGS="--build-arg OS=linux --build-arg ARCH=${{ matrix.arch }}" \ make images - name: push run: | echo ${{ secrets.DOCKER_PASSWORD }} | docker login quay.io --username ${{ secrets.DOCKER_USER }} --password-stdin - docker push quay.io/open-cluster-management/registration:$RELEASE_VERSION-${{ matrix.arch }} + docker push quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}-${{ matrix.arch }} image-manifest: name: image manifest runs-on: ubuntu-latest - needs: [ images ] + needs: [ env, images ] steps: - name: checkout code uses: actions/checkout@v2 with: fetch-depth: 1 path: go/src/open-cluster-management.io/registration - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - name: create run: | echo ${{ secrets.DOCKER_PASSWORD }} | docker login quay.io --username ${{ secrets.DOCKER_USER }} --password-stdin - docker manifest create quay.io/open-cluster-management/registration:$RELEASE_VERSION \ - quay.io/open-cluster-management/registration:$RELEASE_VERSION-amd64 \ - quay.io/open-cluster-management/registration:$RELEASE_VERSION-arm64 + docker manifest create quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }} \ + quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}-amd64 \ + quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}-arm64 - name: annotate run: | - docker manifest annotate quay.io/open-cluster-management/registration:$RELEASE_VERSION \ - quay.io/open-cluster-management/registration:$RELEASE_VERSION-amd64 --arch amd64 - docker manifest annotate quay.io/open-cluster-management/registration:$RELEASE_VERSION \ - quay.io/open-cluster-management/registration:$RELEASE_VERSION-arm64 --arch arm64 + docker manifest annotate quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }} \ + quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}-amd64 --arch amd64 + docker manifest annotate quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }} \ + quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}-arm64 --arch arm64 - name: push run: | - docker manifest push quay.io/open-cluster-management/registration:$RELEASE_VERSION + docker manifest push quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }} release: name: release runs-on: ubuntu-latest - needs: [ image-manifest ] + needs: [ env, image-manifest ] steps: - name: checkout code uses: actions/checkout@v2 with: fetch-depth: 1 path: go/src/open-cluster-management.io/registration - - name: get release version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: get major release version - run: | - echo "MAJOR_RELEASE_VERSION=${RELEASE_VERSION%.*}" >> $GITHUB_ENV - name: generate changelog run: | - echo "# Registration $RELEASE_VERSION" > /home/runner/work/changelog.txt - echo "- See the [CHANGELOG](https://github.com/open-cluster-management-io/registration/blob/main/CHANGELOG/CHANGELOG-${MAJOR_RELEASE_VERSION}.md) for more details." >> /home/runner/work/changelog.txt - echo "- The released image is quay.io/open-cluster-management/registration:$RELEASE_VERSION" >> /home/runner/work/changelog.txt + echo "# Registration ${{ needs.env.outputs.RELEASE_VERSION }}" > /home/runner/work/changelog.txt + echo "- See the [CHANGELOG](https://github.com/open-cluster-management-io/registration/blob/main/CHANGELOG/CHANGELOG-${{ needs.env.outputs.MAJOR_RELEASE_VERSION }}.md) for more details." >> /home/runner/work/changelog.txt + echo "- The released image is quay.io/open-cluster-management/registration:${{ needs.env.outputs.RELEASE_VERSION }}" >> /home/runner/work/changelog.txt - name: publish release uses: softprops/action-gh-release@v0.1.5 env: