-
Notifications
You must be signed in to change notification settings - Fork 77
150 lines (134 loc) · 6.24 KB
/
Copy pathposthog-upgrade.yml
File metadata and controls
150 lines (134 loc) · 6.24 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: "PostHog Upgrade"
on:
workflow_dispatch:
inputs:
package_name:
type: choice
description: "Package name to upgrade"
required: true
options:
- posthoganalytics
package_version:
description: "Package version to upgrade to"
required: true
type: string
permissions:
contents: read
jobs:
posthog-upgrade:
name: Upgrade PostHog package
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Get upgrader token
id: upgrader
uses: getsentry/action-github-app-token@5c1e90706fe007857338ac1bfbd7a4177db2f789 # v4.0.0
with:
app_id: ${{ secrets.GH_APP_POSTHOG_JS_UPGRADER_APP_ID }}
private_key: ${{ secrets.GH_APP_POSTHOG_JS_UPGRADER_PRIVATE_KEY }}
- name: Check out main repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: "PostHog/posthog"
token: ${{ steps.upgrader.outputs.token }}
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
version: "0.11.28"
- name: Install new package version in main repo
shell: bash
env:
RETRY_TIMES: 20
RETRY_WAIT_SECONDS: 5
PACKAGE_NAME: ${{ github.event.inputs.package_name }}
PACKAGE_VERSION: ${{ github.event.inputs.package_version }}
run: |
for i in $(seq 1 "$RETRY_TIMES"); do
# Retry because the PyPI index is eventually consistent.
if uv add --no-sync --refresh-package "$PACKAGE_NAME" "$PACKAGE_NAME==$PACKAGE_VERSION" && \
(cd services/llm-gateway && uv add --no-sync --refresh-package "$PACKAGE_NAME" "$PACKAGE_NAME>=$PACKAGE_VERSION"); then
break
else
if [ "$i" -eq "$RETRY_TIMES" ]; then
exit 1
fi
sleep "$RETRY_WAIT_SECONDS"
fi
done
sed -i "s/^posthoganalytics==.*/posthoganalytics==$PACKAGE_VERSION/" common/ingestion/acceptance_tests/requirements.txt
sed -i "s/^posthog>=.*/posthog>=$PACKAGE_VERSION/" tools/infra-scripts/clitools/requirements.txt
expected_files=(
pyproject.toml
uv.lock
services/llm-gateway/pyproject.toml
services/llm-gateway/uv.lock
common/ingestion/acceptance_tests/requirements.txt
tools/infra-scripts/clitools/requirements.txt
)
for file in "${expected_files[@]}"; do
if git diff --quiet -- "$file"; then
echo "Failed to update $file to $PACKAGE_VERSION" >&2
exit 1
fi
done
- name: Generate branch name
id: generate-branch-name
shell: bash
env:
PACKAGE_NAME: ${{ github.event.inputs.package_name }}
PACKAGE_VERSION: ${{ github.event.inputs.package_version }}
run: |
echo "branch_name=${PACKAGE_NAME}-${PACKAGE_VERSION}" >> "$GITHUB_OUTPUT"
- name: Create main repo pull request
id: main-repo-pr
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
env:
HUSKY: "0"
with:
token: ${{ steps.upgrader.outputs.token }}
# PostHog/posthog requires signed commits, so commit through the GitHub API.
sign-commits: true
commit-message: "chore(deps): update ${{ github.event.inputs.package_name }} to ${{ github.event.inputs.package_version }}"
branch: ${{ steps.generate-branch-name.outputs.branch_name }}
delete-branch: true
title: "chore(deps): update ${{ github.event.inputs.package_name }} to ${{ github.event.inputs.package_version }}"
body: |
## Changes
PostHog Python SDK version ${{ github.event.inputs.package_version }} has been released. This updates the `posthoganalytics` and `posthog` dependency declarations to the same SDK version.
[GitHub releases](https://github.com/PostHog/posthog-python/releases) • [`posthoganalytics` on PyPI](https://pypi.org/project/posthoganalytics/#history) • [`posthog` on PyPI](https://pypi.org/project/posthog/#history)
- name: Output pull request result
shell: bash
env:
PACKAGE_NAME: ${{ github.event.inputs.package_name }}
PACKAGE_VERSION: ${{ github.event.inputs.package_version }}
PR_URL: ${{ steps.main-repo-pr.outputs.pull-request-url }}
run: |
echo "PostHog pull request for $PACKAGE_NAME version $PACKAGE_VERSION ready: $PR_URL"
- name: Assign reviewers
env:
GH_TOKEN: ${{ steps.upgrader.outputs.token }}
PR_NUMBER: ${{ steps.main-repo-pr.outputs.pull-request-number }}
run: |
gh pr edit "$PR_NUMBER" --repo PostHog/posthog --add-reviewer PostHog/client-libraries-approvers --add-reviewer PostHog/team-client-libraries
# https://us.posthog.com/project/11213/functions/019ae9c0-03ee-0000-2f32-971f64be8ffe
- name: Send failure event to PostHog
if: ${{ failure() }}
continue-on-error: true
uses: PostHog/posthog-github-action@9a6a19d360820ab4d95ecc4a5a7564062c895f84 # v1.3.0
with:
posthog-token: "${{ secrets.POSTHOG_PROJECT_API_KEY }}"
event: "posthog-sdk-github-release-workflow-failure"
properties: >-
{
"commitSha": "${{ github.sha }}",
"jobStatus": "${{ job.status }}",
"ref": "${{ github.ref }}",
"repository": "PostHog/posthog",
"sdk": "posthog-python",
"jobName": "posthog-upgrade",
"packageName": "${{ github.event.inputs.package_name }}",
"packageVersion": "${{ github.event.inputs.package_version }}",
"actionUrl": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
"alertText": ":rotating_light: Failed to open the PostHog upgrade PR for posthoganalytics@${{ github.event.inputs.package_version }} :rotating_light:",
"alertContext": "The posthog-upgrade workflow failed before completion."
}