1# Generated from xtask::workflows::after_release
2# Rebuild with `cargo xtask workflows`.
3name: after_release
4env:
5 TAG_NAME: ${{ github.event.release.tag_name || inputs.tag_name }}
6 IS_PRERELEASE: ${{ github.event.release.prerelease || inputs.prerelease }}
7on:
8 release:
9 types:
10 - published
11 workflow_dispatch:
12 inputs:
13 tag_name:
14 description: tag_name
15 required: true
16 type: string
17 prerelease:
18 description: prerelease
19 required: true
20 type: boolean
21 body:
22 description: body
23 type: string
24 default: ''
25jobs:
26 rebuild_releases_page:
27 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
28 runs-on: namespace-profile-2x4-ubuntu-2404
29 steps:
30 - name: after_release::rebuild_releases_page::refresh_cloud_releases
31 run: curl -fX POST "https://cloud.zed.dev/releases/refresh?expect_tag=$TAG_NAME"
32 - name: steps::checkout_repo
33 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
34 with:
35 clean: false
36 - name: after_release::rebuild_releases_page::redeploy_zed_dev
37 run: ./script/redeploy-vercel
38 env:
39 VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
40 deploy_docs:
41 if: github.repository_owner == 'zed-industries'
42 permissions:
43 contents: read
44 uses: zed-industries/zed/.github/workflows/deploy_docs.yml@main
45 secrets:
46 DOCS_AMPLITUDE_API_KEY: ${{ secrets.DOCS_AMPLITUDE_API_KEY }}
47 CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
48 CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
49 with:
50 channel: ${{ (github.event.release.prerelease || inputs.prerelease) && 'preview' || 'stable' }}
51 checkout_ref: ${{ github.event.release.tag_name || inputs.tag_name }}
52 post_to_discord:
53 needs:
54 - rebuild_releases_page
55 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
56 runs-on: namespace-profile-2x4-ubuntu-2404
57 steps:
58 - id: get-release-url
59 name: after_release::post_to_discord::get_release_url
60 run: |
61 if [ "$IS_PRERELEASE" == "true" ]; then
62 URL="https://zed.dev/releases/preview"
63 else
64 URL="https://zed.dev/releases/stable"
65 fi
66
67 echo "URL=$URL" >> "$GITHUB_OUTPUT"
68 - id: get-content
69 name: after_release::post_to_discord::get_content
70 uses: 2428392/gh-truncate-string-action@b3ff790d21cf42af3ca7579146eedb93c8fb0757
71 with:
72 stringToTruncate: |
73 📣 Zed [${{ env.TAG_NAME }}](<${{ steps.get-release-url.outputs.URL }}>) was just released!
74
75 ${{ github.event.release.body || inputs.body }}
76 maxLength: 2000
77 truncationSymbol: '...'
78 - name: after_release::post_to_discord::discord_webhook_action
79 uses: tsickert/discord-webhook@c840d45a03a323fbc3f7507ac7769dbd91bfb164
80 with:
81 webhook-url: ${{ secrets.DISCORD_WEBHOOK_RELEASE_NOTES }}
82 content: ${{ steps.get-content.outputs.string }}
83 publish_winget:
84 runs-on: self-32vcpu-windows-2022
85 steps:
86 - name: after_release::publish_winget::sync_winget_pkgs_fork
87 run: |
88 $headers = @{
89 "Authorization" = "Bearer $env:WINGET_TOKEN"
90 "Accept" = "application/vnd.github+json"
91 "X-GitHub-Api-Version" = "2022-11-28"
92 }
93 $body = @{ branch = "master" } | ConvertTo-Json
94 $uri = "https://api.github.com/repos/$env:GITHUB_REPOSITORY_OWNER/winget-pkgs/merge-upstream"
95 try {
96 Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body -ContentType "application/json"
97 Write-Host "Successfully synced winget-pkgs fork"
98 } catch {
99 Write-Host "Fork sync response: $_"
100 Write-Host "Continuing anyway - fork may already be up to date"
101 }
102 shell: pwsh
103 env:
104 WINGET_TOKEN: ${{ secrets.WINGET_TOKEN }}
105 - id: set-package-name
106 name: after_release::publish_winget::set_package_name
107 run: |
108 if ($env:IS_PRERELEASE -eq "true") {
109 $PACKAGE_NAME = "ZedIndustries.Zed.Preview"
110 } else {
111 $PACKAGE_NAME = "ZedIndustries.Zed"
112 }
113
114 echo "PACKAGE_NAME=$PACKAGE_NAME" >> $env:GITHUB_OUTPUT
115 shell: pwsh
116 - name: after_release::publish_winget::winget_releaser
117 uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f
118 with:
119 identifier: ${{ steps.set-package-name.outputs.PACKAGE_NAME }}
120 release-tag: ${{ env.TAG_NAME }}
121 max-versions-to-keep: 5
122 token: ${{ secrets.WINGET_TOKEN }}
123 create_sentry_release:
124 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
125 runs-on: namespace-profile-2x4-ubuntu-2404
126 steps:
127 - name: steps::checkout_repo
128 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
129 with:
130 clean: false
131 - name: release::create_sentry_release
132 uses: getsentry/action-release@526942b68292201ac6bbb99b9a0747d4abee354c
133 with:
134 environment: production
135 env:
136 SENTRY_ORG: zed-dev
137 SENTRY_PROJECT: zed
138 SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
139 notify_on_failure:
140 needs:
141 - rebuild_releases_page
142 - post_to_discord
143 - publish_winget
144 - create_sentry_release
145 - deploy_docs
146 if: failure()
147 runs-on: namespace-profile-2x4-ubuntu-2404
148 steps:
149 - name: release::send_slack_message
150 run: 'curl -X POST -H ''Content-type: application/json'' --data "$(jq -n --arg text "$SLACK_MESSAGE" ''{"text": $text}'')" "$SLACK_WEBHOOK"'
151 env:
152 SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_WORKFLOW_FAILURES }}
153 SLACK_MESSAGE: '❌ ${{ github.workflow }} failed: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
154defaults:
155 run:
156 shell: bash -euxo pipefail {0}