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 18, 2024
1 parent 34d8036 commit 9c63d10
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 51 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
27 changes: 27 additions & 0 deletions .github/workflows/actions/publish-gh-pages/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Publish GitHub Pages
description: Downloads compiled code from the artifact cache and deploys it to GitHub Pages

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

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

- name: Deploy to Github Pages
uses: peaceiris/actions-gh-pages@v3
with:
destination_dir: ${{ inputs.pr-number }}/
external_repository: solana-labs/${{ inputs.repository }}
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: .ghpages-deploy
82 changes: 82 additions & 0 deletions .github/workflows/preview-gh-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Preview GitHub Pages

on:
pull_request:
branches:
- master
- maintenance/*

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

publish:
runs-on: ubuntu-latest
needs: [compile-gh-pages, compile-gh-pages-legacy]
steps:
- name: Publish
uses: ./.github/workflows/actions/publish-gh-pages
with:
pr-number: github.event.pull_request.number
repository: solana-web3.js-pr-preview

- 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: |
github.rest.issues.createComment({
issue_number: github.event.pull_request.number,
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:
https://solana-labs.github.io/solana-web3.js-pr-preview/${{ github.event.pull_request.number }}/
})
60 changes: 9 additions & 51 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,10 @@ jobs:
- name: Install Dependencies
uses: ./.github/workflows/actions/install-dependencies

- name: Compile docs
run: pnpm compile:docs
- name: Compile and Upload Artifacts
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,42 +45,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

- 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 Github Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: .ghpages-deploy
- name: Publish
uses: ./.github/workflows/actions/publish-gh-pages

0 comments on commit 9c63d10

Please sign in to comment.