Files
pezkuwi-sdk/.github/actions/build-push-image/action.yml
T
pezkuwichain 586c5d97d5 fix: switch container registry from GCP to GHCR
- Replace Parity's GCP registry (europe-docker.pkg.dev/parity-ci-2024)
  with GitHub Container Registry (ghcr.io/pezkuwichain)
- Add packages:write permission for GHCR push
- Update zombienet-env to use pezkuwichain images
- Fix paritypr references in zombienet tests
2026-01-27 05:57:33 +03:00

89 lines
3.0 KiB
YAML

name: "build and push image"
inputs:
dockerfile:
description: "dockerfile to build"
required: true
image-name:
description: "image name (without registry)"
required: true
username:
required: false
default: ""
password:
required: false
default: ""
outputs:
branch:
description: "Branch name for the PR"
value: ${{ steps.branch.outputs.branch }}
runs:
using: "composite"
steps:
# GHCR login (using GITHUB_TOKEN - automatically available)
- name: Login to GHCR
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Set image version
id: version
shell: bash
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
echo "VERSION=${{ github.event.pull_request.head.sha }}" >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "merge_group" ]]; then
echo "VERSION=${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
else
echo "VERSION=${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
fi
- name: build
shell: bash
env:
ZOMBIENET_IMAGE: "docker.io/pezkuwichain/zombienet:v1.3.105"
IMAGE_TAG: ghcr.io/pezkuwichain/${{ inputs.image-name }}
run: |
docker build \
--build-arg VCS_REF="${GITHUB_SHA}" \
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" \
--build-arg IMAGE_NAME="${{ inputs.image-name }}" \
--build-arg ZOMBIENET_IMAGE="${ZOMBIENET_IMAGE}" \
-t "${{ env.IMAGE_TAG }}:${{ steps.version.outputs.VERSION }}" \
-t "${{ env.IMAGE_TAG }}:latest" \
-f ${{ inputs.dockerfile }} \
.
- name: push to GHCR
shell: bash
env:
IMAGE_TAG: ghcr.io/pezkuwichain/${{ inputs.image-name }}
run: |
docker push "${{ env.IMAGE_TAG }}:${{ steps.version.outputs.VERSION }}"
docker push "${{ env.IMAGE_TAG }}:latest"
- name: login to dockerhub
id: login
# Only login if credentials are provided
if: ${{ inputs.username != '' && inputs.password != '' }}
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
with:
username: ${{ inputs.username }}
password: ${{ inputs.password }}
- name: push to dockerhub
shell: bash
if: ${{ inputs.username != '' && inputs.password != '' }}
env:
GHCR_TAG: ghcr.io/pezkuwichain/${{ inputs.image-name }}
DOCKERHUB_TAG: docker.io/pezkuwichain/${{ inputs.image-name }}
run: |
# Tag GHCR image for DockerHub
docker tag "${{ env.GHCR_TAG }}:${{ steps.version.outputs.VERSION }}" "${{ env.DOCKERHUB_TAG }}:${{ steps.version.outputs.VERSION }}"
docker tag "${{ env.GHCR_TAG }}:latest" "${{ env.DOCKERHUB_TAG }}:latest"
# Push to DockerHub
docker push "${{ env.DOCKERHUB_TAG }}:${{ steps.version.outputs.VERSION }}"
docker push "${{ env.DOCKERHUB_TAG }}:latest"