Skip to content

monal_release

monal_release #21

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" | tee /dev/stderr >> "$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 }}"