-
Notifications
You must be signed in to change notification settings - Fork 8
142 lines (121 loc) Β· 5.37 KB
/
publish.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# https://github.com/jaoafa/jaoweb4/blob/2b337c1a15385454f2aa6f5c07f6af95d1d680f9/.github/workflows/publish.yml#L18
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
# Triggers the workflow on pull request event, but only for pull request opened or pull request labeled with "π’ deploy preview" (from forked repo)
# pull_request is not allowed to use secrets, so we use pull_request_target instead (in forked repos)
pull_request_target:
types:
- opened
# When a labeled 'π’ deploy preview' pull request from forked repo, it will be deploy to Cloudflare Pages
- labeled
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
permissions:
# default contents: read & write (in forked repos, only read)
contents: write
# default deployments: read & write (in forked repos, only read)
deployments: write
# default pull-requests: read & write (in forked repos, only read)
pull-requests: write
jobs:
publish:
runs-on: ubuntu-latest
name: Publish to Cloudflare Pages
if: ${{
github.event_name == 'push' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false) ||
(github.event_name == 'pull_request_target' &&
github.event.action == 'labeled' &&
github.event.pull_request.head.repo.fork == true &&
contains(github.event.label.name, 'π’ deploy preview'))
}}
# Cancel previous runs that are not completed yet
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref }}
cancel-in-progress: true
timeout-minutes: 10
steps:
# https://github.com/cloudflare/pages-action/issues/16#issuecomment-1398478711
- name: Comment deploy start
if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' }}
uses: mshick/add-pr-comment@v2
with:
message-id: cloudflare-deploy
message: |
### <span aria-hidden="true">π§</span> Deploy Preview building...
| Name | Link |
|---------------------------------|------------------------|
|<span aria-hidden="true">π¨</span> Latest commit | ${{ github.sha }} |
|<span aria-hidden="true">π</span> Latest deploy log | ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js 18.x
uses: actions/setup-node@v4
with:
node-version: 18.x
- run: yarn install --frozen-lockfile
- run: yarn build
- name: Publish to Cloudflare Pages
id: cloudflare
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: 'unownhash'
directory: out
wranglerVersion: '3'
- name: Comment deploy url
if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' }}
uses: mshick/add-pr-comment@v2
with:
message-id: cloudflare-deploy
message: |
### <span aria-hidden="true">β
</span> Deploy Preview ready!
| Name | Link |
|---------------------------------|------------------------|
|<span aria-hidden="true">π¨</span> Latest commit | ${{ github.sha }} |
|<span aria-hidden="true">π</span> Latest deploy log | ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
|<span aria-hidden="true">π</span> Deploy Preview Url | [${{ steps.cloudflare.outputs.url }}](${{ steps.cloudflare.outputs.url }}) |
|<span aria-hidden="true">π³</span> Environment | ${{ steps.cloudflare.outputs.environment }} |
- name: Remove label
if: ${{ github.event_name == 'pull_request_target' && contains(github.event.label.name, 'π’ deploy preview') }}
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: ['π’ deploy preview']
})
# Comment on PR from the fork
# comment:
# name: Comment
# runs-on: ubuntu-latest
# # pull_request_target opened event from forked repo
# if: ${{
# github.event_name == 'pull_request_target' &&
# github.event.action == 'opened' &&
# github.event.pull_request.head.repo.fork == true
# }}
# steps:
# - name: Create PR comment
# run: |
# cat << EOF > comment.md
# # β οΈ Deployment requires \`π’ deploy preview\` label
# This repository is a forked repository.
# For security reasons, deployments from forked repositories do not occur automatically.
# To request a deployment, add the \`π’ deploy preview\` label to this pull request.
# (Only some members can add labels)
# EOF
# gh pr comment ${{ github.event.number }} -R ${{ github.repository }} -F comment.md
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}