Add automatic annotations for mixpanel

Joseph T Lyons created

Change summary

.github/workflows/release_actions.yml    | 11 +++++++++
script/mixpanel_release/main.py          | 30 ++++++++++++++++++++++++++
script/mixpanel_release/requirements.txt |  1 
3 files changed, 42 insertions(+)

Detailed changes

.github/workflows/release_actions.yml 🔗

@@ -21,3 +21,14 @@ jobs:
           
           ${{ github.event.release.body }}
           ```
+  mixpanel_release:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v4
+        with:
+          python-version: "3.10.5"
+          architecture: "x64"
+          cache: "pip"
+      - run: pip install -r script/mixpanel_release/requirements.txt
+      - run: python script/mixpanel_release/main.py ${{ github.event.release.tag_name }} ${{ secrets.MIXPANEL_PROJECT_ID }} ${{ secrets.MIXPANEL_SERVICE_ACCOUNT_USERNAME }} ${{ secrets.MIXPANEL_SERVICE_ACCOUNT_SECRET }}

script/mixpanel_release/main.py 🔗

@@ -0,0 +1,30 @@
+import datetime
+import sys
+import requests
+
+def main():
+    version = sys.argv[1]
+    version = version.removeprefix("v")
+    project_id = sys.argv[2]
+    account_username = sys.argv[3]
+    account_secret = sys.argv[4]
+    
+    current_datetime = datetime.datetime.now(datetime.timezone.utc) 
+    current_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
+    
+    url = f"https://mixpanel.com/api/app/projects/{project_id}/annotations"
+    
+    payload = {
+        "date": current_datetime,
+        "description": version
+    }
+    
+    response = requests.post(
+        url, 
+        auth=(account_username, account_secret), 
+        json=payload
+    )
+
+
+if __name__ == "__main__":
+    main()