Skip to content

Commit

Permalink
Publish GitHub Pages previews on every PR
Browse files Browse the repository at this point in the history
  • Loading branch information
steveluscher committed Nov 21, 2024
1 parent bd5dff5 commit 877c695
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 35 deletions.
32 changes: 32 additions & 0 deletions .github/workflows/actions/compile-gh-pages/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Compile GitHub Pages
description: Compiles content for GitHub Pages and uploads it to the artifact cache

inputs:
pr-number:
type: number
repository:
default: 'solana-web3.js'
type: string

runs:
using: composite
steps:
- name: Compile
shell: bash
run: pnpm turbo run compile:typedefs compile:ghpages --concurrency=${TURBO_CONCURRENCY:-1}
env:
REACT_EXAMPLE_APP_BASE_PATH: /${{ inputs.repository }}${{ inputs.pr-number && format('/{0}', inputs.pr-number) || '' }}/example/

- name: Assemble Deploy Directory
shell: bash
run: |
mkdir -p .ghpages-deploy
mv ./examples/react-app/dist/ .ghpages-deploy/example/
mv ./docs/* .ghpages-deploy/
- uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: ghpages-deploy-artifacts
path: .ghpages-deploy
retention-days: 1
96 changes: 96 additions & 0 deletions .github/workflows/preview-gh-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Preview GitHub Pages

on:
pull_request:
types: [synchronize, opened, reopened]

env:
# Among other things, opts out of Turborepo telemetry
# See https://consoledonottrack.com/
DO_NOT_TRACK: '1'
# Some tasks slow down considerably on GitHub Actions runners when concurrency is high
TURBO_CONCURRENCY: 1
# Enables Turborepo Remote Caching.
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

jobs:
compile-gh-pages-legacy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: maintenance/v1.x

- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- name: Compile and Upload Artifacts
uses: ./.github/workflows/actions/compile-gh-pages

compile-gh-pages:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- name: Compile and Upload Artifacts
uses: ./.github/workflows/actions/compile-gh-pages
with:
pr-number: ${{ github.event.pull_request.number }}
repository: solana-web3.js-pr-preview

preview:
runs-on: ubuntu-latest
needs: [compile-gh-pages, compile-gh-pages-legacy]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- uses: actions/download-artifact@v4
with:
path: .ghpages-deploy
pattern: ghpages-deploy-artifacts*
merge-multiple: true

- name: Deploy to Preview Github Pages
uses: peaceiris/actions-gh-pages@v4
with:
destination_dir: ${{ format('{0}/', github.event.pull_request.number) }}
external_repository: solana-labs/solana-web3.js-pr-preview
personal_token: ${{ secrets.PR_PREVIEW_REPO_CONTENTS_TOKEN }}
publish_dir: .ghpages-deploy

- name: Find Existing Preview Link Comment
uses: peter-evans/find-comment@v3
id: find-comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: <!-- GH_PAGES_PREVIEW_BOT_COMMENT -->

- name: Create Preview Link Comment
uses: actions/github-script@v7
if: steps.find-comment.outputs.comment-id == ''
with:
script: >
const prNumber = context.issue.number;
github.rest.issues.createComment({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: [
'<!-- GH_PAGES_PREVIEW_BOT_COMMENT -->',
'A preview of the GitHub Pages site based on this PR is now available here:',
'',
`<a href="https://solana-labs.github.io/solana-web3.js-pr-preview/${prNumber}/" rel="noopener noreferrer" target="_blank">solana-labs.github.io/solana-web3.js-pr-preview/${prNumber}/</a>`,
].join('\n'),
})
44 changes: 9 additions & 35 deletions .github/workflows/publish-gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ env:
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}

jobs:
compile-v1-docs:
compile-gh-pages-legacy:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -33,22 +33,11 @@ jobs:
- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- name: Compile docs
run: pnpm compile:docs
- name: Compile and Upload Artifacts
# Be aware that this is the version that lives on the `maintenance/v1.x` branch.
uses: ./.github/workflows/actions/compile-gh-pages

- name: Assemble Deploy Directory
run: |
mkdir -p .ghpages-deploy/v1.x
mv ./doc/* .ghpages-deploy/v1.x
- uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: ghpages-deploy-artifacts-v1-docs
path: .ghpages-deploy
retention-days: 1

compile-github-pages:
compile-gh-pages:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -57,27 +46,12 @@ jobs:
- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- name: Compile
run: pnpm turbo run compile:typedefs compile:ghpages --concurrency=${TURBO_CONCURRENCY:-1}
env:
REACT_EXAMPLE_APP_BASE_PATH: /solana-web3.js/example/

- name: Assemble Deploy Directory
run: |
mkdir -p .ghpages-deploy
mv ./examples/react-app/dist/ .ghpages-deploy/example/
mv ./docs/* .ghpages-deploy/
- uses: actions/upload-artifact@v4
with:
include-hidden-files: true
name: ghpages-deploy-artifacts
path: .ghpages-deploy
retention-days: 1
- name: Compile and Upload Artifacts
uses: ./.github/workflows/actions/compile-gh-pages

publish:
runs-on: ubuntu-latest
needs: [compile-v1-docs, compile-github-pages]
needs: [compile-gh-pages, compile-gh-pages-legacy]
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -92,7 +66,7 @@ jobs:
merge-multiple: true

- name: Deploy to Github Pages
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: .ghpages-deploy

0 comments on commit 877c695

Please sign in to comment.