diff --git a/.github/workflows/deploy-hugo-site.yml b/.github/workflows/deploy-production.yml similarity index 92% rename from .github/workflows/deploy-hugo-site.yml rename to .github/workflows/deploy-production.yml index 4269d9e9..ad160aa8 100644 --- a/.github/workflows/deploy-hugo-site.yml +++ b/.github/workflows/deploy-production.yml @@ -1,4 +1,4 @@ -name: Deploy Hugo site +name: Deploy production on: # Run on pushes to the default branch @@ -8,10 +8,9 @@ on: # Allow manual runs from the Actions tab workflow_dispatch: -# Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +# Set permissions of the GITHUB_TOKEN permissions: contents: read - pages: write id-token: write # Allow only one concurrent deployment @@ -68,7 +67,7 @@ jobs: runs-on: ubuntu-latest steps: - - name: Invalidate cloudfront cache + - name: Invalidate CloudFront cache uses: chetan/invalidate-cloudfront-action@v2 env: PATHS: "/*" diff --git a/.github/workflows/pr-deploy-preview.yml b/.github/workflows/pr-deploy-preview.yml new file mode 100644 index 00000000..d3f9f550 --- /dev/null +++ b/.github/workflows/pr-deploy-preview.yml @@ -0,0 +1,89 @@ +name: Deploy preview for PR + +on: + pull_request: + types: [opened, synchronize, reopened] + # Allow manual runs from the Actions tab + workflow_dispatch: + +# Set permissions of the GITHUB_TOKEN +permissions: + contents: read + id-token: write + pull-requests: write + +# Allow only one concurrent deployment +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +# Define environment variables +env: + HUGO_BASEURL: "https://preview-developer.espressif.com/pr${{ github.event.pull_request.number }}/" + +# Default to bash +defaults: + run: + shell: bash + +jobs: + build-and-deploy-preview: + runs-on: ubuntu-latest + + steps: + + - name: Install Hugo CLI + env: + HUGO_VERSION: 0.135.0 + 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: Check out repo + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build website with Hugo + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: preview + HUGO_ENV: preview + run: | + hugo \ + --gc \ + --minify + + - name: Deploy to AWS S3 PR-specific subdirectory + uses: jakejarvis/s3-sync-action@master + with: + args: --follow-symlinks --delete --cache-control no-cache + env: + AWS_S3_BUCKET: ${{ secrets.PREVIEW_AWS_BUCKET_NAME }} + SOURCE_DIR: './public' + # Subdirectory for the PR + DEST_DIR: "pr${{ github.event.pull_request.number }}" + AWS_REGION: ${{ secrets.AWS_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: Post Preview Link to PR + uses: actions/github-script@v7 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `🎉 A preview of this PR is available at: ${{ env.HUGO_BASEURL }} ` + }) + + - name: Invalidate CloudFront cache for PR + uses: chetan/invalidate-cloudfront-action@v2 + env: + PATHS: "/pr-${{ github.event.pull_request.number }}/*" + DISTRIBUTION: ${{ secrets.PREVIEW_CLOUDFRONT_DISTRIBUTION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/pr-remove-preview.yml b/.github/workflows/pr-remove-preview.yml new file mode 100644 index 00000000..2b4e2f21 --- /dev/null +++ b/.github/workflows/pr-remove-preview.yml @@ -0,0 +1,31 @@ +name: Remove preview for PR + +on: + pull_request: + types: + - closed + +jobs: + remove-preview: + name: Remove preview for PR + runs-on: ubuntu-latest + + steps: + # Remove the PR-specific folder from S3 + - name: Remove PR-specific subdirectory from S3 + run: | + echo "Cleaning up preview folder for PR #${{ github.event.pull_request.number }}" + aws s3 rm "s3://${{ secrets.PREVIEW_AWS_BUCKET_NAME }}/pr${{ github.event.pull_request.number }}" --recursive + env: + AWS_REGION: ${{ secrets.AWS_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: Invalidate CloudFront cache for PR + uses: chetan/invalidate-cloudfront-action@v2 + env: + PATHS: "/pr-${{ github.event.pull_request.number }}/*" + DISTRIBUTION: ${{ secrets.PREVIEW_CLOUDFRONT_DISTRIBUTION }} + AWS_REGION: ${{ secrets.AWS_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index 862a7596..9698da82 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -2,9 +2,11 @@ # Refer to the theme docs for more details about each of these parameters. # https://blowfish.page/docs/getting-started/ -theme = "blowfish" -baseURL = "https://developer.espressif.com" +baseURL = "https://preview-developer.espressif.com/" +languageCode = "en" defaultContentLanguage = "en" +title = "Espressif Developer Portal Preview" +theme = "blowfish" # Keep English on top level defaultContentLanguageInSubdir = false @@ -14,10 +16,8 @@ defaultContentLanguageInSubdir = false enableRobotsTXT = true summaryLength = 0 -buildDrafts = false -buildFuture = false - -googleAnalytics = "G-K9NTMXPGN3" +buildDrafts = true +buildFuture = true [pagination] pagerSize = 30 diff --git a/config/production/hugo.toml b/config/production/hugo.toml new file mode 100644 index 00000000..66193aed --- /dev/null +++ b/config/production/hugo.toml @@ -0,0 +1,13 @@ +# -- Site Configuration -- +# Refer to the theme docs for more details about each of these parameters. +# https://blowfish.page/docs/getting-started/ + +baseURL = "https://developer.espressif.com/" +title = "Espressif Developer Portal" + +buildDrafts = false +buildFuture = false + +[services] + [services.googleAnalytics] + id = "G-K9NTMXPGN3" diff --git a/hugo.toml b/hugo.toml deleted file mode 100644 index 69a075c5..00000000 --- a/hugo.toml +++ /dev/null @@ -1,9 +0,0 @@ -baseURL = "https://developer.espressif.com/" -# [en, zh-cn, fr, ...] determines default content language -defaultContentLanguage = "en" -# language code -languageCode = "en" -title = "Espressif Developer Portal" - -# Change the default theme to be use when building the site with Hugo -theme = "blowfish"