stg-2.0.5+52~tamvo0610 #59
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: Apple Pen | |
on: | |
repository_dispatch: | |
types: | |
- ppap | |
- stg-* | |
- pro-* | |
env: | |
NO_FLIPPER: 1 | |
LC_ALL: en_US.UTF-8 | |
LANG: en_US.UTF-8 | |
GH_PAT: ${{secrets.GH_PAT}} | |
MAIN_REPOSITORY: ${{secrets.MAIN_REPOSITORY}} | |
# BUILD ENVIRONMENT FILE | |
API_KEY_JSON: ${{ secrets.API_KEY_JSON }} | |
FIREBASE_CLI_TOKEN: ${{secrets.FIREBASE_CLI_TOKEN}} | |
PRO_ENV_BASE64: ${{ secrets.PRO_ENV_BASE64 }} | |
PRO_RELEASE_KEYSTORE_BASE64: ${{ secrets.PRO_RELEASE_KEYSTORE_BASE64 }} | |
PRO_GOOGLE_SERVICES_JSON: ${{ secrets.PRO_GOOGLE_SERVICES_JSON }} | |
PRO_GOOGLESERVICE_INFO_PLIST: ${{ secrets.PRO_GOOGLESERVICE_INFO_PLIST }} | |
# BUILD ENVIRONMENT VARIABLE | |
REF_NAME: ${{github.event.client_payload.ref_name}} | |
BUILD_ENV: ${{github.event.client_payload.build_env}} | |
BUILD_VERSION: ${{github.event.client_payload.build_version}} | |
BUILD_NUMBER: ${{github.event.client_payload.build_number}} | |
BUILD_ACTOR: ${{github.event.client_payload.build_actor}} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
# TELEGRAM | |
TELEGRAM_GROUP_ID: ${{secrets.TELEGRAM_GROUP_ID}} | |
TELEGRAM_TOPIC_ID: ${{secrets.TELEGRAM_TOPIC_ID}} | |
TELEGRAM_BOT_TOKEN: ${{secrets.TELEGRAM_BOT_TOKEN}} | |
BUILD_IPA_ENABLED: true | |
BUILD_APK_ENABLED: true | |
BUILD_AAB_ENABLED: ${{true && github.event.client_payload.build_env == 'pro'}} | |
defaults: | |
run: | |
shell: bash -leo pipefail {0} | |
jobs: | |
init: | |
name: Init Deployment | |
runs-on: macos-14 | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.value }} | |
# message-information: ${{ steps.get-message-information.outputs.value }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ env.GH_PAT }} | |
ref: ${{ env.REF_NAME}} | |
- name: Load Build Environment | |
id: set-env | |
run: bash scripts/load_build_environment.sh | |
- name: Set matrix | |
id: set-matrix | |
run: | | |
MATRIX="[{\"format\":\"IPA\",\"name\":\"macos-14\",\"platform\":\"IOS\"},{\"format\":\"APK\",\"name\":\"ubuntu-22.04\",\"platform\":\"ANDROID\"}]" | |
if [[ "$BUILD_VERSION_ENV" == "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: Send telegram message | |
# uses: ./.github/actions/send-telegram-message | |
# timeout-minutes: 1 | |
# with: | |
# APP_NAME: Liberty Exchange Customer | |
# MESSAGE_TITLE: Setup bản build mới... | |
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 }} | |
# if: matrix.node-version != '14.x' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ env.GH_PAT }} | |
ref: ${{ env.REF_NAME}} | |
- name: Setup Node Version | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- 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') }} | |
lookup-only: true | |
- name: Unlock ssh agent | |
uses: webfactory/ssh-agent@v0.9.0 | |
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 --network-concurrency 1 | |
deploy: | |
name: Deployment | |
continue-on-error: true | |
needs: [init, prepare] | |
# variables: | |
# BUILD_ENV: ${{github.event.client_payload.build_env}} | |
# env: | |
# BUILD_ENV: ${{github.event.client_payload.build_env}} | |
strategy: | |
fail-fast: true | |
matrix: | |
include: ${{ fromJson(needs.init.outputs.matrix) }} | |
# name: ["macos-14", "ubuntu-22.04", "ubuntu-22.04"] | |
# format: | |
# - "IPA" | |
# - "APK" | |
# - "AAB" | |
# build_env: | |
# - "stg" | |
# exclude: | |
# # - build_enabled: false | |
# - format: "AAB" | |
# build_env: "stg" | |
# include: | |
# - format: "IPA" | |
# name: "macos-14" | |
# platform: "IOS" | |
# build_cmd: "ios build_ios" | |
# deploy_cmd: "ios deploy_ios" | |
# - format: "APK" | |
# name: "ubuntu-22.04" | |
# platform: "ANDROID" | |
# build_cmd: "android build_apk" | |
# deploy_cmd: "android distribute_firebase_apk" | |
# - format: "AAB" | |
# name: "ubuntu-22.04" | |
# platform: "ANDROID" | |
# build_cmd: "android build_aab" | |
# deploy_cmd: "android distribute_firebase_aab" | |
# include: | |
# - name: "macos-14" | |
# format: "IPA" | |
# platform: "IOS" | |
# build_env: ${{github.event.client_payload.build_env}} | |
# build_cmd: ios build_ios | |
# deploy_cmd: ios deploy_ios | |
# - name: "ubuntu-22.04" | |
# format: "APK" | |
# platform: "ANDROID" | |
# build_env: ${{github.event.client_payload.build_env}} | |
# build_cmd: android build_apk | |
# deploy_cmd: android distribute_firebase_apk | |
# - name: "ubuntu-22.04" | |
# format: "AAB" | |
# platform: "ANDROID" | |
# build_env: ${{github.event.client_payload.build_env}} | |
# build_cmd: android build_aab | |
# deploy_cmd: android distribute_firebase_aab | |
# condition: ${{ github.event.client_payload.build_env != 'stg' }} | |
runs-on: ${{ matrix.name }} | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.MAIN_REPOSITORY }} | |
token: ${{ env.GH_PAT }} | |
ref: ${{ env.REF_NAME}} | |
# NOTE: Setup Build 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: "18" | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
if: matrix.platform == 'ANDROID' | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
cache: "gradle" | |
- name: Setup Android SDK | |
if: matrix.platform == 'ANDROID' | |
uses: android-actions/setup-android@v3 | |
- 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.15.2 | |
- 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: 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: pod install | |
- name: Cache Xcode build | |
uses: irgaly/xcode-cache@v1 | |
if: matrix.platform == 'IOS' | |
with: | |
key: xcode-cache-deriveddata-${{env.BUILD_ENV}}-${{ hashFiles('yarn.lock') }} | |
restore-keys: xcode-cache-deriveddata-${{env.BUILD_ENV}}- | |
# NOTE: Load Environment Variable | |
- name: Load Build Environment | |
run: bash scripts/load_build_environment.sh | |
- name: Load Secret Files | |
run: bash scripts/load_secret_file.sh | |
- name: Config Environment | |
run: bash scripts/load_build_configuration | |
- name: Change Version And Build Number | |
run: bash scripts/load_build_version.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/load_cert_and_provision | |
- 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/fastlane-action@v3.1.0 | |
with: | |
lane: ios build_ios | |
- name: Build APK | |
if: matrix.format == 'APK' | |
uses: maierj/fastlane-action@v3.1.0 | |
with: | |
lane: android build_apk | |
- name: Build AAB | |
if: ${{(matrix.format == 'AAB') && ('${BUILD_VERSION_ENV}' == 'pro')}} | |
uses: maierj/fastlane-action@v3.1.0 | |
with: | |
lane: android build_aab | |
# NOTE: deploy | |
- name: Deploy ipa | |
if: matrix.format == 'IPA' | |
uses: maierj/fastlane-action@v3.1.0 | |
with: | |
lane: ios deploy_ios | |
- name: Deploy APK to firebase | |
if: matrix.format == 'APK' | |
uses: maierj/fastlane-action@v3.1.0 | |
with: | |
lane: android distribute_firebase_apk | |
# - name: Deploy AAB to playstore | |
# if: matrix.format == 'AAB' | |
# uses: maierj/fastlane-action@v3.1.0 | |
# with: | |
# lane: android upload_to_open_testing_play_store | |
# - 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 }}" | |
# after-deploy: | |
# needs: [deploy] | |
# name: After Deployment | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Checkout | |
# uses: actions/checkout@v4 | |
# with: | |
# repository: ${{ env.MAIN_REPOSITORY }} | |
# token: ${{ secrets.GH_PAT }} | |
# ref: ${{ github.event.client_payload.ref_name }} | |
# - name: Get environment full | |
# uses: dkershner6/switch-case-action@v1 | |
# id: get-environment | |
# with: | |
# default: "debug" | |
# conditionals-with-values: | | |
# ${{ contains(github.event.client_payload.ref_name, 'prd') }} => production | |
# ${{ contains(github.event.client_payload.ref_name, 'stg') }} => staging | |
# ${{ contains(github.event.client_payload.ref_name, 'dev') }} => development | |
# - name: Get version and build number | |
# id: get-version-sentry | |
# run: | | |
# source .github/scripts/utils.sh | |
# echo "value=$(get_sentry_version)" >> "$GITHUB_OUTPUT" | |
# timeout-minutes: 1 | |
# - name: Create Sentry release | |
# uses: getsentry/action-release@v1 | |
# if: ${{ steps.get-environment.outputs.value != 'debug' }} | |
# env: | |
# SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
# SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
# SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
# with: | |
# set_commits: skip | |
# environment: ${{ steps.get-environment.outputs.value }} | |
# version: ${{ steps.get-version-sentry.outputs.value }} |