From d23c207c1a878e91d7c2cdd854744e5c0ce66721 Mon Sep 17 00:00:00 2001 From: Baoshuo Date: Tue, 2 Jul 2024 22:06:34 +0800 Subject: [PATCH] feat: publish docker image to ghcr.io ghcr.io: GitHub Packages ( https://docs.github.com/en/packages ) --- .github/workflows/build.yml | 68 +++++++++++++++++++++++++++++++++++++ docker-compose.yml | 3 ++ 2 files changed, 71 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..bb75b4481 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,68 @@ +name: Build & Push Docker Images + +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_BASENAME: uoj + +jobs: + build: + name: Build Image + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + strategy: + matrix: + include: + - image_name: db + context: db + dockerfile: db/Dockerfile + - image_name: judger + context: judger + dockerfile: judger/Dockerfile + - image_name: web + context: . + dockerfile: web/Dockerfile + fail-fast: false + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v2.1.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4.3.0 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_BASENAME }}-${{ matrix.image_name }} + tags: | + latest + type=ref,event=branch + type=ref,event=pr + type=sha,prefix= + + - name: Build and push Docker image + uses: docker/build-push-action@v3.3.0 + with: + context: ${{ matrix.context }} + file: ${{ matrix.dockerfile }} + push: ${{ github.event_name == 'push' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/docker-compose.yml b/docker-compose.yml index 9f17fb5ed..003234065 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ version: '3' services: uoj-db: + image: ghcr.io/UniversalOJ/uoj-db:latest build: context: ./db/ dockerfile: Dockerfile @@ -14,6 +15,7 @@ services: - MYSQL_ROOT_PASSWORD=root uoj-judger: + image: ghcr.io/UniversalOJ/uoj-judger:latest build: context: ./judger/ dockerfile: Dockerfile @@ -34,6 +36,7 @@ services: - SOCKET_PASSWORD=_judger_socket_password_ uoj-web: + image: ghcr.io/UniversalOJ/uoj-web:latest build: context: ./ dockerfile: web/Dockerfile