From 1f56b8032fb9d4cf138f777db2220181104bca00 Mon Sep 17 00:00:00 2001 From: SunWuyuan Date: Sat, 24 May 2025 16:45:07 +0800 Subject: [PATCH] Remove deprecated Docker image workflow and consolidate Docker publish workflow to streamline image building and pushing for multiple database types. --- .github/workflows/docker-image.yml | 57 ---------------------- .github/workflows/docker-publish.yml | 71 +++++++++++----------------- 2 files changed, 28 insertions(+), 100 deletions(-) delete mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index aff5f1d..0000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Build and Push - -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - build_and_push: - name: Build and Push - runs-on: ubuntu-latest - strategy: - matrix: - database: [mysql, postgres, sqlite] - permissions: - packages: write - contents: read - steps: - - name: Check out the repo - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: | - sunwuyuan/classworks - ghcr.io/ZeroCatDev/ClassworksServer - tags: | - type=sha,suffix=-${{ matrix.database }} - type=raw,value=${{ matrix.database }},enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - flavor: | - latest=${{ github.ref == format('refs/heads/{0}', 'main') && matrix.database == 'sqlite' }} - - - name: Build and push Docker images - uses: docker/build-push-action@v5 - with: - context: . - build-args: | - DATABASE_TYPE=${{ matrix.database }} - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index a0caf71..a475a76 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -3,14 +3,14 @@ name: Docker Build and Push on: push: branches: [ "main" ] + tags: [ "v*.*.*" ] pull_request: branches: [ "main" ] env: REGISTRY: ghcr.io - MYSQL_IMAGE_NAME: zerocatdev/classworks-mysql - POSTGRES_IMAGE_NAME: zerocatdev/classworks-postgres - SQLITE_IMAGE_NAME: zerocatdev/classworks-sqlite + OWNER: zerocatdev + PROJECT_NAME: classworks jobs: build-and-push: @@ -19,68 +19,53 @@ jobs: contents: read packages: write + strategy: + matrix: + include: + - db: mysql + suffix: -mysql + - db: postgres + suffix: -postgres + - db: sqlite + suffix: -sqlite + - db: sqlite + suffix: "" + steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Log in to the Container registry + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Container registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) + - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 with: - images: | - ${{ env.REGISTRY }}/${{ env.MYSQL_IMAGE_NAME }} - ${{ env.REGISTRY }}/${{ env.POSTGRES_IMAGE_NAME }} - ${{ env.REGISTRY }}/${{ env.SQLITE_IMAGE_NAME }} + images: ${{ env.REGISTRY }}/${{ env.OWNER }}/${{ env.PROJECT_NAME }}${{ matrix.suffix }} tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - type=sha,format=long + type=sha,format=short type=raw,value=latest,enable={{is_default_branch}} - # Build and push MySQL image - - name: Build and push MySQL image + - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . - push: true + push: ${{ github.event_name != 'pull_request' }} build-args: | - DATABASE_TYPE=mysql - tags: | - ${{ env.REGISTRY }}/${{ env.MYSQL_IMAGE_NAME }}:${{ github.sha }} - ${{ env.REGISTRY }}/${{ env.MYSQL_IMAGE_NAME }}:latest + DATABASE_TYPE=${{ matrix.db }} + tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - # Build and push PostgreSQL image - - name: Build and push PostgreSQL image - uses: docker/build-push-action@v5 - with: - context: . - push: true - build-args: | - DATABASE_TYPE=postgres - tags: | - ${{ env.REGISTRY }}/${{ env.POSTGRES_IMAGE_NAME }}:${{ github.sha }} - ${{ env.REGISTRY }}/${{ env.POSTGRES_IMAGE_NAME }}:latest - labels: ${{ steps.meta.outputs.labels }} - - # Build and push SQLite image - - name: Build and push SQLite image - uses: docker/build-push-action@v5 - with: - context: . - push: true - build-args: | - DATABASE_TYPE=sqlite - tags: | - ${{ env.REGISTRY }}/${{ env.SQLITE_IMAGE_NAME }}:${{ github.sha }} - ${{ env.REGISTRY }}/${{ env.SQLITE_IMAGE_NAME }}:latest - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file