fix: update 'build-push-image' action #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push Container Image | |
| on: | |
| push: | |
| branches: | |
| - '**' # Triggers on push to any branch | |
| pull_request: | |
| branches: | |
| - main | |
| - master | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Podman | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y podman | |
| podman --version | |
| # Configure Podman to work in CI environment | |
| sudo mkdir -p /etc/containers | |
| echo -e "[registries.search]\nregistries = ['docker.io', 'quay.io', 'ghcr.io']" | sudo tee /etc/containers/registries.conf | |
| - name: Extract metadata (tags, labels) for container | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=ref,event=branch | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=sha | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - name: Log in to GitHub Container Registry | |
| run: | | |
| echo "${{ secrets.GITHUB_TOKEN }}" | podman login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin | |
| - name: Build container image | |
| run: | | |
| # Build with all tags (tags from metadata action are already full image references) | |
| TAGS="${{ steps.meta.outputs.tags }}" | |
| # Collect all tag arguments | |
| TAG_ARGS="" | |
| while IFS= read -r tag; do | |
| if [ -n "$tag" ]; then | |
| # Tags from metadata action are already full image references | |
| TAG_ARGS="$TAG_ARGS --tag ${tag}" | |
| fi | |
| done <<< "$TAGS" | |
| # Build the image with all tags | |
| podman build --file ./Dockerfile $TAG_ARGS . | |
| - name: Push container image | |
| if: github.event_name != 'pull_request' | |
| run: | | |
| # Push all tags (tags from metadata action are already full image references) | |
| TAGS="${{ steps.meta.outputs.tags }}" | |
| while IFS= read -r tag; do | |
| if [ -n "$tag" ]; then | |
| # Tags from metadata action are already full image references | |
| podman push "${tag}" | |
| fi | |
| done <<< "$TAGS" |