From 3f9e05c02c62cb059e4a97a4d6ec61e89ba221a7 Mon Sep 17 00:00:00 2001 From: "kirill.chalov" Date: Mon, 8 Jul 2024 11:15:54 +0800 Subject: [PATCH] feat: add workflow to deploy to pages --- .github/workflows/deploy-to-pages.yml | 76 +++++++++++++++++++++++++++ .github/workflows/preview-pr.yml | 67 ++++++++++++----------- 2 files changed, 112 insertions(+), 31 deletions(-) create mode 100644 .github/workflows/deploy-to-pages.yml diff --git a/.github/workflows/deploy-to-pages.yml b/.github/workflows/deploy-to-pages.yml new file mode 100644 index 000000000..83e187875 --- /dev/null +++ b/.github/workflows/deploy-to-pages.yml @@ -0,0 +1,76 @@ +# Sample workflow for building and deploying a Hugo site to GitHub Pages +name: Deploy Hugo site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - article-espressif-ide-lsp-support + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.128.0 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build with Hugo + env: + HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache + HUGO_ENVIRONMENT: production + run: | + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/preview-pr.yml b/.github/workflows/preview-pr.yml index 74d2c81c5..2a1d02bf5 100644 --- a/.github/workflows/preview-pr.yml +++ b/.github/workflows/preview-pr.yml @@ -1,10 +1,13 @@ -name: Preview Hugo Site +name: Preview Hugo Site on Pull Request on: pull_request: branches: - main + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + # Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read @@ -22,20 +25,20 @@ defaults: shell: bash jobs: - deploy: - runs-on: ubuntu-20.04 - env: - PR_PATH: pull/${{github.event.number}} + preview: + runs-on: ubuntu-latest + # env: + # PR_PATH: pull/${{github.event.number}} steps: - - name: Comment on PR - uses: hasura/comment-progress@v2.3.0 - if: github.ref != 'refs/heads/main' - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - repository: ${{ github.repository }} - number: ${{ github.event.number }} - id: deploy-preview - message: "Starting deployment of preview ⏳..." + # - name: Comment on PR + # uses: hasura/comment-progress@v2.3.0 + # if: github.ref != 'refs/heads/main' + # with: + # github-token: ${{ secrets.GITHUB_TOKEN }} + # repository: ${{ github.repository }} + # number: ${{ github.event.number }} + # id: deploy-preview + # message: "Starting deployment of preview ⏳..." - name: Install Hugo CLI env: @@ -56,32 +59,32 @@ jobs: - name: Install Node.js dependencies run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" - - name: Set production base URL - run: echo "BASE_URL=https://${{ env.DOMAIN }}/${{ github.event.repository.name }}/" >> $GITHUB_ENV + # - name: Set production base URL + # run: echo "BASE_URL=https://${{ env.DOMAIN }}/${{ github.event.repository.name }}/" >> $GITHUB_ENV - name: Build website with Hugo env: # For maximum backward compatibility with Hugo modules + HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache HUGO_ENVIRONMENT: production - HUGO_ENV: production run: | hugo \ --gc \ --minify --baseURL "${{ env.BASE_URL }}" - # - name: Upload artifact for GitHub Pages - # uses: actions/upload-pages-artifact@v3 - # with: - # path: ./public - - - name: Deploy if this is the `main` branch - uses: peaceiris/actions-gh-pages@v3 - if: github.ref == 'refs/heads/main' + - name: Upload artifact for GitHub Pages + uses: actions/upload-pages-artifact@v3 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./public - cname: ${{ env.DOMAIN }} # TODO you need to set this if you're using a custom domain. Otherwise you can remove it. + path: ./public + + # - name: Deploy if this is the `main` branch + # uses: peaceiris/actions-gh-pages@v3 + # if: github.ref == 'refs/heads/main' + # with: + # github_token: ${{ secrets.GITHUB_TOKEN }} + # publish_dir: ./public + # cname: ${{ env.DOMAIN }} # TODO you need to set this if you're using a custom domain. Otherwise you can remove it. - name: Set base URL for preview if PR if: github.ref != 'refs/heads/main' @@ -119,9 +122,11 @@ jobs: # runs-on: ubuntu-latest # needs: build # steps: - # - name: Deploy to GitHub Pages - # id: deployment - # uses: actions/deploy-pages@v4 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + with: + preview: true # - name: Deploy to GitHub Pages # uses: peaceiris/actions-gh-pages@v4