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