From 5948634a9cf67cc51d7faadfb83aad731aa0d63a Mon Sep 17 00:00:00 2001 From: alt0 Date: Thu, 20 Oct 2022 19:54:00 +0800 Subject: [PATCH] chore: update workflow for test env --- .../{build.yml => build-livedemo.yml} | 2 +- .github/workflows/build-test-version.yml | 123 ++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) rename .github/workflows/{build.yml => build-livedemo.yml} (99%) create mode 100644 .github/workflows/build-test-version.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build-livedemo.yml similarity index 99% rename from .github/workflows/build.yml rename to .github/workflows/build-livedemo.yml index bbca69cc92..c9f86e7ed4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-livedemo.yml @@ -1,4 +1,4 @@ -name: Build +name: Build LiveDemo Version on: push: diff --git a/.github/workflows/build-test-version.yml b/.github/workflows/build-test-version.yml new file mode 100644 index 0000000000..49024c7159 --- /dev/null +++ b/.github/workflows/build-test-version.yml @@ -0,0 +1,123 @@ +name: Build LiveDemo Test Version + +on: + workflow_dispatch: + inputs: + tag: + description: "Custom Tag. Set nightly-latest will publish to development." + required: false + type: string + +# 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: + name: Lint nad Build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: pnpm/action-setup@v2 + with: + version: 'latest' + + - name: Use Node.js + uses: actions/setup-node@v2 + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_GITHUB_AUTH_TOKEN }} + with: + node-version: 18.x + cache: 'pnpm' + + - run: node scripts/module-resolve/ci.js + + - name: Restore cache + uses: actions/cache@v3 + with: + path: | + .next/cache + # Generate a new cache whenever packages or source files change. + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }} + # If source files changed but packages didn't, rebuild from a prior cache. + restore-keys: | + ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}- + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_GITHUB_AUTH_TOKEN }} + + - name: Lint + run: | + pnpm lint --max-warnings=0 + + # - name: Test + # run: pnpm test + + - name: Build + run: pnpm build + + - name: Export + run: pnpm export + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + path: ./packages/app/out + + push_to_registry: + # See https://docs.github.com/en/actions/publishing-packages/publishing-docker-images + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + needs: build + + permissions: + contents: read + packages: write + + env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}-testing + IMAGE_TAG: canary-${{ github.sha }} + # IMAGE_TAG_LATEST: nightly-latest + + steps: + - name: Check out the repo + uses: actions/checkout@v2 + + - name: Download artifact + uses: actions/download-artifact@v3 + with: + name: artifact + path: packages/app/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 }} + tags: | + ${{ env.IMAGE_TAG }} + ${{ inputs.tag || github.ref_name }} + + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: . + push: true + file: ./.github/deployment/Dockerfile + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }}