-
-
Notifications
You must be signed in to change notification settings - Fork 109
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use fastlane for stable releases, too
This uses our new mail2webhook python script installed on the mailserver to trigger a workflow posting release information once the iOS build reaches the appstore.
- Loading branch information
1 parent
7833bc2
commit 4a9acb7
Showing
3 changed files
with
176 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
name: Publish release | ||
on: | ||
repository_dispatch: | ||
types: [distribution] | ||
jobs: | ||
extractChangelog: | ||
runs-on: self-hosted | ||
outputs: | ||
release-buildNumber: ${{ steps.releasenotes.outputs.buildNumber }} | ||
release-tag: ${{ steps.releasenotes.outputs.tag }} | ||
release-version: ${{ steps.releasenotes.outputs.version }} | ||
release-name: ${{ steps.releasenotes.outputs.name }} | ||
release-notes: ${{ steps.releasenotes.outputs.notes }} | ||
release-notes_ios: ${{ steps.releasenotes.outputs.notes_ios }} | ||
release-notes_macos: ${{ steps.releasenotes.outputs.notes_macos }} | ||
# create release only if the ios app made it to the appstore and ignore the macos appstore state | ||
if: github.event.client_payload.Platform == 'iOS' | ||
steps: | ||
# - run: | | ||
# echo ${{ github.event.client_payload.AppName }} | ||
# echo ${{ github.event.client_payload.Platform }} | ||
# echo ${{ github.event.client_payload.AppVersionNumber }} | ||
- name: Load release info | ||
id: releasenotes | ||
run: | | ||
buildNumber="$(fastlane run app_store_build_number api_key_path:"/Users/ci/appstoreconnect/key.json" team_id:"S8D843U34Y" app_identifier:"G7YU7X7KRJ.SworIM" live:false version:"${{ github.event.client_payload.AppVersionNumber }}" 2>&1 | tee /dev/stderr | grep Result | sed -E 's/^.*Result: ([0-9]+).*$/\1/g')" | ||
mkdir -p /Users/ci/releases | ||
OUTPUT_FILE="/Users/ci/releases/$buildNumber.output" | ||
touch "$OUTPUT_FILE" | ||
cat "$OUTPUT_FILE" >> "$GITHUB_OUTPUT" | ||
PromoteDraftRelease: | ||
name: Promote draft release to live release | ||
runs-on: ubuntu-latest | ||
needs: [extractChangelog] | ||
steps: | ||
- name: Promote draft release to live release | ||
run: | | ||
echo "ID: ${{ steps.releasenotes.outputs.releaseID }}" | ||
curl -L \ | ||
-X PATCH \ | ||
-H "Accept: application/vnd.github+json" \ | ||
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | ||
-H "X-GitHub-Api-Version: 2022-11-28" \ | ||
"https://api.github.com/repos/${{ github.repository }}/releases/${{ steps.draftrelease.outputs.id }}" \ | ||
-d '{"draft": false, "prerelease": false, "make_latest": true}' | ||
# notifyMuc: | ||
# name: Notify support MUC about new stable release | ||
# runs-on: ubuntu-latest | ||
# needs: [extractChangelog] | ||
# steps: | ||
# - name: Notify support MUC | ||
# uses: monal-im/xmpp-notifier@master | ||
# with: # Set the secrets as inputs | ||
# jid: ${{ secrets.BOT_JID }} | ||
# password: ${{ secrets.BOT_PASSWORD }} | ||
# server_host: ${{ secrets.BOT_SERVER }} | ||
# recipient: [email protected] | ||
# recipient_is_room: true | ||
# bot_alias: "Monal Release Bot" | ||
# message: | | ||
# ${{ needs.extractChangelog.outputs.release-name }} was released: | ||
# ${{ needs.extractChangelog.outputs.release-notes }} | ||
|
||
notifyMastodon: | ||
name: Post release info on mastodon | ||
runs-on: ubuntu-latest | ||
needs: [extractChangelog] | ||
steps: | ||
- name: Patch changelog length | ||
id: changelog | ||
env: | ||
NOTES: ${{ needs.extractChangelog.outputs.release-notes }} | ||
run: | | ||
if [ "${#NOTES}" -gt 400 ]; then | ||
NOTES="To see the complete list of bugfixes and improvements, check our releases page: https://github.com/monal-im/Monal/releases/tag/${{ needs.extractChangelog.outputs.release-tag }}" | ||
fi | ||
echo "notes<<__EOF__" | tee /dev/stderr >> "$GITHUB_OUTPUT" | ||
echo "$NOTES" >> "$GITHUB_OUTPUT" | ||
echo "__EOF__" | tee /dev/stderr >> "$GITHUB_OUTPUT" | ||
- name: Post release info on mastodon | ||
id: toot | ||
uses: cbrgm/[email protected] | ||
with: | ||
access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} | ||
url: ${{ secrets.MASTODON_URL }} | ||
|
||
message: "${{ needs.extractChangelog.outputs.release-name }} released.\n\n${{ steps.changelog.outputs.notes }}\n\n#xmpp #ios #macos" | ||
visibility: "public" | ||
language: "en" | ||
- name: Get toot information | ||
run: | | ||
echo "Toot ID: ${{ steps.toot.outputs.id }}" | ||
echo "Toot URL: ${{ steps.toot.outputs.url }}" | ||
echo "Scheduled at: ${{ steps.toot.outputs.scheduled_at }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters