Skip to content

stg-2.0.5+52~tamvo0610 #59

stg-2.0.5+52~tamvo0610

stg-2.0.5+52~tamvo0610 #59

Workflow file for this run

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 }}