-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
136 lines (118 loc) · 5.3 KB
/
Copy pathtracker-script-update.yml
File metadata and controls
136 lines (118 loc) · 5.3 KB
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
name: "Tracker script update"
on:
pull_request:
paths:
- 'tracker/src/**'
- 'tracker/package.json'
- 'tracker/package-lock.json'
jobs:
tracker-script-update:
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
pull-requests: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.PLAUSIBLE_BOT_GITHUB_TOKEN }}
fetch-depth: 1
- name: Checkout master for comparison
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: master
path: master-branch
- name: Install jq and clickhouse-local
run: |
curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' \
| sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/clickhouse-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/clickhouse-archive-keyring.gpg] https://packages.clickhouse.com/deb stable main" \
| sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y jq clickhouse-server
- name: Compare and increment tracker_script_version
id: increment
run: |
cd tracker
# Get current version from PR branch
PR_VERSION=$(jq '.tracker_script_version' package.json)
# Get version from master, default to 0 if not present
MASTER_VERSION=$(jq '.tracker_script_version // 0' ../master-branch/tracker/package.json)
echo "PR tracker_script_version: $PR_VERSION"
echo "Master tracker_script_version: $MASTER_VERSION"
# Calculate new version
NEW_VERSION=$((PR_VERSION + 1))
# Check version conditions
if [ $PR_VERSION -lt $MASTER_VERSION ]; then
echo "::error::PR tracker tracker_script_version ($PR_VERSION) is less than master ($MASTER_VERSION) and cannot be incremented."
echo "::error::Rebase or merge master into your PR to fix this."
exit 1
elif [ $NEW_VERSION -eq $((MASTER_VERSION + 1)) ]; then
echo "Incrementing version from $PR_VERSION to $NEW_VERSION"
jq ".tracker_script_version = $NEW_VERSION" package.json > package.json.tmp
mv package.json.tmp package.json
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "changed=true" >> $GITHUB_OUTPUT
else
echo "Already incremented tracker_script_version in PR, skipping."
echo "version=$PR_VERSION" >> $GITHUB_OUTPUT
echo "changed=false" >> $GITHUB_OUTPUT
fi
- name: Commit and push changes
uses: EndBug/add-and-commit@290ea2c423ad77ca9c62ae0f5b224379612c0321
if: steps.increment.outputs.changed == 'true'
with:
message: 'chore: Bump tracker_script_version to ${{ steps.increment.outputs.version }}'
github_token: ${{ secrets.PLAUSIBLE_BOT_GITHUB_TOKEN }}
add: |
- tracker/package.json
- name: Compile tracker code
run: |
cd master-branch/tracker
npm install
node compile.js --suffix master
cp ../priv/tracker/js/plausible* ../../priv/tracker/js/
cd ../../tracker
npm install
node compile.js --suffix pr
- name: Run script size analyzer and set output
id: analyze
run: |
cd tracker
OUT=$(node compiler/analyze-sizes.js --baselineSuffix master --currentSuffix pr)
# Set multiline output
echo "sizes<<EOF" >> $GITHUB_OUTPUT
echo "$OUT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Comment script size report on PR
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
with:
message: |
${{ steps.analyze.outputs.sizes }}
comment-tag: size-report
- name: Check PR has tracker release label set
if: >-
${{ !(
contains(github.event.pull_request.labels.*.name, 'tracker-release: patch') ||
contains(github.event.pull_request.labels.*.name, 'tracker-release: minor') ||
contains(github.event.pull_request.labels.*.name, 'tracker-release: major') ||
contains(github.event.pull_request.labels.*.name, 'tracker-release: none') ) }}
run: |
echo "::error::PR changes tracker script but does not have a 'tracker release:' label. Please add one."
exit 1
- name: Get changed files
id: changelog_changed
uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96
with:
files: |
tracker/npm_package/CHANGELOG.md
- name: Error if PR no tracker CHANGELOG.md updates
if: >-
${{ (
steps.changelog_changed.outputs.any_changed == 'false' &&
!contains(github.event.pull_request.labels.*.name, 'tracker-release: none') ) }}
run: |
echo "::error::PR changes tracker script but does not have a tracker NPM package CHANGELOG.md update."
exit 1