pro-1.1.1+67~thanhnvt #322
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: Bubble Princess | |
on: | |
repository_dispatch: | |
types: | |
- ppap | |
- dev-* | |
- stg-* | |
- pro-* | |
env: | |
NO_FLIPPER: "1" | |
LC_ALL: en_US.UTF-8 | |
LANG: en_US.UTF-8 | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
REF_NAME: ${{ github.event.client_payload.ref_name }} | |
TRIGGERING_ACTOR: ${{ github.event.client_payload.triggering_actor }} | |
MAIN_REPOSITORY: ${{ secrets.CUCU_REPOSITORY }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
TELEGRAM_GROUP_ID: ${{ vars.TELEGRAM_GROUP_ID }} | |
TELEGRAM_TOPIC_ID: ${{ vars.TELEGRAM_TOPIC_ID }} | |
API_KEY_JSON: ${{ secrets.API_KEY_JSON }} | |
PRO_API_KEY_JSON: ${{ secrets.PRO_API_KEY_JSON }} | |
PRO_PLAY_STORE_KEY_JSON: ${{ secrets.PRO_PLAY_STORE_KEY_JSON }} | |
RELEASE_KEYSTORE_BASE64: ${{ secrets.RELEASE_KEYSTORE_BASE64 }} | |
DYNAMIC_CONSTANTS_TS_PROD_BASE64: ${{ secrets.DYNAMIC_CONSTANTS_TS_PROD_BASE64 }} | |
PRO_GOOGLE_SERVICES_JSON: ${{ secrets.CUCU_PRO_GOOGLE_SERVICES_JSON }} | |
PRO_GOOGLESERVICE_INFO_PLIST: ${{ secrets.CUCU_PRO_GOOGLESERVICE_INFO_PLIST }} | |
SSH_PRIVATE_KEY_SDK_CORE_CLIENT: ${{ secrets.SSH_PRIVATE_KEY_SDK_CORE_CLIENT }} | |
FIREBASE_CLI_TOKEN: ${{ secrets.DEV_FIREBASE_CLI_TOKEN }} | |
PRO_FIREBASE_CLI_TOKEN: ${{ secrets.PRO_FIREBASE_CLI_TOKEN }} | |
jobs: | |
init: | |
name: Init | |
runs-on: macos-14 | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.value }} | |
message-information: ${{ steps.get-message-information.outputs.value }} | |
env: ${{ steps.set-env.outputs.value }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ secrets.GH_PAT }} | |
ref: ${{ github.event.client_payload.ref_name}} | |
- name: Set matrix | |
id: set-matrix | |
run: | | |
MATRIX="[{\"format\":\"IPA\",\"name\":\"macos-14\",\"platform\":\"IOS\"},{\"format\":\"APK\",\"name\":\"ubuntu-22.04\",\"platform\":\"ANDROID\"}]" | |
if [[ "$REF_NAME" =~ "pro" ]]; then | |
MATRIX="[{\"format\":\"IPA\",\"name\":\"macos-14\",\"platform\":\"IOS\"},{\"format\":\"APK\",\"name\":\"ubuntu-22.04\",\"platform\":\"ANDROID\"},{\"format\":\"AAB\",\"name\":\"ubuntu-22.04\",\"platform\":\"ANDROID\"}]" | |
fi | |
echo "value=$MATRIX" >> $GITHUB_OUTPUT | |
- name: Set env | |
id: set-env | |
run: | | |
ENV='dev' | |
if [[ "$REF_NAME" =~ "pro" ]]; then | |
ENV='prod' | |
elif [[ "$REF_NAME" =~ "stg" ]]; then | |
ENV='stg' | |
fi | |
echo "value=$ENV" >> $GITHUB_OUTPUT | |
- name: Generate message | |
id: get-message-information | |
run: | | |
source scripts/func/config.sh | |
echo "value=$(get_message_information)" >> "$GITHUB_OUTPUT" | |
timeout-minutes: 1 | |
- name: Log value | |
run: | | |
echo "tag-source: $REF_NAME" | |
echo "matrix: ${{ steps.set-matrix.outputs.value }}" | |
echo "env: ${{ steps.set-env.outputs.value }}" | |
- name: Send telegram message | |
if: vars.IS_SILENT != 'true' | |
uses: PacificPromise/macos-telegram-action@main | |
with: | |
type: topic | |
message: "🎬 - Start build: ${{ steps.get-message-information.outputs.value }}" | |
prepare: | |
name: Prepare ${{ matrix.platform }} | |
continue-on-error: true | |
needs: [init] | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- name: "macos-14" | |
platform: "IOS" | |
- name: "ubuntu-22.04" | |
platform: "ANDROID" | |
runs-on: ${{ matrix.name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ secrets.GH_PAT }} | |
ref: ${{ github.event.client_payload.ref_name}} | |
- name: Setup Node v18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: ".nvmrc" | |
- name: Unlock ssh agent | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY_SDK_CORE_CLIENT }} | |
- name: Run yarn install | |
if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
uses: borales/actions-yarn@v5 | |
with: | |
cmd: install | |
# NOTE: install libs | |
- name: Cache node_modules | |
id: cache-node-modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ matrix.platform }}-cache-node-modules-${{ hashFiles('yarn.lock') }} | |
- name: Send telegram message failure | |
if: ${{ failure() && vars.IS_SILENT != 'true' }} | |
uses: PacificPromise/macos-telegram-action@main | |
with: | |
type: topic | |
message: "💥 - Failure ${{ matrix.platform }}: ${{ needs.init.outputs.message-information }}" | |
deploy: | |
name: Deployment ${{ matrix.format }} | |
continue-on-error: true | |
strategy: | |
fail-fast: true | |
matrix: | |
include: ${{fromJson(needs.init.outputs.matrix)}} | |
runs-on: ${{ matrix.name }} | |
needs: [init, prepare] | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ secrets.GH_PAT }} | |
ref: ${{ github.event.client_payload.ref_name}} | |
# NOTE: setup environment | |
- name: Setup ruby 3.0.0 | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.0.0" | |
bundler-cache: true | |
- name: Setup Node v18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: ".nvmrc" | |
- name: Setup JDK 17 | |
if: matrix.platform == 'ANDROID' | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: "temurin" | |
cache: "gradle" | |
- name: Setup Android SDK | |
if: matrix.platform == 'ANDROID' | |
uses: android-actions/setup-android@v2 | |
- name: Setup Android NDK | |
uses: nttld/setup-ndk@v1 | |
if: matrix.platform == 'ANDROID' | |
with: | |
ndk-version: r26c | |
- name: Setup cocoapods | |
if: matrix.platform == 'IOS' | |
uses: maxim-lobanov/setup-cocoapods@v1 | |
with: | |
version: 1.14.3 | |
- name: Select Xcode | |
if: matrix.platform == 'IOS' | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: "15.3" | |
# NOTE: install libs | |
- name: Cache node_modules | |
id: cache-node-modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: ${{ matrix.platform }}-cache-node-modules-${{ hashFiles('yarn.lock') }} | |
# - name: Remove code-push | |
# if: needs.init.outputs.env == 'prod' | |
# shell: bash | |
# run: bash scripts/remove_code_push_config.sh && yarn remove react-native-code-push && cd .. | |
- name: Cache Pods | |
if: matrix.platform == 'IOS' | |
id: cache-pods | |
uses: actions/cache@v4 | |
with: | |
path: | | |
ios/Pods | |
ios/Podfile.lock | |
key: cache-pods-${{ hashFiles('yarn.lock') }} | |
- name: Pod install | |
if: ${{ (matrix.platform == 'IOS') && (steps.cache-pods.outputs.cache-hit != 'true') }} | |
working-directory: ios | |
run: bundle exec pod install | |
- name: show Podfile.lock | |
run: cat ios/Podfile.lock | |
- name: Cache Xcode build | |
uses: irgaly/xcode-cache@v1 | |
if: matrix.platform == 'IOS' | |
with: | |
key: xcode-cache-deriveddata-${{ needs.init.outputs.env }}-${{ hashFiles('yarn.lock') }} | |
restore-keys: xcode-cache-deriveddata-${{ needs.init.outputs.env }}- | |
# NOTE: load environment and file | |
- name: Load secret files | |
run: bash scripts/load_secret_file.sh | |
- name: Change version and build number | |
run: bash scripts/change_version_and_build_number.sh | |
- name: Config environment | |
run: bash scripts/load_build_configure_${{ needs.init.outputs.env }}.sh | |
- name: Generate launcher icon | |
uses: borales/actions-yarn@v5 | |
with: | |
cmd: appicon:create | |
- name: Install certificate and provision | |
if: matrix.platform == 'IOS' | |
run: bash scripts/install_cert_and_provision.sh | |
- name: Link Node (/usr/local/bin/node) | |
if: matrix.platform == 'IOS' | |
run: ln -s $(command -v node) /usr/local/bin/node | |
# NOTE: start build | |
- name: Build IPA | |
if: matrix.format == 'IPA' | |
uses: maierj/[email protected] | |
with: | |
lane: "ios build_ipa_${{ needs.init.outputs.env }}" | |
- name: Build APK | |
if: matrix.format == 'APK' | |
uses: maierj/[email protected] | |
with: | |
lane: "android build_apk_${{ needs.init.outputs.env }}" | |
- name: Build AAB | |
if: matrix.format == 'AAB' | |
uses: maierj/[email protected] | |
with: | |
lane: "android build_aab_prod" | |
# NOTE: deploy | |
- name: Deploy ipa | |
if: matrix.format == 'IPA' | |
uses: maierj/[email protected] | |
with: | |
lane: ios deploy_ipa_${{ needs.init.outputs.env }} | |
- name: Deploy APK to firebase | |
if: matrix.format == 'APK' | |
uses: maierj/[email protected] | |
with: | |
lane: android deploy_apk_${{ needs.init.outputs.env }} | |
- name: Deploy AAB to playstore | |
if: matrix.format == 'AAB' | |
uses: maierj/[email protected] | |
with: | |
lane: android deploy_aab_prod | |
- name: Send telegram message | |
if: vars.IS_SILENT != 'true' | |
uses: PacificPromise/macos-telegram-action@main | |
with: | |
type: topic | |
message: "✅ - Success ${{ matrix.format }}: ${{ needs.init.outputs.message-information }}" | |
- name: Send telegram message failure | |
if: ${{ failure() && vars.IS_SILENT != 'true' }} | |
uses: PacificPromise/macos-telegram-action@main | |
with: | |
type: topic | |
message: "💥 - Failure ${{ matrix.format }}: ${{ needs.init.outputs.message-information }}" | |