feat(ci): build custom Docker images for Gitea Actions compatibility
- Create Dockerfile.ci-base with Bun, Node.js, and Playwright pre-installed - Add build-ci-images workflow that triggers on package.json changes - Update PR workflow to use custom ci-base image instead of GitHub Actions - Update Release workflow to use custom ci-base image - Remove dependency on oven/setup-bun@v2 GitHub Action - Remove dependency on docker/setup-buildx-action GitHub Action - Images are automatically built when dependencies in package.json update - Weekly scheduled rebuild ensures tools stay current This resolves the 'authentication required: Repository not found' error when Gitea Actions tries to clone GitHub Actions from external repositories.
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
name: Build CI Images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'Dockerfile.ci-base'
|
||||
- 'package.json'
|
||||
- 'bun.lockb'
|
||||
- '.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)
|
||||
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 }}
|
||||
Reference in New Issue
Block a user