| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd |
| 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd |
| 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) |
| |
| |
| 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" |
|
|
| |
| NEW_VERSION=$((PR_VERSION + 1)) |
|
|
| |
| 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@a94899bca583c204427a224a7af87c02f9b325d5 |
| 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 |
| 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@22103cc46bda19c2b464ffe86db46df6922fd323 |
| 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 |
| |