mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 05:27:57 -05:00
feat(MOSIP-29236): Add reusable workflows (#969)
* feat(MOSIP-29236): Add reusable workflows * feat(MOSIP-29236): refactor reusable workflows
This commit is contained in:
2
.github/workflows/android-build-verify.yml
vendored
2
.github/workflows/android-build-verify.yml
vendored
@@ -142,7 +142,7 @@ jobs:
|
||||
- name: Run Build using Fastlane
|
||||
run: |
|
||||
cd android/scripts
|
||||
./verify-build.sh
|
||||
./android-build.sh
|
||||
env:
|
||||
DEBUG_KEYSTORE_ALIAS: androiddebugkey
|
||||
DEBUG_KEYSTORE_PASSWORD: ${{secrets.INJI_ANDROID_DEBUG_STOREPASS || env.DUMMY_INJI_ANDROID_DEBUG_STOREPASS }}
|
||||
|
||||
137
.github/workflows/internal-build.yml
vendored
Normal file
137
.github/workflows/internal-build.yml
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
name: Internal Build [Android & IOS]
|
||||
run-name: ${{ inputs.buildname }}
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
beta-release:
|
||||
description: 'Beta release?'
|
||||
required: true
|
||||
default: 'false'
|
||||
type: choice
|
||||
options:
|
||||
- false
|
||||
- true
|
||||
buildname:
|
||||
description: 'Build App For'
|
||||
required: true
|
||||
default: 'Sprint-x/Collab/release-x.x.x'
|
||||
type: string
|
||||
mimotoBackendServiceUrl:
|
||||
description: 'Mimoto backend service URL'
|
||||
required: true
|
||||
default: 'https://api.sandbox.mosip.net'
|
||||
type: string
|
||||
esignetBackendServiceUrl:
|
||||
description: 'Esignet backend service URL'
|
||||
required: true
|
||||
default: 'https://api.sandbox.mosip.net'
|
||||
type: string
|
||||
internal-testers:
|
||||
description: 'Internal Testers Group'
|
||||
required: true
|
||||
default: 'QA-Triple'
|
||||
type: choice
|
||||
options:
|
||||
- Dev-testing
|
||||
- MEC
|
||||
- QA
|
||||
- MOSIP-Collab
|
||||
- MOSIP-Dev-testing
|
||||
theme:
|
||||
description: 'Application Theme'
|
||||
required: true
|
||||
default: 'orange'
|
||||
type: choice
|
||||
options:
|
||||
- orange
|
||||
- purple
|
||||
buildDescription:
|
||||
description: 'What to test'
|
||||
required: true
|
||||
default: 'QA-Triple environment'
|
||||
type: string
|
||||
allow_env_edit:
|
||||
description: 'Edit ENV'
|
||||
required: true
|
||||
default: 'true'
|
||||
type: choice
|
||||
options:
|
||||
- false
|
||||
- true
|
||||
|
||||
jobs:
|
||||
build-android:
|
||||
uses: tw-mosip/kattu/.github/workflows/android-publish.yml@add-inji-workflows
|
||||
with:
|
||||
BETA_RELEASE: ${{ inputs.beta-release }}
|
||||
NODE_VERSION: '16.x'
|
||||
RELEASE_KEYSTORE_ALIAS: androidreleasekey
|
||||
MIMOTO_HOST: ${{ inputs.mimotoBackendServiceUrl }}
|
||||
ESIGNET_HOST: ${{ inputs.esignetBackendServiceUrl }}
|
||||
APPLICATION_THEME: ${{ inputs.theme }}
|
||||
BUILD_DESCRIPTION: ${{ inputs.buildDescription }}
|
||||
ALLOW_ENV_EDIT: ${{ inputs.allow_env_edit }}
|
||||
BUILD_NAME: ${{ inputs.buildname }}
|
||||
secrets:
|
||||
ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }}
|
||||
RELEASE_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}'
|
||||
INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }}
|
||||
ENV_FILE: ${{ secrets.ENV_FILE }}
|
||||
SLACK_URL: '${{ secrets.SLACK_WEBHOOK }}'
|
||||
|
||||
build-android-beta:
|
||||
if: ${{ inputs.beta-release == 'true' }}
|
||||
uses: tw-mosip/kattu/.github/workflows/android-publish.yml@add-inji-workflows
|
||||
with:
|
||||
BETA_RELEASE: ${{ inputs.beta-release }}
|
||||
NODE_VERSION: '16.x'
|
||||
RELEASE_KEYSTORE_ALIAS: androidreleasekey
|
||||
MIMOTO_HOST: ${{ inputs.mimotoBackendServiceUrl }}
|
||||
ESIGNET_HOST: ${{ inputs.esignetBackendServiceUrl }}
|
||||
APPLICATION_THEME: ${{ inputs.theme }}
|
||||
BUILD_DESCRIPTION: ${{ inputs.buildDescription }}
|
||||
ALLOW_ENV_EDIT: ${{ inputs.allow_env_edit }}
|
||||
BUILD_NAME: ${{ inputs.buildname }}
|
||||
secrets:
|
||||
ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }}
|
||||
RELEASE_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_RELEASE_STOREPASS }}'
|
||||
INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }}
|
||||
ENV_FILE: ${{ secrets.ENV_FILE }}
|
||||
SLACK_URL: '${{ secrets.SLACK_WEBHOOK }}'
|
||||
|
||||
build-ios:
|
||||
uses: tw-mosip/kattu/.github/workflows/ios-publish.yml@add-inji-workflows
|
||||
with:
|
||||
NODE_VERSION: '18.x'
|
||||
MIMOTO_HOST: ${{ inputs.mimotoBackendServiceUrl }}
|
||||
ESIGNET_HOST: ${{ inputs.esignetBackendServiceUrl }}
|
||||
APPLICATION_THEME: ${{ inputs.theme }}
|
||||
TESTFLIGHT_BETA_APP_DESCRIPTION: ${{ inputs.buildDescription }}
|
||||
ALLOW_ENV_EDIT: ${{ inputs.allow_env_edit }}
|
||||
TESTFLIGHT_INTERNAL_TESTERS_GROUP: ${{ inputs.internal-testers }}
|
||||
secrets:
|
||||
APP_STORE_CONNECT_TEAM_ID: '${{ secrets.APP_STORE_CONNECT_TEAM_ID }}'
|
||||
DEVELOPER_APP_ID: '${{ secrets.IOS_INJI_DEVELOPER_APP_ID }}'
|
||||
INJI_IOS_DEVELOPER_APP_IDENTIFIER: '${{ secrets.INJI_IOS_DEVELOPER_APP_IDENTIFIER }}'
|
||||
INJI_IOS_DEVELOPER_PORTAL_TEAM_ID: '${{ secrets.INJI_IOS_DEVELOPER_PORTAL_TEAM_ID }}'
|
||||
INJI_IOS_FASTLANE_APPLE_ID: '${{ secrets.INJI_IOS_FASTLANE_APPLE_ID }}'
|
||||
INJI_IOS_FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: '${{ secrets.INJI_IOS_FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}'
|
||||
GIT_AUTHORIZATION: '${{ secrets.GIT_AUTHORIZATION }}'
|
||||
INJI_IOS_PROVISIONING_PROFILE_SPECIFIER: '${{ secrets.INJI_IOS_PROVISIONING_PROFILE_SPECIFIER }}'
|
||||
INJI_IOS_TEMP_KEYCHAIN_PASSWORD: '${{ secrets.INJI_IOS_TEMP_KEYCHAIN_PASSWORD }}'
|
||||
INJI_IOS_TEMP_KEYCHAIN_USER: '${{ secrets.INJI_IOS_TEMP_KEYCHAIN_USER }}'
|
||||
APPLE_KEY_ID: '${{ secrets.APPLE_KEY_ID }}'
|
||||
APPLE_ISSUER_ID: '${{ secrets.APPLE_ISSUER_ID }}'
|
||||
APPLE_KEY_CONTENT: '${{ secrets.APPLE_KEY_CONTENT }}'
|
||||
MATCH_PASSWORD: '${{ secrets.INJI_IOS_MATCH_PASSWORD }}'
|
||||
SLACK_URL: '${{ secrets.SLACK_WEBHOOK }}'
|
||||
|
||||
sonar-check:
|
||||
uses: tw-mosip/kattu/.github/workflows/sonar.yml@add-inji-workflows
|
||||
secrets:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
SONAR_HOST_URL: https://sonarcloud.io
|
||||
SONAR_ORGANIZATION: ${{ secrets.ORG_KEY }}
|
||||
SLACK_URL: '${{ secrets.SLACK_WEBHOOK }}'
|
||||
|
||||
2
.github/workflows/ios-build-verify.yml
vendored
2
.github/workflows/ios-build-verify.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
||||
- name: Building the IPA
|
||||
run: |
|
||||
cd ios
|
||||
fastlane build_app_for_automation_on_simulator
|
||||
fastlane build_app
|
||||
env:
|
||||
APP_STORE_CONNECT_TEAM_ID: '${{ secrets.APP_STORE_CONNECT_TEAM_ID }}'
|
||||
DEVELOPER_APP_ID: '${{ secrets.IOS_INJI_DEVELOPER_APP_ID }}'
|
||||
|
||||
41
.github/workflows/push-triggers.yml
vendored
Normal file
41
.github/workflows/push-triggers.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: Push-Triggers
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- develop
|
||||
- qa-develop
|
||||
- 'release-**'
|
||||
release:
|
||||
types: [published]
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
branches:
|
||||
- main
|
||||
- develop
|
||||
- qa-develop
|
||||
- 'release-**'
|
||||
|
||||
jobs:
|
||||
build-android:
|
||||
uses: tw-mosip/kattu/.github/workflows/android-build.yml@add-inji-workflows
|
||||
with:
|
||||
NODE_VERSION: "16.x"
|
||||
DEBUG_KEYSTORE_ALIAS: androiddebugkey
|
||||
secrets:
|
||||
DEBUG_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_DEBUG_STOREPASS }}'
|
||||
|
||||
build-ios:
|
||||
uses: tw-mosip/kattu/.github/workflows/ios-build.yml@add-inji-workflows
|
||||
with:
|
||||
NODE_VERSION: "16.x"
|
||||
|
||||
sonar-check:
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
uses: tw-mosip/kattu/.github/workflows/sonar.yml@add-inji-workflows
|
||||
secrets:
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
SONAR_HOST_URL: https://sonarcloud.io
|
||||
SONAR_ORGANIZATION: ${{ secrets.ORG_KEY }}
|
||||
SLACK_URL: '${{ secrets.SLACK_WEBHOOK }}'
|
||||
@@ -57,3 +57,9 @@ fileignoreconfig:
|
||||
checksum: 6d22bc5c77398316b943c512c208ce0846a9fff674c1ccac79e07f21962acd5f
|
||||
- filename: machines/VCItemMachine/ExistingMosipVCItem/ExistingMosipVCItemMachine.typegen.ts
|
||||
checksum: 10889302ca05646a283386be1bbe7a5fb510c02bb62a308ee45f3c2a872ae64e
|
||||
- filename: .github/workflows/internal-build.yml
|
||||
checksum: 3a3b4dea51cb496729c4e568113fc19cf5b008481bb4a5d157f211a2128b951b
|
||||
- filename: .github/workflows/push-triggers.yml
|
||||
checksum: c5de3d912e2cbd55f6898e2f4a24413abbee8f084c99ea11ce6265504a520ce0
|
||||
- filename: android/fastlane/Fastfile
|
||||
checksum: 41d1409adf8df9c843fd2dba89142cd55c471f3060ced57d48ee96dc8793ffcd
|
||||
|
||||
@@ -4,20 +4,21 @@ MIMOTO_HOST = ENV["MIMOTO_HOST"]
|
||||
ESIGNET_HOST = ENV["ESIGNET_HOST"]
|
||||
APPLICATION_THEME = ENV["APPLICATION_THEME"]
|
||||
RELEASE_KEYSTORE_ALIAS = ENV["RELEASE_KEYSTORE_ALIAS"]
|
||||
DEBUG_KEYSTORE_ALIAS = ENV["DEBUG_KEYSTORE_ALIAS"]
|
||||
RELEASE_KEYSTORE_PASSWORD = ENV["RELEASE_KEYSTORE_PASSWORD"]
|
||||
DEBUG_KEYSTORE_PASSWORD = ENV["DEBUG_KEYSTORE_PASSWORD"]
|
||||
PLAY_CONSOLE_RELEASE_DESCRIPTION = ENV["PLAY_CONSOLE_RELEASE_DESCRIPTION"]
|
||||
SLACK_URL = ENV["SLACK_URL"]
|
||||
CREDENTIAL_REGISTRY_EDIT = ENV["CREDENTIAL_REGISTRY_EDIT"]
|
||||
|
||||
desc "Verify Build for Android"
|
||||
lane :android_build_verify do
|
||||
gradle(
|
||||
task: "assembleMosipDebug",
|
||||
)
|
||||
lane :android_build do
|
||||
gradle(task: "assembleMosipDebug")
|
||||
end
|
||||
|
||||
desc "Deploy an Internal testing version to the Google Play"
|
||||
lane :android_build_internal do
|
||||
|
||||
previous_build_number = google_play_track_version_codes(
|
||||
package_name: "io.mosip.residentapp",
|
||||
track: "internal",
|
||||
|
||||
@@ -7,4 +7,4 @@ yes | sudo gem install bundler
|
||||
|
||||
yes | sudo fastlane install_plugins
|
||||
|
||||
bundle exec fastlane android_build_verify
|
||||
bundle exec fastlane android_build
|
||||
@@ -19,6 +19,10 @@ FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT = "120"
|
||||
TESTFLIGHT_INTERNAL_TESTERS_GROUP = ENV["TESTFLIGHT_INTERNAL_TESTERS_GROUP"]
|
||||
TESTFLIGHT_BETA_APP_DESCRIPTION = ENV["TESTFLIGHT_BETA_APP_DESCRIPTION"]
|
||||
DEVELOPER_APP_ID = ENV["DEVELOPER_APP_ID"]
|
||||
MIMOTO_HOST = ENV["MIMOTO_HOST"]
|
||||
ESIGNET_HOST = ENV["ESIGNET_HOST"]
|
||||
APPLICATION_THEME = ENV["APPLICATION_THEME"]
|
||||
CREDENTIAL_REGISTRY_EDIT = ENV["CREDENTIAL_REGISTRY_EDIT"]
|
||||
|
||||
def delete_temp_keychain(name)
|
||||
delete_keychain(
|
||||
@@ -123,42 +127,7 @@ platform :ios do
|
||||
)
|
||||
end
|
||||
|
||||
lane :build_verify do
|
||||
keychain_name = TEMP_KEYCHAIN_USER
|
||||
keychain_password = TEMP_KEYCHAIN_PASSWORD
|
||||
ensure_temp_keychain(keychain_name, keychain_password)
|
||||
|
||||
api_key = app_store_connect_api_key(
|
||||
key_id: "#{APPLE_KEY_ID}",
|
||||
issuer_id: "#{APPLE_ISSUER_ID}",
|
||||
key_content: "#{APPLE_KEY_CONTENT}",
|
||||
duration: 1200,
|
||||
in_house: false,
|
||||
is_key_content_base64: true
|
||||
)
|
||||
|
||||
match(
|
||||
type: 'appstore',
|
||||
app_identifier: "#{DEVELOPER_APP_IDENTIFIER}",
|
||||
git_basic_authorization: Base64.strict_encode64("#{GIT_AUTHORIZATION}"),
|
||||
readonly: false,
|
||||
keychain_name: keychain_name,
|
||||
keychain_password: keychain_password,
|
||||
api_key: api_key
|
||||
)
|
||||
|
||||
gym(
|
||||
configuration: "Release",
|
||||
workspace: "Inji.xcworkspace",
|
||||
scheme: "Inji",
|
||||
export_method: "app-store",
|
||||
)
|
||||
|
||||
delete_temp_keychain(keychain_name)
|
||||
|
||||
end
|
||||
|
||||
lane :build_app_for_automation_on_simulator do
|
||||
lane :build_app do
|
||||
|
||||
custom_output_directory = "./Inji_app_file"
|
||||
sh("mkdir -p '#{custom_output_directory}'")
|
||||
|
||||
Reference in New Issue
Block a user