This repository has been archived by the owner on Nov 5, 2024. It is now read-only.
Automatic release: v2024.07.06 (181) (#3285) #104
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: Internal Release | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
internal_release: | |
if: | | |
contains(github.event.head_commit.message, 'Automatic release') | |
permissions: | |
contents: write | |
outputs: | |
github_release_url: ${{ steps.share_release_url_output.outputs.github_release_url }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout GIT | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Fetch all history for all branches and tags | |
- name: Setup Java SDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: '18' | |
- name: Setup Ruby (for Fastlane) | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
- name: Install Fastlane | |
run: bundle install | |
#---------------------------------------------------- | |
# Security | |
- name: Validate Gradle Wrapper checksum | |
uses: gradle/wrapper-validation-action@v3 | |
- name: Make Gradle Wrapper (gradlew) executable | |
run: chmod +x gradlew | |
#---------------------------------------------------- | |
# Optimization | |
- name: Enable Gradle Wrapper caching (optimization) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
#--------------------------------------------------- | |
# Decode Secrets for production build | |
- name: Create JKS for prod signing | |
run: | | |
echo "$SIGNING_KEYSTORE_JKS" > sign.jks.b64 | |
base64 -d -i sign.jks.b64 > sign.jks | |
env: | |
SIGNING_KEYSTORE_JKS: ${{ secrets.SIGNING_KEYSTORE }} | |
- name: Create Google Play Config file | |
run: | | |
echo "$PLAY_CONFIG_JSON" > play_config.json.b64 | |
base64 -d -i play_config.json.b64 > google-play-console-user.json | |
env: | |
PLAY_CONFIG_JSON: ${{ secrets.GOOGLE_PLAY_CONSOLE_JSON }} | |
#-------------------------------------------------------------------------------- | |
- name: Get version name and code from libs.versions.toml | |
id: get_version | |
run: | | |
VERSION_NAME=$(grep 'version-name =' gradle/libs.versions.toml | awk -F'=' '{print $2}' | tr -d ' "') | |
VERSION_CODE=$(grep 'version-code =' gradle/libs.versions.toml | awk -F'=' '{print $2}' | tr -d ' "') | |
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV | |
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV | |
- name: Create and push tag | |
env: | |
PAT_TOKEN: ${{ secrets.IVYWALLET_BOT_GITHUB_PAT_2 }} | |
run: | | |
TAG_NAME="v${{ env.VERSION_NAME }}-${{ env.VERSION_CODE }}" | |
git tag $TAG_NAME | |
git push https://x-access-token:${{ env.PAT_TOKEN }}@github.com/${{ github.repository }} $TAG_NAME | |
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV | |
# Fastlane: Build production .aab and release it to Internal Testing | |
- name: Build production App Bundle | |
run: bundle exec fastlane production_build | |
env: | |
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }} | |
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} | |
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }} | |
- name: Upload App Bundle to GitHub | |
uses: actions/upload-artifact@v4 | |
with: | |
name: app-release.aab | |
path: app/build/outputs/bundle/release/app-release.aab | |
- name: Release App Bundle to Google PlayStore Internal Testing | |
run: bundle exec fastlane internal_release | |
env: | |
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }} | |
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} | |
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }} | |
#-------------------------------------------------------------------------- | |
- name: Prepare changelog for GitHub Release | |
uses: Bullrich/generate-release-changelog@master | |
id: Changelog | |
env: | |
REPO: ${{ github.repository }} | |
- name: Create GitHub Release | |
if: always() # Execute even if the generation of changelog has failed | |
id: create_release | |
uses: actions/create-release@latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.TAG_NAME }} | |
release_name: Release ${{ env.TAG_NAME }} | |
body: | | |
${{ steps.Changelog.outputs.changelog }} | |
draft: false | |
prerelease: false | |
- name: Share GitHub Release URL as output | |
id: share_release_url_output | |
run: echo "github_release_url=steps.create_release.outputs.upload_url" >> "$GITHUB_OUTPUT" | |
upload_apk_and_announce: | |
runs-on: ubuntu-latest | |
needs: internal_release | |
steps: | |
- name: Checkout GIT | |
uses: actions/checkout@v4 | |
- name: Setup Java SDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'adopt' | |
java-version: '18' | |
- name: Make Gradle Wrapper (gradlew) executable | |
run: chmod +x gradlew | |
- name: Enable Gradle Wrapper caching (optimization) | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Build Demo APK | |
run: ./gradlew assembleDemo | |
- name: Upload APK to Github Actions | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Ivy-Wallet-Demo.apk | |
path: app/build/outputs/apk/demo/app-demo.apk | |
- name: Upload Demo APK to GitHub Release | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ needs.internal_release.outputs.github_release_url }} | |
asset_path: app/build/outputs/apk/demo/app-demo.apk | |
asset_name: Ivy-Wallet-Demo.apk | |
asset_content_type: application/vnd.android.package-archive | |
- name: Announce in Telegram group | |
run: | | |
RELEASE_TAG=$(echo ${GITHUB_REF} | sed 's/refs\/tags\///') | |
RELEASE_URL="https://github.com/${GITHUB_REPOSITORY}/releases/tag/${RELEASE_TAG}" | |
CAPTION=$'🔥 Ivy Wallet '"$RELEASE_TAG"$' release\n\n'"$RELEASE_URL" | |
curl -F "chat_id=-1001647280565" \ | |
-F "document=@app/build/outputs/apk/demo/app-demo.apk" \ | |
-F "reply_to_message_id=16118" \ | |
-F "caption=$CAPTION" \ | |
https://api.telegram.org/bot${{ secrets.BOTFATHER_TELEGRAM_BOT_TOKEN }}/sendDocument |