Merge pull request #231 from urbanairship/release-workflow-update #124
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: Release | |
on: | |
push: | |
tags: | |
- "[0-9]+.[0-9]+.[0-9]+*" | |
workflow_dispatch: | |
inputs: | |
dry_run: | |
description: 'Dry run (no actual publish)' | |
required: false | |
type: boolean | |
default: false | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_15.4.app/Contents/Developer | |
FLUTTER_VERSION: 3.24.3 | |
JAVA_VERSION: "17.x" | |
JAVA_DISTRIBUTION: 'zulu' | |
jobs: | |
ci: | |
runs-on: macos-14-xlarge | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
java-version: ${{ env.JAVA_VERSION }} | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
flutter-version: ${{env.FLUTTER_VERSION}} | |
- name: Run CI | |
run: bash ./scripts/run_ci_tasks.sh | |
release-plugin: | |
runs-on: ubuntu-latest | |
needs: [ ci ] | |
permissions: | |
id-token: write # Required for authentication using OIDC | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get the version | |
id: get_version | |
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT | |
- name: Get the release notes | |
id: get_release_notes | |
env: | |
VERSION: ${{ steps.get_version.outputs.VERSION }} | |
run: | | |
delimiter="$(openssl rand -hex 8)" | |
{ | |
echo "NOTES<<${delimiter}" | |
awk "/## Version $VERSION/{flag=1;next}/## Version/{flag=0}flag" CHANGELOG.md | |
echo ${delimiter} | |
} >> $GITHUB_OUTPUT | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Flutter action | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
- run: flutter pub get | |
- name: Publish to pub.dev | |
if: ${{ !inputs.dry_run }} | |
uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 | |
- name: Dry Run Publish to pub.dev | |
if: ${{ inputs.dry_run }} | |
uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 | |
with: | |
dry-run: true | |
- name: Github Release | |
if: ${{ !inputs.dry_run }} | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.get_version.outputs.VERSION }} | |
release_name: ${{ steps.get_version.outputs.VERSION }} | |
body: ${{ steps.get_release_notes.outputs.NOTES }} | |
draft: false | |
prerelease: false | |
- name: Slack Notification | |
uses: homoluctus/slatify@master | |
if: failure() | |
with: | |
type: ${{ job.status }} | |
job_name: "Failed to release Flutter :(" | |
url: ${{ secrets.MOBILE_SLACK_WEBHOOK }} | |
release-docs: | |
runs-on: macos-14-xlarge | |
needs: [ ci, release-plugin ] | |
if: ${{ !inputs.dry_run }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get the version | |
id: get_version | |
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT | |
- uses: actions/setup-java@v2 | |
with: | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Flutter action | |
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
- name: Setup GCP Auth | |
uses: google-github-actions/auth@v2 | |
with: | |
credentials_json: ${{ secrets.GCP_SA_KEY }} | |
- name: Set up Cloud SDK | |
uses: google-github-actions/setup-gcloud@v2 | |
- name: Build & Package docs | |
run: | | |
VERSION=${{ steps.get_version.outputs.VERSION }} | |
flutter pub get | |
bash ./scripts/docs.sh -gp $VERSION doc/api | |
- name: Upload docs | |
env: | |
VERSION: ${{ steps.get_version.outputs.VERSION }} | |
run: | | |
gsutil cp doc/$VERSION.tar.gz gs://ua-web-ci-prod-docs-transfer/libraries/flutter/$VERSION.tar.gz | |
- name: Slack Notification | |
uses: homoluctus/slatify@master | |
with: | |
type: ${{ job.status }} | |
job_name: ":raised_hands: Airship Flutter Plugin Released! :raised_hands:" | |
url: ${{ secrets.MOBILE_SLACK_WEBHOOK }} |