Skip to content

Publish GitHub Pages previews on every PR #25

Publish GitHub Pages previews on every PR

Publish GitHub Pages previews on every PR #25

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
if: github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
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
if: github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
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
if: github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
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'),
});