-
Notifications
You must be signed in to change notification settings - Fork 771
125 lines (114 loc) · 5.19 KB
/
preview.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
on:
pull_request:
branches: [main, prerelease]
issue_comment:
types: [created]
name: Deploy Preview
concurrency:
# Use github.event.pull_request.number on pull requests, so it's unique per pull request
# Use github.ref on other branches, so it's unique per branch
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.issue.number || github.ref }}
cancel-in-progress: true
jobs:
is-external-pr:
# Be helpful with reviewer and remind them to trigger a deploy preview if the PR is from a fork.
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true }}
runs-on: ubuntu-latest
steps:
- name: Error with message for manual deploy
run: |
echo "::error title=Manual action required for preview::PR from fork can't be deployed as preview to Netlify automatically. Use '/deploy-preview' command in comments to trigger the preview manually."
shell: bash
role-of-commenter:
if: github.event.issue.pull_request
runs-on: ubuntu-latest
steps:
- name: Check if commenter is a member, owner or collaborator
id: commenter-check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
commenter_role=$(gh api repos/$GITHUB_REPOSITORY/collaborators/${{ github.event.comment.user.login }}/permission --jq '.permission')
echo "commenter_role=$commenter_role" >> "$GITHUB_OUTPUT"
echo "author_association=${{ github.event.comment.author_association }}" >> "$GITHUB_OUTPUT"
shell: bash
build-deploy-preview:
# Deploy a preview only if
# - the PR is not from a fork,
# - requested by PR comment /deploy-preview, from a repo user or github action bot (user id 41898282)
# FIXME: We need to change the way we filter because somehow some MEMBER in API are seen as CONTRIBUTOR in CI
if: >
(
github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.fork != true
) ||
(
github.event.issue.pull_request &&
(
github.event.comment.user.id == '41898282' ||
github.event.comment.user.login == 'gordonwoodhull' ||
github.event.comment.author_association == 'MEMBER' ||
github.event.comment.author_association == 'OWNER' ||
github.event.comment.author_association == 'COLLABORATOR'
) &&
startsWith(github.event.comment.body, '/deploy-preview')
)
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
ref: refs/pull/${{ github.event.pull_request.number || github.event.issue.number }}/merge
- name: Get latest pre-release from github
id: github-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo version=$(gh api repos/quarto-dev/quarto-cli/releases | jq -r 'map(select(.prerelease)) | first | .tag_name | sub("^v";"")') >> "$GITHUB_OUTPUT"
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
with:
version: ${{ steps.github-release.outputs.version }}
- name: Is it for prerelease website ?
id: prerelease-docs-check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ "${{ github.event.pull_request.base.ref }}" == "prerelease" ]; then
echo "is_prerelease_docs=true" >> "$GITHUB_OUTPUT"
elif [ -n "${{ github.event.issue.pull_request.url }}" ]; then
# This will trigger when not pull request event, so a PR comment event.
# we need to get the base info from PR number the comment is made in
base_ref=$(gh -R $GITHUB_REPOSITORY pr view ${{ github.event.issue.number }} --json baseRefName --jq '.baseRefName')
if [ "$base_ref" == "prerelease" ]; then
echo "is_prerelease_docs=true" >> "$GITHUB_OUTPUT"
else
echo "is_prerelease_docs=false" >> "$GITHUB_OUTPUT"
fi
else
echo "is_prerelease_docs=false" >> "$GITHUB_OUTPUT"
fi
shell: bash
- name: Render
uses: quarto-dev/quarto-actions/render@v2
env:
QUARTO_PROFILE: ${{ steps.prerelease-docs-check.outputs.is_prerelease_docs == 'true' && 'prerelease-docs' || '' }}
- name: Deploy Preview to Netlify as preview
id: netlify-deploy
uses: nwtgck/actions-netlify@v3
env:
NETLIFY_SITE_ID: 2a3da659-672b-4e5b-8785-e10ebf79a962
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
with:
publish-dir: './_site'
production-deploy: false
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: |
Deploy from GHA: ${{ github.event.pull_request.title || format('manual from PR {0}', github.event.issue.number) }}
alias: deploy-preview-${{ github.event.pull_request.number || github.event.issue.number }}
# these all default to 'true'
enable-pull-request-comment: true
enable-commit-comment: false
enable-commit-status: true
overwrites-pull-request-comment: false
timeout-minutes: 1