diff --git a/.github/workflows/images_build_rhel.yml b/.github/workflows/images_build_rhel.yml index 0b881408c..b3142dec5 100644 --- a/.github/workflows/images_build_rhel.yml +++ b/.github/workflows/images_build_rhel.yml @@ -205,6 +205,8 @@ jobs: CACHE_FILE_NAME: ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }} run: | DIGEST=$(podman inspect "${IMAGE_TAG}" --format "{{ index .RepoDigests 0}}" | cut -d '@' -f2) + TAG_ID=$(podman inspect "${IMAGE_TAG}" --format "{{ .Id }}") + echo "::group::Image tag" echo "image_tag=$IMAGE_TAG" echo "::endgroup::" @@ -216,6 +218,7 @@ jobs: echo "::endgroup::" echo "$DIGEST" > "${CACHE_FILE_NAME}_digest" + echo "$TAG_ID" > "${CACHE_FILE_NAME}_tag_id" echo "$IMAGE_TAG" > "${CACHE_FILE_NAME}_tag" - name: Cache image digest @@ -223,22 +226,23 @@ jobs: with: path: | ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_digest + ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_tag_id ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_tag key: ${{ env.BASE_BUILD_NAME }}-${{ matrix.arch }}-${{ github.run_id }} - name: Push image to local storage env: IMAGE_TAG: ${{ steps.build_image.outputs.image-with-tag }} - CACHE_FILE_NAME: ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }} + IMAGE_DIR: ${{ env.IMAGE_DIR }} run: | DIGEST=$(podman inspect "${IMAGE_TAG}" --format "{{ index .RepoDigests 0}}" | cut -d '@' -f2) echo "::group::Result" - echo "podman push \"${IMAGE_TAG}\" dir:\"$IMAGE_DIR/$DIGEST\"" - podman push "${IMAGE_TAG}" dir:"$IMAGE_DIR/$DIGEST" + echo "podman push \"${IMAGE_TAG}\" dir:\"${IMAGE_DIR}/${DIGEST}\"" + podman push "${IMAGE_TAG}" dir:"${IMAGE_DIR}/${DIGEST}" echo "::endgroup::" - - name: Post build + - name: Post build image env: IMAGE_TAG: ${{ steps.build_image.outputs.image-with-tag }} run: | @@ -286,6 +290,7 @@ jobs: with: path: | ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_digest + ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_tag_id ${{ env.BASE_BUILD_NAME }}_${{ matrix.arch }}_tag key: ${{ env.BASE_BUILD_NAME }}-${{ matrix.arch }}-${{ github.run_id }} @@ -300,7 +305,6 @@ jobs: BUILD_BASE_IMAGE="${IMAGES_PREFIX}${BASE_IMAGE}@${BASE_TAG}" echo "::group::Base build image information" - echo "base_tag=${BASE_TAG}" echo "base_build_image=${BUILD_BASE_IMAGE}" echo "::endgroup::" @@ -314,12 +318,12 @@ jobs: IMAGES_PREFIX: ${{ env.IMAGES_PREFIX }} run: | BASE_DIGEST=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_digest") - BASE_TAG=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_tag") - BUILD_BASE_IMAGE="${IMAGES_PREFIX}${BASE_IMAGE}:${BASE_TAG}" + BASE_TAG=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_tag_id") + BUILD_BASE_IMAGE=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_tag") echo "::group::Pull image" - echo "podman pull dir:\"${IMAGE_DIR}/${BUILD_BASE_IMAGE}\"" - podman pull dir:"${IMAGE_DIR}/${BASE_TAG}" + echo "podman pull dir:\"${IMAGE_DIR}/${BASE_DIGEST}\"" + podman pull dir:"${IMAGE_DIR}/${BASE_DIGEST}" echo "podman tag \"${BASE_TAG}\" \"${BUILD_BASE_IMAGE}\"" podman tag "${BASE_TAG}" "${BUILD_BASE_IMAGE}" echo "::endgroup::" @@ -337,26 +341,56 @@ jobs: - name: Image digest env: - IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} + IMAGE_TAG: ${{ steps.build_image.outputs.image-with-tag }} CACHE_FILE_NAME: ${{ matrix.build }}_${{ matrix.arch }} run: | - DIGEST=$(podman inspect ${IMAGE_TAG} --format "{{.Id}}") + DIGEST=$(podman inspect ${IMAGE_TAG} --format "{{ index .RepoDigests 0}}" | cut -d '@' -f2) + TAG_ID=$(podman inspect "${IMAGE_TAG}" --format "{{ .Id }}") + + echo "::group::Image tag" + echo "image_tag=$IMAGE_TAG" + echo "::endgroup::" echo "::group::Image digest" - echo "$DIGEST" + echo "digest=$DIGEST" echo "::endgroup::" echo "::group::Cache file name" echo "$CACHE_FILE_NAME" echo "::endgroup::" - podman push ${IMAGE_TAG} dir:"/tmp/images/$DIGEST" - echo "$DIGEST" > "$CACHE_FILE_NAME" + echo "$DIGEST" > "${CACHE_FILE_NAME}_digest" + echo "$TAG_ID" > "${CACHE_FILE_NAME}_tag_id" + echo "$IMAGE_TAG" > "${CACHE_FILE_NAME}_tag" - name: Cache image digest uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: - path: ${{ matrix.build }}_${{ matrix.arch }} + path: | + ${{ matrix.build }}_${{ matrix.arch }}_digest + ${{ matrix.build }}_${{ matrix.arch }}_tag_id + ${{ matrix.build }}_${{ matrix.arch }}_tag key: ${{ matrix.build }}-${{ matrix.arch }}-${{ github.run_id }} + - name: Push image to local storage + env: + IMAGE_TAG: ${{ steps.build_image.outputs.image-with-tag }} + IMAGE_DIR: ${{ env.IMAGE_DIR }} + run: | + DIGEST=$(podman inspect "${IMAGE_TAG}" --format "{{ index .RepoDigests 0}}" | cut -d '@' -f2) + + echo "::group::Result" + echo "podman push \"${IMAGE_TAG}\" dir:\"${IMAGE_DIR}/${DIGEST}\"" + podman push "${IMAGE_TAG}" dir:"${IMAGE_DIR}/${DIGEST}" + echo "::endgroup::" + + - name: Post build image + env: + IMAGE_TAG: ${{ steps.build_image.outputs.image-with-tag }} + run: | + echo "::group::Result" + echo "podman rmi -i -f \"${IMAGE_TAG}\"" + podman rmi -i -f "${IMAGE_TAG}" + echo "::endgroup::" + build_images: timeout-minutes: 90 needs: [ "build_base_database", "init_build"] @@ -425,10 +459,13 @@ jobs: if: ${{ matrix.build != 'snmptraps' }} uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: - path: ${{ steps.build_base_image.outputs.build_base }}_${{ matrix.arch }} + path: | + ${{ steps.build_base_image.outputs.build_base }}_${{ matrix.arch }}_digest + ${{ steps.build_base_image.outputs.build_base }}_${{ matrix.arch }}_tag_id + ${{ steps.build_base_image.outputs.build_base }}_${{ matrix.arch }}_tag key: ${{ steps.build_base_image.outputs.build_base }}-${{ matrix.arch }}-${{ github.run_id }} - - name: Retrieve ${{ steps.build_base_image.outputs.build_base }}:${{ matrix.arch }} SHA256 tag + - name: Retrieve ${{ steps.build_base_image.outputs.build_base }}:${{ matrix.arch }} info id: base_build if: ${{ matrix.build != 'snmptraps' }} env: @@ -436,21 +473,34 @@ jobs: BASE_IMAGE: ${{ steps.build_base_image.outputs.build_base }} IMAGES_PREFIX: ${{ env.IMAGES_PREFIX }} run: | - BASE_TAG=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}") - BUILD_BASE_IMAGE="${IMAGES_PREFIX}${BASE_IMAGE}:${BASE_TAG}" + BASE_TAG=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_digest") + BUILD_BASE_IMAGE="${IMAGES_PREFIX}${BASE_IMAGE}@${BASE_TAG}" echo "::group::Base build image information" - echo "base_tag=${BASE_TAG}" echo "base_build_image=${BUILD_BASE_IMAGE}" echo "::endgroup::" - echo "podman pull \"dir:/tmp/images/${BASE_TAG}\"" - echo "podman tag ${BASE_TAG} ${BUILD_BASE_IMAGE}" - podman pull dir:"/tmp/images/${BASE_TAG}" - podman tag ${BASE_TAG} ${BUILD_BASE_IMAGE} echo "base_tag=${BASE_TAG}" >> $GITHUB_OUTPUT echo "base_build_image=${BUILD_BASE_IMAGE}" >> $GITHUB_OUTPUT + - name: Pull ${{ env.BASE_BUILD_NAME }}:${{ matrix.arch }} image + if: ${{ matrix.build != 'snmptraps' }} + env: + MATRIX_ARCH: ${{ matrix.arch }} + BASE_IMAGE: ${{ steps.build_base_image.outputs.build_base }} + IMAGES_PREFIX: ${{ env.IMAGES_PREFIX }} + run: | + BASE_DIGEST=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_digest") + BASE_TAG=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_tag_id") + BUILD_BASE_IMAGE=$(cat "${BASE_IMAGE}_${MATRIX_ARCH}_tag") + + echo "::group::Pull image" + echo "podman pull dir:\"${IMAGE_DIR}/${BASE_DIGEST}\"" + podman pull dir:"${IMAGE_DIR}/${BASE_DIGEST}" + echo "podman tag \"${BASE_TAG}\" \"${BUILD_BASE_IMAGE}\"" + podman tag "${BASE_TAG}" "${BUILD_BASE_IMAGE}" + echo "::endgroup::" + - name: Build image id: build_image uses: redhat-actions/buildah-build@b4dc19b4ba891854660ab1f88a097d45aa158f76 # v2.12