Skip to content

Publish expo-doctor

Publish expo-doctor #1

Workflow file for this run

name: Docs Website PR
defaults:
run:
shell: bash
working-directory: docs
on:
workflow_dispatch: {}
push:
paths:
- '.github/workflows/docs-pr.yml'
- '.github/workflows/docs-pr-destroy.yml'
pull_request:
paths:
- 'docs/**'
- '.github/workflows/docs-pr.yml'
- '.github/workflows/docs-pr-destroy.yml'
types:
- opened
- labeled
- synchronize
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docs-pr:
runs-on: ubuntu-22.04
steps:
- name: 👀 Checkout
uses: actions/checkout@v4
- name: ⬢ Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: ♻️ Restore caches
uses: ./.github/actions/expo-caches
id: expo-caches
with:
yarn-docs: 'true'
- name: ➕ Add `bin` to GITHUB_PATH
run: echo "$(pwd)/bin" >> $GITHUB_PATH
- name: 🧶 Yarn install
if: steps.expo-caches.outputs.yarn-docs-hit != 'true'
run: yarn install --frozen-lockfile
- name: 🧪 Run Docs tests
run: yarn test
- name: 🚨 Lint Docs website code
env:
NODE_ENV: production
run: yarn lint --max-warnings 0
- name: 💬 Lint Docs website content
run: yarn lint-prose
- name: 🏗️ Build Docs website
run: yarn export-preview
timeout-minutes: 20
env:
AWS_BUCKET: 'docs.expo.dev-pr-${{ github.event.pull_request.number }}'
- name: 🔗 Lint pages links
working-directory: docs
run: yarn lint-links --quiet
- name: ✅ Test links (legacy)
working-directory: docs
run: |
yarn export-server &
while ! nc -z localhost 8000; do
sleep 1
done
yarn test-links http://127.0.0.1:8000
timeout-minutes: 3
- name: 🪣 Set up docs preview bucket
if: contains(github.event.pull_request.labels.*.name, 'preview')
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-east-1'
run: |
# Create bucket
aws s3api create-bucket --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }}
# Set "block public access" to off
aws s3api put-public-access-block --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }} --public-access-block-configuration "BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false"
# Set bucket policy to public
aws s3api put-bucket-policy --bucket docs.expo.dev-pr-${{ github.event.pull_request.number }} --policy "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3:GetObject\",\"Resource\":\"arn:aws:s3:::docs.expo.dev-pr-${{ github.event.pull_request.number }}/*\"}]}"
# Set up static website hosting
aws s3 website s3://docs.expo.dev-pr-${{ github.event.pull_request.number }}/ --index-document index.html
- name: 🚀 Deploy Docs website
if: contains(github.event.pull_request.labels.*.name, 'preview')
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-east-1'
AWS_BUCKET: docs.expo.dev-pr-${{ github.event.pull_request.number }}
run: ./deploy.sh
- name: 🔍 Find old comment if it exists
if: contains(github.event.pull_request.labels.*.name, 'preview')
uses: peter-evans/find-comment@v3
id: old_comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'expo-bot'
body-includes: 📘 Your docs
- name: 💬 Add comment with preview URL
if: contains(github.event.pull_request.labels.*.name, 'preview') && steps.old_comment.outputs.comment-id == ''
uses: actions/github-script@v7
with:
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '📘 Your docs [preview website](http://docs.expo.dev-pr-${{ github.event.pull_request.number }}.s3-website-us-east-1.amazonaws.com/) is ready!'
});
- name: 💬 Update comment with preview URL
if: contains(github.event.pull_request.labels.*.name, 'preview') && steps.old_comment.outputs.comment-id != ''
uses: actions/github-script@v7
with:
github-token: ${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script: |
github.rest.issues.updateComment({
issue_number: context.issue.number,
comment_id: '${{ steps.old_comment.outputs.comment-id }}',
owner: context.repo.owner,
repo: context.repo.repo,
body: '📘 Your docs [preview website](http://docs.expo.dev-pr-${{ github.event.pull_request.number }}.s3-website-us-east-1.amazonaws.com/) is ready!'
});