Skip to content

Merge remote-tracking branch 'origin/develop' #102

Merge remote-tracking branch 'origin/develop'

Merge remote-tracking branch 'origin/develop' #102

Workflow file for this run

name: Deployment
on:
push:
branches:
- master
env:
BASE_URL_BACKEND: ${{ secrets.BASE_URL_BACKEND }}
BASE_URL_API: ${{ secrets.BASE_URL_API }}
BASE_URL_API_PREMIUM: ${{ secrets.BASE_URL_API_PREMIUM }}
API_KEY_PREMIUM: ${{ secrets.API_KEY_PREMIUM }}
ANDROID_KEY_STORE_PATH: ${{ secrets.ANDROID_KEY_STORE_PATH }}
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
RELEASE_ADVERTISEMENT_ID_GOOGLE: ${{ secrets.RELEASE_ADVERTISEMENT_ID_GOOGLE }}
DEBUG_ADVERTISEMENT_ID_GOOGLE: ${{ secrets.DEBUG_ADVERTISEMENT_ID_GOOGLE }}
RELEASE_ADVERTISEMENT_ID_HUAWEI: ${{ secrets.RELEASE_ADVERTISEMENT_ID_HUAWEI }}
DEBUG_ADVERTISEMENT_ID_HUAWEI: ${{ secrets.DEBUG_ADVERTISEMENT_ID_HUAWEI }}
GOOGLE_BANNER_AD_UNIT_ID_CALCULATOR_RELEASE: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_CALCULATOR_RELEASE }}
GOOGLE_BANNER_AD_UNIT_ID_SETTINGS_RELEASE: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_SETTINGS_RELEASE }}
GOOGLE_BANNER_AD_UNIT_ID_CURRENCIES_RELEASE: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_CURRENCIES_RELEASE }}
GOOGLE_INTERSTITIAL_AD_ID_RELEASE: ${{ secrets.GOOGLE_INTERSTITIAL_AD_ID_RELEASE }}
GOOGLE_REWARDED_AD_UNIT_ID_RELEASE: ${{ secrets.GOOGLE_REWARDED_AD_UNIT_ID_RELEASE }}
GOOGLE_BANNER_AD_UNIT_ID_CALCULATOR_DEBUG: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_CALCULATOR_DEBUG }}
GOOGLE_BANNER_AD_UNIT_ID_SETTINGS_DEBUG: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_SETTINGS_DEBUG }}
GOOGLE_BANNER_AD_UNIT_ID_CURRENCIES_DEBUG: ${{ secrets.GOOGLE_BANNER_AD_UNIT_ID_CURRENCIES_DEBUG }}
GOOGLE_INTERSTITIAL_AD_ID_DEBUG: ${{ secrets.GOOGLE_INTERSTITIAL_AD_ID_DEBUG }}
GOOGLE_REWARDED_AD_UNIT_ID_DEBUG: ${{ secrets.GOOGLE_REWARDED_AD_UNIT_ID_DEBUG }}
HUAWEI_BANNER_AD_UNIT_ID_CALCULATOR_RELEASE: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_CALCULATOR_RELEASE }}
HUAWEI_BANNER_AD_UNIT_ID_SETTINGS_RELEASE: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_SETTINGS_RELEASE }}
HUAWEI_BANNER_AD_UNIT_ID_CURRENCIES_RELEASE: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_CURRENCIES_RELEASE }}
HUAWEI_INTERSTITIAL_AD_ID_RELEASE: ${{ secrets.HUAWEI_INTERSTITIAL_AD_ID_RELEASE }}
HUAWEI_REWARDED_AD_UNIT_ID_RELEASE: ${{ secrets.HUAWEI_REWARDED_AD_UNIT_ID_RELEASE }}
HUAWEI_BANNER_AD_UNIT_ID_CALCULATOR_DEBUG: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_CALCULATOR_DEBUG }}
HUAWEI_BANNER_AD_UNIT_ID_SETTINGS_DEBUG: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_SETTINGS_DEBUG }}
HUAWEI_BANNER_AD_UNIT_ID_CURRENCIES_DEBUG: ${{ secrets.HUAWEI_BANNER_AD_UNIT_ID_CURRENCIES_DEBUG }}
HUAWEI_INTERSTITIAL_AD_ID_DEBUG: ${{ secrets.HUAWEI_INTERSTITIAL_AD_ID_DEBUG }}
HUAWEI_REWARDED_AD_UNIT_ID_DEBUG: ${{ secrets.HUAWEI_REWARDED_AD_UNIT_ID_DEBUG }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_KEY_CONTENT }}
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
IOS_RELEASE_FIREBASE_APP_ID: ${{ secrets.IOS_RELEASE_FIREBASE_APP_ID }}
IOS_DEBUG_FIREBASE_APP_ID: ${{ secrets.IOS_DEBUG_FIREBASE_APP_ID }}
FIREBASE_CLI_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }}
GIT_AUTHORIZATION: ${{ secrets.GIT_AUTHORIZATION }}
SECRET_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
MATCH_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 5
FASTLANE_XCODEBUILD_SETTINGS_RETRIES: 5
CI: true
jobs:
GenerateGradleArtifacts:
runs-on: ubuntu-22.04
outputs:
status: ${{ steps.status.outputs.status }}
steps:
- name: Setup Gradle Repo
uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88
- name: Adding secret files
uses: ./.github/actions/add-secret-files
with:
ANDROID_RELEASE_KEYSTORE_ASC: ${{ secrets.ANDROID_RELEASE_KEYSTORE_ASC }}
SECRET_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
GOOGLE_SERVICES_JSON_ASC: ${{ secrets.GOOGLE_SERVICES_JSON_ASC }}
AG_CONNECT_SERVICES_JSON_ASC: ${{ secrets.AG_CONNECT_SERVICES_JSON_ASC }}
GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE }}
GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG }}
IOS_XCCONFIG_ASC_RELEASE: ${{ secrets.IOS_XCCONFIG_ASC_RELEASE }}
IOS_XCCONFIG_ASC_DEBUG: ${{ secrets.IOS_XCCONFIG_ASC_DEBUG }}
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
- name: Generate Artifacts
run: ./gradlew :android:app:bundleRelease :backend:app:jar --parallel
- name: Upload Google App Bundle
uses: actions/upload-artifact@v4.4.0
with:
name: googleBundle
path: android/app/build/outputs/bundle/googleRelease/app-google-release.aab
- name: Upload Huawei App Bundle
uses: actions/upload-artifact@v4.4.0
with:
name: huaweiBundle
path: android/app/build/outputs/bundle/huaweiRelease/app-huawei-release.aab
- name: Upload Backend Jar
uses: actions/upload-artifact@v4.4.0
with:
name: backendJar
path: backend/app/build/libs/app-*.jar
- name: Set Job Status
id: status
run: echo "status=success" >> $GITHUB_OUTPUT
UploadToGooglePlay:
runs-on: ubuntu-22.04
needs: [ GenerateGradleArtifacts ]
outputs:
status: ${{ steps.status.outputs.status }}
steps:
- name: Clone Repo
uses: actions/checkout@v4.1.7
- name: Download App Bundle
uses: actions/download-artifact@v4.1.8
with:
name: googleBundle
- name: Adding secret files
uses: ./.github/actions/add-secret-files
with:
ANDROID_RELEASE_KEYSTORE_ASC: ${{ secrets.ANDROID_RELEASE_KEYSTORE_ASC }}
SECRET_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
GOOGLE_SERVICES_JSON_ASC: ${{ secrets.GOOGLE_SERVICES_JSON_ASC }}
AG_CONNECT_SERVICES_JSON_ASC: ${{ secrets.AG_CONNECT_SERVICES_JSON_ASC }}
GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE }}
GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG }}
IOS_XCCONFIG_ASC_RELEASE: ${{ secrets.IOS_XCCONFIG_ASC_RELEASE }}
IOS_XCCONFIG_ASC_DEBUG: ${{ secrets.IOS_XCCONFIG_ASC_DEBUG }}
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
- name: Upload Artifact to Google Play Console
uses: r0adkll/upload-google-play@v1.1.3
with:
serviceAccountJson: service_account.json
packageName: mustafaozhan.github.com.mycurrencies
releaseFiles: app-google-release.aab
track: internal
status: completed
- name: Delete App Bundle
uses: geekyeggo/delete-artifact@v5.1.0
with:
name: googleBundle
- name: Set Job Status
id: status
run: echo "status=success" >> $GITHUB_OUTPUT
UploadToHuaweiAppGallery:
runs-on: ubuntu-22.04
needs: [ GenerateGradleArtifacts ]
outputs:
status: ${{ steps.status.outputs.status }}
steps:
- name: Download App Bundle
uses: actions/download-artifact@v4.1.8
with:
name: huaweiBundle
- name: Deploy to Huawei App Gallery
uses: muhamedzeema/appgallery-deply-action@main
with:
client-id: ${{secrets.HUAWEI_CLIENT_ID}}
client-key: ${{secrets.HUAWEI_CLIENT_KEY}}
app-id: ${{secrets.HUAWEI_APP_ID}}
file-extension: "aab"
file-path: "app-huawei-release.aab"
file-name: "app-huawei-release"
- name: Delete App Bundle
uses: geekyeggo/delete-artifact@v5.1.0
with:
name: huaweiBundle
- name: Set Job Status
id: status
run: echo "status=success" >> $GITHUB_OUTPUT
DeployToServer:
runs-on: ubuntu-22.04
needs: [ GenerateGradleArtifacts ]
outputs:
status: ${{ steps.status.outputs.status }}
steps:
- name: Download Backend Jar
uses: actions/download-artifact@v4.1.8
with:
name: backendJar
path: artifact
- name: Deploy to Server
uses: easingthemes/ssh-deploy@v5.1.1
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
SOURCE: "artifact/"
- name: Delete Backend Jar
uses: geekyeggo/delete-artifact@v5.1.0
with:
name: backendJar
- name: Set Job Status
id: status
run: echo "status=success" >> $GITHUB_OUTPUT
UploadToAppStore:
runs-on: macos-14
outputs:
status: ${{ steps.status.outputs.status }}
steps:
- name: Setup Gradle Repo
uses: Oztechan/Global/actions/setup-gradle-repo@873e06320ffabbaa07f705b7ea059c248a070f88
- name: Adding secret files
uses: ./.github/actions/add-secret-files
with:
ANDROID_RELEASE_KEYSTORE_ASC: ${{ secrets.ANDROID_RELEASE_KEYSTORE_ASC }}
SECRET_PASSWORD: ${{ secrets.SECRET_PASSWORD }}
GOOGLE_SERVICES_JSON_ASC: ${{ secrets.GOOGLE_SERVICES_JSON_ASC }}
AG_CONNECT_SERVICES_JSON_ASC: ${{ secrets.AG_CONNECT_SERVICES_JSON_ASC }}
GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_RELEASE }}
GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST_ASC_DEBUG }}
IOS_XCCONFIG_ASC_RELEASE: ${{ secrets.IOS_XCCONFIG_ASC_RELEASE }}
IOS_XCCONFIG_ASC_DEBUG: ${{ secrets.IOS_XCCONFIG_ASC_DEBUG }}
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }}
- name: StoreBuild
working-directory: ios
run: fastlane store_build
- name: Set Job Status
id: status
run: echo "status=success" >> $GITHUB_OUTPUT
Notify:
runs-on: ubuntu-22.04
needs: [ GenerateGradleArtifacts, UploadToGooglePlay, UploadToHuaweiAppGallery, DeployToServer, UploadToAppStore ]
if: always()
steps:
- name: Notify slack success
if: needs.GenerateGradleArtifacts.outputs.status == 'success' &&
needs.UploadToGooglePlay.outputs.status == 'success' &&
needs.UploadToHuaweiAppGallery.outputs.status == 'success' &&
needs.DeployToServer.outputs.status == 'success' &&
needs.UploadToAppStore.outputs.status == 'success'
uses: voxmedia/github-action-slack-notify-build@v1.6.0
with:
channel: ccc-github
status: SUCCESS
color: good
- name: Notify slack fail
if: false == (needs.GenerateGradleArtifacts.outputs.status == 'success') ||
false == (needs.UploadToGooglePlay.outputs.status == 'success') ||
false == (needs.UploadToHuaweiAppGallery.outputs.status == 'success') ||
false == (needs.DeployToServer.outputs.status == 'success') ||
false == (needs.UploadToAppStore.outputs.status == 'success')
uses: voxmedia/github-action-slack-notify-build@v1.6.0
with:
channel: ccc-github
status: FAILED
color: danger