From 1b1a4ebc94a971d5e7e9323278ea211ab9ebc68c Mon Sep 17 00:00:00 2001 From: lawvs <18554747+lawvs@users.noreply.github.com> Date: Fri, 23 Sep 2022 15:24:14 +0800 Subject: [PATCH] feat: build and push image --- .github/workflows/build.yml | 88 +++++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 54380c1ba3..00390a6d9e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,14 +6,18 @@ on: pull_request: branches: [master] +# Cancels all previous workflow runs for pull requests that have not completed. +# See https://docs.github.com/en/actions/using-jobs/using-concurrency +concurrency: + # The concurrency group contains the workflow name and the branch name for + # pull requests or the commit hash for any other events. + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} + cancel-in-progress: true + jobs: build: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - node-version: [18.x] - os: [ubuntu-latest] + name: Lint nad Build + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -21,10 +25,10 @@ jobs: with: version: 'latest' - - name: Use Node.js ${{ matrix.node-version }} + - name: Use Node.js uses: actions/setup-node@v2 with: - node-version: ${{ matrix.node-version }} + node-version: 18.x cache: 'pnpm' - name: Restore cache @@ -59,23 +63,69 @@ jobs: with: path: ./out - # Deployment job - deploy: + push_to_registry: + # See https://docs.github.com/en/actions/publishing-packages/publishing-docker-images + name: Push Docker image to Docker Hub if: github.ref == 'refs/heads/master' runs-on: ubuntu-latest needs: build - # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read - pages: write - id-token: write + packages: write - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} + env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 + - name: Check out the repo + uses: actions/checkout@v2 + + - uses: actions/download-artifact@v3 + with: + path: out + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + 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 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + # TODO remove comment after public repo + # Deployment job + # deploy: + # name: Deployment to GitHub pages + # if: github.ref == 'refs/heads/master' + # runs-on: ubuntu-latest + # needs: build + + # # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages + # permissions: + # contents: read + # pages: write + # id-token: write + + # environment: + # name: github-pages + # url: ${{ steps.deployment.outputs.page_url }} + + # steps: + # - name: Deploy to GitHub Pages + # id: deployment + # uses: actions/deploy-pages@v1