monal_release #20
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
name: Publish release | |
on: | |
repository_dispatch: | |
types: [monal_release] | |
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 }} | |
release-id: ${{ steps.releasenotes.outputs.releaseID }} | |
# 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: ${{ needs.extractChangelog.outputs.release-id }}" | |
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/${{ needs.extractChangelog.outputs.release-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#Monal #ios #macos #xmpp #im #chat #messaging" | |
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 }}" |