Files
euchre_camp/.gitea/workflows/build-ci-images.yml
T
david e602e83642
Pull Request / unit-tests (pull_request) Failing after 1m0s
Pull Request / build-and-deploy-ci (pull_request) Has been skipped
Pull Request / analyze-bump-type (pull_request) Has been skipped
sanitize docker tags
2026-05-07 03:10:48 -07:00

71 lines
2.5 KiB
YAML

name: Build CI Images
on:
push:
branches:
- main
paths:
- 'Dockerfile.ci-base'
- 'package.json'
- 'bun.lock'
- '.gitea/workflows/build-ci-images.yml'
schedule:
# Weekly rebuild to get latest Playwright/Bun versions
- cron: '0 2 * * 0' # Every Sunday at 2 AM
workflow_dispatch: # Manual trigger
env:
REGISTRY: docker.notsosm.art
IMAGE_NAME: euchre-camp
jobs:
build-ci-base:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Registry
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u ${{ secrets.DOCKER_LOGIN }} --password-stdin
- name: Extract metadata for CI base image
id: meta
run: |
# Get Playwright version from package.json
PLAYWRIGHT_VERSION=$(grep -o '"@playwright/test": "[^"]*"' package.json | cut -d'"' -f4 | sed 's/^\^//')
echo "playwright_version=${PLAYWRIGHT_VERSION}" >> $GITHUB_OUTPUT
# Get Bun version (latest)
BUN_VERSION=$(bun --version 2>/dev/null || echo "latest")
echo "bun_version=${BUN_VERSION}" >> $GITHUB_OUTPUT
# Set tags
echo "tags=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:playwright-${PLAYWRIGHT_VERSION},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:${{ github.sha }}" >> $GITHUB_OUTPUT
- name: Build and push CI base image
run: |
# Build with multiple tags
docker build \
--file Dockerfile.ci-base \
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:latest \
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:playwright-${{ steps.meta.outputs.playwright_version }} \
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:${{ github.sha }} \
.
# Push all tags
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:latest
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:playwright-${{ steps.meta.outputs.playwright_version }}
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ci-base:${{ github.sha }}
- name: Clean up
if: always()
run: |
docker logout ${{ env.REGISTRY }}