v0.0.3 #18
Workflow file for this run
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 Workflow | |
on: | |
release: | |
types: | |
- created | |
concurrency: | |
group: release_workflow | |
cancel-in-progress: true | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
jobs: | |
build_web: | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v2 | |
- run: cat .github/workflows/versions.env >> $GITHUB_ENV | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
cache: true | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get install nodejs -y | |
- name: Remove Emoji Font | |
run: | | |
rm -rf fonts/NotoEmoji | |
yq -i 'del( .flutter.fonts[] | select(.family == "NotoEmoji") )' pubspec.yaml | |
- run: flutter pub get | |
- name: Prepare web | |
run: ./scripts/prepare-web.sh | |
- name: Build Release Web | |
run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps | |
- name: Create archive | |
run: tar -czf pangeachat-web.tar.gz build/web/ | |
- name: Upload Web Build | |
uses: actions/upload-artifact@v2 | |
with: | |
name: Web Build | |
path: pangeachat-web.tar.gz | |
- name: Upload files for deploy stage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: web | |
path: build/web | |
- name: Upload to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: pangeachat-web.tar.gz | |
asset_name: pangeachat-web.tar.gz | |
asset_content_type: application/gzip | |
build_apk: | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v2 | |
- run: cat .github/workflows/versions.env >> $GITHUB_ENV | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: 'zulu' | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
cache: true | |
- name: Apply Google Services Patch | |
run: git apply ./scripts/enable-android-google-services.patch | |
- name: Remove Emoji Font | |
run: | | |
rm -rf fonts/NotoEmoji | |
yq -i 'del( .flutter.fonts[] | select(.family == "NotoEmoji") )' pubspec.yaml | |
- run: flutter pub get | |
- name: Prepare Android Release Build | |
env: | |
FDROID_KEY: ${{ secrets.FDROID_KEY }} | |
FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }} | |
PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }} | |
run: ./scripts/prepare-android-release.sh | |
- run: flutter build apk --release | |
- name: Upload to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: build/app/outputs/apk/release/app-release.apk | |
asset_name: fluffychat.apk | |
asset_content_type: application/vnd.android.package-archive | |
build_linux: | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v2 | |
- run: cat .github/workflows/versions.env >> $GITHUB_ENV | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
cache: true | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get install curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 libssl-dev -y | |
- run: flutter pub get | |
- run: flutter build linux --release --target-platform linux-x64 | |
- name: Create archive | |
run: tar -czf fluffychat-linux-x64.tar.gz -C build/linux/x64/release/bundle/ . | |
- name: Upload to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: fluffychat-linux-x64.tar.gz | |
asset_name: fluffychat-linux-x64.tar.gz | |
asset_content_type: application/gzip | |
deploy_playstore: | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v2 | |
- run: cat .github/workflows/versions.env >> $GITHUB_ENV | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: 'zulu' | |
- uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: ${{ env.FLUTTER_VERSION }} | |
cache: true | |
- name: Set up Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.3' | |
- name: Install Fastlane | |
run: gem install fastlane -NV | |
- name: Apply Google Services Patch | |
run: git apply ./scripts/enable-android-google-services.patch | |
- name: Remove Emoji Font | |
run: | | |
rm -rf fonts/NotoEmoji | |
yq -i 'del( .flutter.fonts[] | select(.family == "NotoEmoji") )' pubspec.yaml | |
- run: flutter pub get | |
- name: Prepare Android Release Build | |
env: | |
FDROID_KEY: ${{ secrets.FDROID_KEY }} | |
FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }} | |
PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }} | |
run: ./scripts/prepare-android-release.sh | |
- name: Build Android Release | |
run: flutter build appbundle --target-platform android-arm,android-arm64,android-x64 | |
- name: Get Tag Name | |
id: tag_name | |
run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})" | |
- name: Deploy Android Release | |
run: | | |
mkdir -p build/android | |
cp build/app/outputs/bundle/release/app-release.aab build/android/ | |
cd android | |
bundle install | |
bundle update fastlane | |
bundle exec fastlane deploy_internal_test | |
if [[ $GITHUB_REF_NAME == rc* ]]; then | |
bundle exec fastlane deploy_candidate | |
else | |
bundle exec fastlane deploy_release | |
fi | |
cd .. | |
deploy_web: | |
runs-on: ubuntu-latest | |
needs: build_web | |
environment: production | |
env: | |
WEBAPP_S3_BUCKET: ${{ vars.WEBAPP_S3_BUCKET }} | |
CF_DISTRIBUTION_ID: ${{ vars.CF_DISTRIBUTION_ID }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Download web | |
uses: actions/download-artifact@v3 | |
with: | |
name: web | |
path: build/web | |
- name: Set up AWS CLI | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_DEFAULT_REGION }} | |
- name: Copy files to the production website with the AWS CLI | |
run: | | |
aws s3 sync ./build/web s3://$WEBAPP_S3_BUCKET | |
- name: AWS CloudFront Invalidation | |
run: | | |
aws cloudfront create-invalidation --distribution-id $CF_DISTRIBUTION_ID --paths "/*" |