Several multi-arch image build/push fixes

* Fix not setting `$VERSION` before reference
* Reduce need for "syntax-hilighting workaround` comment.
  Simplify context-expressions -> simple env. var. referenmces
* Fix pushing quay.io/containers/podman:master twice
  ('upstream' and 'testing' matrix items)
* Throw error on unknown/unsupported matrix items
* Improve readability of setting multi-line `$LABELS` value.

Signed-off-by: Chris Evich <cevich@redhat.com>
This commit is contained in:
Chris Evich
2021-04-23 13:15:33 -04:00
parent ba60821f0a
commit 1e98a95a0e

View File

@ -69,55 +69,73 @@ jobs:
- name: Generate image information - name: Generate image information
id: image_info id: image_info
run: | run: |
VERSION='v${{ steps.sniff_test.outputs.version }}'
# workaround vim syntax-hilighting bug: '
if [[ "${{ matrix.source }}" == 'stable' ]]; then if [[ "${{ matrix.source }}" == 'stable' ]]; then
# quay.io/podman/stable:vX.X.X # quay.io/podman/stable:vX.X.X
ALLTAGS=$(skopeo list-tags \ ALLTAGS=$(skopeo list-tags \
docker://${{ env.PODMAN_QUAY_REGISTRY }}/stable | \ docker://$PODMAN_QUAY_REGISTRY/stable | \
jq -r '.Tags[]') jq -r '.Tags[]')
PUSH="false" PUSH="false"
if fgrep -qx "$VERSION" <<<"$ALLTAGS"; then if fgrep -qx "$VERSION" <<<"$ALLTAGS"; then
PUSH="true" PUSH="true"
fi fi
FQIN='${{ env.PODMAN_QUAY_REGISTRY }}/stable:v${{ steps.sniff_test.outputs.version }}' # workaround vim syntax-hilighting bug: ' FQIN="$PODMAN_QUAY_REGISTRY/stable:$VERSION"
# Only push if version tag does not exist # Only push if version tag does not exist
if [[ "$PUSH" == "true" ]]; then if [[ "$PUSH" == "true" ]]; then
echo "Will push $FQIN" echo "Will push $FQIN"
echo "::set-output name=podman_push::${PUSH}" echo "::set-output name=podman_push::${PUSH}"
echo "::set-output name=podman_fqin::${FQIN}" echo "::set-output name=podman_fqin::${FQIN}"
else
echo "Not pushing, $FQIN already exists."
fi fi
# quay.io/containers/podman:vX.X.X # quay.io/containers/podman:vX.X.X
unset ALLTAGS unset ALLTAGS
ALLTAGS=$(skopeo list-tags \ ALLTAGS=$(skopeo list-tags \
docker://${{ env.CONTAINERS_QUAY_REGISTRY }}/podman | \ docker://$CONTAINERS_QUAY_REGISTRY/podman | \
jq -r '.Tags[]') jq -r '.Tags[]')
PUSH="false" PUSH="false"
if fgrep -qx "$VERSION" <<<"$ALLTAGS"; then if fgrep -qx "$VERSION" <<<"$ALLTAGS"; then
PUSH="true" PUSH="true"
fi fi
FQIN='${{ env.CONTAINERS_QUAY_REGISTRY}}/podman:v${{ steps.sniff_test.outputs.version }}' # workaround vim syntax-hilighting bug: ' FQIN="$CONTAINERS_QUAY_REGISTRY/podman:$VERSION"
# Only push if version tag does not exist # Only push if version tag does not exist
if [[ "$PUSH" == "true" ]]; then if [[ "$PUSH" == "true" ]]; then
echo "Will push $FQIN" echo "Will push $FQIN"
echo "::set-output name=containers_push::${PUSH}" echo "::set-output name=containers_push::${PUSH}"
echo "::set-output name=containers_fqin::$FQIN" echo "::set-output name=containers_fqin::$FQIN"
else
echo "Not pushing, $FQIN already exists."
fi fi
else # upstream and testing podman image elif [[ "${{ matrix.source }}" == 'testing' ]]; then
P_FQIN='${{ env.PODMAN_QUAY_REGISTRY }}/${{ matrix.source }}:master' # workaround vim syntax-hilighting bug: ' P_FQIN="$PODMAN_QUAY_REGISTRY/testing:master"
C_FQIN='${{ env.CONTAINERS_QUAY_REGISTRY}}/podman:master' # workaround vim syntax-hilighting bug: ' echo "Will push $P_FQIN"
echo "::set-output name=podman_fqin::${P_FQIN}"
echo '::set-output name=podman_push::true'
elif [[ "${{ matrix.source }}" == 'upstream' ]]; then
P_FQIN="$PODMAN_QUAY_REGISTRY/upstream:master"
C_FQIN="$CONTAINERS_QUAY_REGISTRY/podman:master"
echo "Will push $P_FQIN and $C_FQIN" echo "Will push $P_FQIN and $C_FQIN"
echo "::set-output name=podman_fqin::${P_FQIN}" echo "::set-output name=podman_fqin::${P_FQIN}"
echo "::set-output name=containers_fqin::${C_FQIN}" echo "::set-output name=containers_fqin::${C_FQIN}"
# Always push 'master' tag # Always push 'master' tag
echo '::set-output name=podman_push::true' echo '::set-output name=podman_push::true'
echo '::set-output name=containers_push::true' echo '::set-output name=containers_push::true'
else
echo "::error ::Unknown matrix value ${{ matrix.source }}"
exit 1
fi fi
# Hack to set $LABELS env. var. in _future_ steps. - name: Define LABELS multi-line env. var. value
run: |
# This is a really hacky/strange workflow idiom, required
# for setting multi-line $LABELS value for consumption in
# a future step.
# https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#multiline-strings # https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#multiline-strings
cat << EOF | tee $GITHUB_ENV cat << EOF | tee -a $GITHUB_ENV
LABELS<<DELIMITER LABELS<<DELIMITER
org.opencontainers.image.source=https://github.com/${{ github.repository }}.git org.opencontainers.image.source=https://github.com/${{ github.repository }}.git
org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.revision=${{ github.sha }}