-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (118 loc) · 4.09 KB
/
worker.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
name: Cloudflare worker
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
schedule:
- cron: "0 0 * * SUN"
permissions: {}
defaults:
run:
shell: bash
jobs:
test-worker:
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: read # for checkout
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sparse-checkout: |
mise.toml
tasks.toml
tasks/*
worker/*
sparse-checkout-cone-mode: false
persist-credentials: false
- name: Install mise
uses: jdx/mise-action@5083fe46898c414b2475087cc79da59e7da859e8 # v2.1.11
with:
version: 2025.1.4
cache_save: ${{ github.ref_name == 'main' }}
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Run tests
run: mise run worker:test
deploy-worker:
needs:
- test-worker
# skip for main branch as Cloudflare workers builds will deploy automatically
if: github.event_name != 'push'
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: read # for checkout
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sparse-checkout: |
mise.toml
tasks.toml
tasks/*
worker/*
sparse-checkout-cone-mode: false
persist-credentials: false
# set fetch-depth to 2 for pull requests to get the head commit, not only the merge commit
fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 1 }}
- name: Install mise
uses: jdx/mise-action@5083fe46898c414b2475087cc79da59e7da859e8 # v2.1.11
with:
version: 2025.1.4
cache_save: ${{ github.ref_name == 'main' }}
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Get Wrangler args
id: wrangler-args
run: |
args=$(mise run worker:wrangler-args)
echo "args=${args}" >> "${GITHUB_OUTPUT}"
- name: Get Commit SHA and Message
id: commit
run: |
sha=${{ github.event.pull_request.head.sha || github.sha }}
short_sha=$(git rev-parse --short "${sha}")
message=$(git log --format=%B --max-count=1 "${sha}")
echo "short_sha=${short_sha}" >> "${GITHUB_OUTPUT}"
echo "message=${message}" >> "${GITHUB_OUTPUT}"
- name: Upload a Version of Cloudflare Workers with Wrangler
id: deploy
uses: cloudflare/wrangler-action@6d58852c35a27e6034745c5d0bc373d739014f7f # v3.13.0
with:
workingDirectory: worker
# tag length is limited to 25 characters
command: >-
versions upload --tag ${{ steps.commit.outputs.short_sha }}
--message "${{ steps.commit.outputs.message }}"
${{ steps.wrangler-args.outputs.args }}
apiToken: ${{ secrets.CLOUDFLARE_WORKERS_API_TOKEN }}
accountId: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
- name: Generate Job Summary
run: |
worker_name=$(echo '${{ steps.deploy.outputs.command-output }}' \
| grep --only-matching --perl-regexp '^Uploaded \K[^ ]+')
version_id=$(echo '${{ steps.deploy.outputs.command-output }}' \
| grep --only-matching --perl-regexp '^Worker Version ID: \K.+')
preview_url=$(echo '${{ steps.deploy.outputs.command-output }}' \
| grep --only-matching --perl-regexp '^Version Preview URL: \K.+')
echo "# ${worker_name}
- Version ID: ${version_id}
- Preview URL: ${preview_url}" >> "${GITHUB_STEP_SUMMARY}"
actions-timeline:
needs:
- deploy-worker
if: ${{ !cancelled() }}
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions:
actions: read # for actions-timeline
steps:
- name: actions-timeline
# cspell:ignore kesin
uses: Kesin11/actions-timeline@3046833d9aacfd7745c5264b7f3af851c3e2a619 # v2.2.1