diff --git a/.github/workflows/android-beta-build.yml b/.github/workflows/android-beta-build.yml deleted file mode 100644 index 21844566c1..0000000000 --- a/.github/workflows/android-beta-build.yml +++ /dev/null @@ -1,149 +0,0 @@ -name: Android Beta Build - -env: - mimotoBackendServiceDefaultUrl: https://api.sandbox.mosip.net - esignetBackendServiceDefaultUrl: https://api.sandbox.mosip.net - -on: - workflow_dispatch: - inputs: - tag: - description: 'Tag to be published' - required: true - default: 'v1.2.3' - type: string - body: - description: 'Release body message' - required: true - default: 'Changes in this Release' - type: string - pre-release: - description: 'Pre-release? True/False' - required: true - default: False - 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 - 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 - registry_edit: - description: 'Edit Registry' - required: true - default: 'true' - type: choice - options: - - false - - true - -jobs: - build-android: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - with: - tag_name: ${{ github.event.inputs.tag }} - release_name: ${{ github.event.inputs.tag }} - body: ${{ github.event.inputs.body }} - draft: false - prerelease: ${{fromJSON(github.event.inputs.pre-release)}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check for git tag - run: | - cd android/scripts - ./git-tag.sh - - - name: Install npm dependencies - run: | - npm ci - - - name: Create .env.local file - run: | - echo "${{ secrets.ENV_FILE }}" > .env.local > android/local.properties - - - name: Setup branch and env - run: | - # Strip git ref prefix from version - echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV - echo "GPG_TTY=$(tty)" >> $GITHUB_ENV - - - name: Setup branch and GPG public key - run: | - # Strip git ref prefix from version - echo ${{ env.BRANCH_NAME }} - echo ${{ env.GPG_TTY }} - - sudo apt-get --yes install gnupg2 - gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg - gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg - - - name: Setup Firebase - run: | - cd android - if [ ! -z "$FIREBASE_SECRET" ] && [ -f app/google-services.json.gpg ];then rm -f app/google-services.json;gpg2 --quiet --batch --passphrase=$FIREBASE_SECRET --pinentry-mode loopback --decrypt --output app/google-services.json app/mosip-google-services.json.gpg;fi - env: - FIREBASE_SECRET: ${{ secrets.GPG_SECRET }} - - - name: Generate keystore - run: | - echo "$ANDROID_KEYSTORE_FILE" > release.keystore.b64 - base64 -d -i release.keystore.b64 > android/app/release.keystore - env: - ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }} - - - name: Export variables for keystore - run: | - cd android/app - export RELEASE_KEYSTORE_ALIAS=androidreleasekey - export RELEASE_KEYSTORE_PASSWORD=$RELEASE_KEYSTORE_PASSWORD - env: - RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}' - - - name: Create Google Play Config file - run : | - cd android - echo "$INJI_ANDROID_PLAY_STORE_CONFIG_JSON" > play_config.json.b64 - base64 -d -i play_config.json.b64 > play_config.json - env: - INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }} - - - name: Run Build - run: | - cd android/scripts - ./beta-build.sh - env: - MIMOTO_HOST: ${{ github.event.inputs.mimotoBackendServiceUrl }} - ESIGNET_HOST: ${{ github.event.inputs.esignetBackendServiceUrl }} - APPLICATION_THEME: ${{ github.event.inputs.theme }} - RELEASE_KEYSTORE_ALIAS: androidreleasekey - RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}' - SLACK_URL: '${{ secrets.SLACK_WEBHOOK_DEVOPS }}' - PLAY_CONSOLE_RELEASE_DESCRIPTION: ${{ github.event.inputs.buildDescription }} - CREDENTIAL_REGISTRY_EDIT: ${{ github.event.inputs.registry_edit }} \ No newline at end of file diff --git a/.github/workflows/android-build-verify.yml b/.github/workflows/android-build-verify.yml deleted file mode 100644 index aa59299565..0000000000 --- a/.github/workflows/android-build-verify.yml +++ /dev/null @@ -1,162 +0,0 @@ -name: PR - Android build verification - -env: - backendServiceDefaultUrl: https://api.sandbox.mosip.net - DUMMY_INJI_ANDROID_DEBUG_STOREPASS: 'password' - DUMMY_GOOGLE_SERVICE_JSON: '{ - "project_info": { - "project_number": "mockproject-1234", - "project_id": "123456789000", - "storage_bucket": "mock-project.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:123456789000:android:f1bf012572b04063", - "android_client_info": { - "package_name": "io.mosip.residentapp" - } - }, - "oauth_client": [ - { - "client_id": "123456789000-hjugbg6ud799v4c49dim8ce2usclthar.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzbSzCn1N6LWIe6wthYyrgUUSAlUsdqMb-wvTo" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "123456789000-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -}' - -on: - push: - branches: - - main - - develop - - demobranch - - qa-develop - - 0.9 - tags: - - '*' - pull_request: - types: [ opened, synchronize ] - branches: - - develop - - 'release-**' - tags: - - '*' - -jobs: - build-android: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - - name: Cache local npm repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - path: ~/.npm - - - name: Cache local gradle repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - path: | - ~/.gradle/caches - ~/.gradle/wrapper - - - name: Setup branch and env - run: | - # Strip git ref prefix from version - echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV - echo "GPG_TTY=$(tty)" >> $GITHUB_ENV - echo "DUMMY_INJI_ANDROID_DEBUG_STOREPASS=$DUMMY_INJI_ANDROID_DEBUG_STOREPASS" >> $GITHUB_ENV - - - name: Install npm dependencies - run: | - npm ci - - - name: Create .env.local file - run: | - echo "${{ secrets.ENV_FILE }}" > .env.local > android/local.properties - - - name: Setup branch and GPG public key - run: | - # Strip git ref prefix from version - echo ${{ env.BRANCH_NAME }} - echo ${{ env.GPG_TTY }} - - sudo apt-get --yes install gnupg2 - gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg - gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg - - - name: Setup Firebase - run: | - cd android - - if [ ! -z "$FIREBASE_SECRET" ] && [ -f app/google-services.json.gpg ]; - then - rm -f app/google-services.json;gpg2 --quiet --batch --passphrase=$FIREBASE_SECRET --pinentry-mode loopback --decrypt --output app/google-services.json app/mosip-google-services.json.gpg; - else - echo "Using Dummy Google Service JSON for firebase" - echo "$DUMMY_GOOGLE_SERVICE_JSON" > app/google-services.json - fi - env: - FIREBASE_SECRET: ${{ secrets.GPG_SECRET }} - - - name: Generate keystore - run: | - keytool \ - -genkey -v \ - -storetype PKCS12 \ - -keyalg RSA \ - -keysize 2048 \ - -validity 10000 \ - -storepass $DEBUG_KEYSTORE_PASSWORD \ - -keypass $DEBUG_KEYSTORE_PASSWORD \ - -alias androiddebugkey \ - -keystore android/app/debug.keystore \ - -dname "CN=io.mosip.residentapp,OU=,O=,L=,S=,C=US" - env: - DEBUG_KEYSTORE_PASSWORD: ${{secrets.INJI_ANDROID_DEBUG_STOREPASS || env.DUMMY_INJI_ANDROID_DEBUG_STOREPASS }} - - - name: Export variables for keystore - run: | - cd android/app - export DEBUG_KEYSTORE_ALIAS=androiddebugkey - export DEBUG_KEYSTORE_PASSWORD=$DEBUG_KEYSTORE_PASSWORD - env: - DEBUG_KEYSTORE_PASSWORD: ${{secrets.INJI_ANDROID_DEBUG_STOREPASS || env.DUMMY_INJI_ANDROID_DEBUG_STOREPASS }} - - - name: Bump version code - uses: chkfung/android-version-actions@v1.2.1 - with: - gradlePath: android/app/build.gradle - versionCode: ${{github.run_number}} - - - name: Run Build using Fastlane - run: | - cd android/scripts - ./verify-build.sh - env: - DEBUG_KEYSTORE_ALIAS: androiddebugkey - DEBUG_KEYSTORE_PASSWORD: ${{secrets.INJI_ANDROID_DEBUG_STOREPASS || env.DUMMY_INJI_ANDROID_DEBUG_STOREPASS }} diff --git a/.github/workflows/android-internal-build.yml b/.github/workflows/android-internal-build.yml deleted file mode 100644 index bbf9061938..0000000000 --- a/.github/workflows/android-internal-build.yml +++ /dev/null @@ -1,225 +0,0 @@ -name: Android Internal Build -run-name: ${{ github.event.inputs.buildname }} - -env: - mimotoBackendServiceDefaultUrl: https://api.sandbox.mosip.net - esignetBackendServiceDefaultUrl: https://api.sandbox.mosip.net - -on: - workflow_dispatch: - inputs: - 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 - 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 - registry_edit: - description: 'Edit Registry' - required: true - default: 'true' - type: choice - options: - - false - - true - -jobs: - build-android: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - - name: Cache local npm repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - path: ~/.npm - - - name: Cache local gradle repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - path: | - ~/.gradle/caches - ~/.gradle/wrapper - - - name: Install npm dependencies - run: | - npm ci - - - name: Create .env.local file - run: | - echo "${{ secrets.ENV_FILE }}" > .env.local > android/local.properties - - - name: Setup branch and env - run: | - # Strip git ref prefix from version - echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV - echo "GPG_TTY=$(tty)" >> $GITHUB_ENV - - - name: Setup branch and GPG public key - run: | - # Strip git ref prefix from version - echo ${{ env.BRANCH_NAME }} - echo ${{ env.GPG_TTY }} - - sudo apt-get --yes install gnupg2 - gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg - gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg - - - name: Setup Firebase - run: | - cd android - if [ ! -z "$FIREBASE_SECRET" ] && [ -f app/google-services.json.gpg ];then rm -f app/google-services.json;gpg2 --quiet --batch --passphrase=$FIREBASE_SECRET --pinentry-mode loopback --decrypt --output app/google-services.json app/mosip-google-services.json.gpg;fi - env: - FIREBASE_SECRET: ${{ secrets.GPG_SECRET }} - - - name: Generate keystore - run: | - echo "$ANDROID_KEYSTORE_FILE" > release.keystore.b64 - base64 -d -i release.keystore.b64 > android/app/release.keystore - env: - ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }} - - - name: Export variables for keystore - run: | - cd android/app - export RELEASE_KEYSTORE_ALIAS=androidreleasekey - export RELEASE_KEYSTORE_PASSWORD=$RELEASE_KEYSTORE_PASSWORD - env: - RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}' - - - name: Create Google Play Config file - run: | - cd android - echo "$INJI_ANDROID_PLAY_STORE_CONFIG_JSON" > play_config.json.b64 - base64 -d -i play_config.json.b64 > play_config.json - env: - INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }} - - - name: Run Build - run: | - cd android/scripts - ./internal-build.sh - env: - MIMOTO_HOST: ${{ github.event.inputs.mimotoBackendServiceUrl }} - ESIGNET_HOST: ${{ github.event.inputs.esignetBackendServiceUrl }} - APPLICATION_THEME: ${{ github.event.inputs.theme }} - RELEASE_KEYSTORE_ALIAS: androidreleasekey - RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}' - SLACK_URL: '${{ secrets.SLACK_WEBHOOK_DEVOPS }}' - PLAY_CONSOLE_RELEASE_DESCRIPTION: ${{ github.event.inputs.buildDescription }} - CREDENTIAL_REGISTRY_EDIT: ${{ github.event.inputs.registry_edit }} - - upload-to-actions: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - - - name: Cache local npm repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - path: ~/.npm - - - name: Cache local gradle repository - uses: actions/cache@v3.0.11 - with: - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - path: | - ~/.gradle/caches - ~/.gradle/wrapper - - - name: Install npm dependencies - run: | - npm i - - - name: Create .env.local file - run: | - echo "${{ secrets.ENV_FILE }}" > .env.local > android/local.properties - - - name: Setup branch and env - run: | - # Strip git ref prefix from version - echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV - echo "GPG_TTY=$(tty)" >> $GITHUB_ENV - - - name: Setup branch and GPG public key - run: | - # Strip git ref prefix from version - echo ${{ env.BRANCH_NAME }} - echo ${{ env.GPG_TTY }} - - sudo apt-get --yes install gnupg2 - gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg - gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg - - - name: Setup Firebase - run: | - cd android - if [ ! -z "$FIREBASE_SECRET" ] && [ -f app/google-services.json.gpg ];then rm -f app/google-services.json;gpg2 --quiet --batch --passphrase=$FIREBASE_SECRET --pinentry-mode loopback --decrypt --output app/google-services.json app/mosip-google-services.json.gpg;fi - env: - FIREBASE_SECRET: ${{ secrets.GPG_SECRET }} - - - name: Generate keystore - run: | - echo "$ANDROID_KEYSTORE_FILE" > release.keystore.b64 - base64 -d -i release.keystore.b64 > android/app/release.keystore - env: - ANDROID_KEYSTORE_FILE: ${{ secrets.INJI_ANDROID_RELEASE_KEYSTORE }} - - - name: Create Google Play Config file - run: | - cd android - echo "$INJI_ANDROID_PLAY_STORE_CONFIG_JSON" > play_config.json.b64 - base64 -d -i play_config.json.b64 > play_config.json - env: - INJI_ANDROID_PLAY_STORE_CONFIG_JSON: ${{ secrets.INJI_ANDROID_PLAY_STORE_CONFIG_JSON }} - - - name: Run Build for upload - run: | - npx jetify - cd android - ./gradlew :app:assembleMosipRelease - env: - MIMOTO_HOST: ${{ github.event.inputs.mimotoBackendServiceUrl }} - ESIGNET_HOST: ${{ github.event.inputs.esignetBackendServiceUrl }} - APPLICATION_THEME: ${{ github.event.inputs.theme }} - RELEASE_KEYSTORE_ALIAS: androidreleasekey - RELEASE_KEYSTORE_PASSWORD: '${{secrets.INJI_ANDROID_RELEASE_STOREPASS}}' - CREDENTIAL_REGISTRY_EDIT: ${{ github.event.inputs.registry_edit }} - - - name: Upload Artifact - uses: actions/upload-artifact@v3.1.1 - with: - name: ${{ github.event.inputs.buildname }} - path: android/app/build/outputs/apk/mosip/release/ - retention-days: 10 diff --git a/.github/workflows/clear-artifacts.yml b/.github/workflows/clear-artifacts.yml new file mode 100644 index 0000000000..8329cdd3e2 --- /dev/null +++ b/.github/workflows/clear-artifacts.yml @@ -0,0 +1,10 @@ +name: "Delete old artifacts" +on: + workflow_dispatch: + +jobs: + delete-artifacts: + uses: mosip/kattu/.github/workflows/clear-artifacts.yml@master + secrets: + ACCESS_TOKEN: ${{ secrets.ACTION_PAT }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} \ No newline at end of file diff --git a/.github/workflows/clear_artifacts.yml b/.github/workflows/clear_artifacts.yml deleted file mode 100644 index d880e16c82..0000000000 --- a/.github/workflows/clear_artifacts.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: 'Delete old artifacts' -on: - workflow_dispatch: -name: 'Delete old artifacts' -on: - workflow_dispatch: - -jobs: - delete-artifacts: - runs-on: ubuntu-latest - steps: - - uses: kolpav/purge-artifacts-action@v1 - with: - token: ${{ secrets.ACTION_PAT }} - expire-in: 2days # Setting this to 0 will delete all artifacts \ No newline at end of file diff --git a/.github/workflows/internal-build.yml b/.github/workflows/internal-build.yml new file mode 100644 index 0000000000..bb9f3962ea --- /dev/null +++ b/.github/workflows/internal-build.yml @@ -0,0 +1,136 @@ +name: Internal Build [Android & IOS] +run-name: ${{ inputs.buildname }} + +on: + workflow_dispatch: + inputs: + beta-release: + description: 'Beta release?' + required: true + default: 'No' + type: choice + options: + - Yes + - No + 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: + 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 == 'Yes' }} + 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 }}' + \ No newline at end of file diff --git a/.github/workflows/ios-automation-build.yml b/.github/workflows/ios-automation-build.yml deleted file mode 100644 index 26c9ef3eec..0000000000 --- a/.github/workflows/ios-automation-build.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Inji iOS Automation Build - -on: - workflow_dispatch: - inputs: - 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 - theme: - description: 'Application Theme' - required: true - default: 'orange' - type: choice - options: - - orange - - purple - registry_edit: - description: 'Edit Registry' - required: true - default: 'true' - type: choice - options: - - false - - true - -jobs: - build_ios: - name: Uploading app to Actions - runs-on: macos-13 - - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '18.x' - - - name: Install npm dependencies - run: | - npm install - - - name: Install Pod - run: | - cd ios - pod install - pod install - - - name: Build iOS for automation on simulator - run: | - cd ios - fastlane build_app_for_automation_on_simulator - - - name: Upload Inji.app artifact - uses: actions/upload-artifact@v3.1.1 - with: - name: Inji - path: ios/fastlane/Inji_app_file/Products/Applications/ - retention-days: 1 - - - name: Upload Runner Log on Failure - if: failure() # Only run this step if the previous steps failed - uses: actions/upload-artifact@v3.1.1 - with: - name: runner-log - path: /Users/runner/Library/Logs/gym/ - retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/ios-build-verify.yml b/.github/workflows/ios-build-verify.yml deleted file mode 100644 index 28ee8b397b..0000000000 --- a/.github/workflows/ios-build-verify.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: PR - IOS build verification - -on: - push: - branches: - - main - - develop - - demobranch - - qa-develop - - 0.9 - tags: - - '*' - pull_request: - types: [ opened, synchronize ] - branches: - - develop - - 'release-**' - tags: - - '*' - -jobs: - build_ios: - name: Building the IPA - runs-on: macos-13 - - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '18.x' - - - name: Install npm dependencies - run: | - npm install - - - name: Install Pod - run: | - cd ios - pod install - - - name: Building the IPA - run: | - cd ios - fastlane build_app_for_automation_on_simulator - env: - 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 }}' diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml deleted file mode 100644 index a5a2f2e89d..0000000000 --- a/.github/workflows/ios-build.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Inji iOS build - -on: - workflow_dispatch: - inputs: - 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 - theme: - description: 'Application Theme' - required: true - default: 'orange' - type: choice - options: - - orange - - purple - registry_edit: - description: 'Edit Registry' - required: true - default: 'true' - type: choice - options: - - false - - true - internal-testers: - description: 'Internal Testers Group' - required: true - default: 'QA-Triple' - type: choice - options: - - Dev-testing - - MEC - - QA - - MOSIP-Collab - - MOSIP-Dev-testing - buildDescription: - description: 'What to test' - required: true - default: 'QA-Triple environment build' - type: string - -jobs: - build_ios: - name: Deploying to Testflight - runs-on: macos-13 - - steps: - - uses: actions/checkout@v3.1.0 - - uses: actions/setup-node@v3 - with: - node-version: '18.x' - - - name: Install npm dependencies - run: | - npm install - - - name: Install Pod - run: | - cd ios - pod install - pod install - - - name: Deploy iOS Beta to TestFlight - run: | - cd ios - fastlane beta - env: - 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 }}' - SLACK_URL: '${{ secrets.SLACK_WEBHOOK_DEVOPS }}' - MATCH_PASSWORD: '${{ secrets.INJI_IOS_MATCH_PASSWORD }}' - APPLICATION_THEME: ${{ github.event.inputs.theme }} - TESTFLIGHT_INTERNAL_TESTERS_GROUP: ${{ github.event.inputs.internal-testers }} - TESTFLIGHT_BETA_APP_DESCRIPTION: ${{ github.event.inputs.buildDescription }} - - - name: Upload Runner Log on Failure - if: failure() # Only run this step if the previous steps failed - uses: actions/upload-artifact@v3.1.1 - with: - name: runner-log - path: /Users/runner/Library/Logs/gym/ - retention-days: 1 diff --git a/.github/workflows/push-triggers.yml b/.github/workflows/push-triggers.yml new file mode 100644 index 0000000000..6efd69edbc --- /dev/null +++ b/.github/workflows/push-triggers.yml @@ -0,0 +1,41 @@ +name: Push-Triggers + +.anchor-branches: &branches + branches: + - main + - develop + - qa-develop + - "release-**" + +on: + push: + <<: *branches + release: + types: [published] + pull_request: + types: [opened, reopened, synchronize] + paths: + - 'charts/**' + <<: *branches + +jobs: + build-android: + uses: tw-mosip/kattu/.github/workflows/android-build.yml@add-inji-workflows + with: + NODE_VERSION: "16.x" + secrets: + DEBUG_KEYSTORE_ALIAS: androiddebugkey + DEBUG_KEYSTORE_PASSWORD: "dummypassword" + + 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 }} \ No newline at end of file diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml deleted file mode 100644 index 0b902dda26..0000000000 --- a/.github/workflows/sonar.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: SonarQube checks -on: - push: - branches: - - develop -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - name: Install npm dependencies - run: | - npm ci - - uses: sonarsource/sonarqube-scan-action@master - with: - args: - -Dsonar.organization=${{ secrets.ORG_KEY }} - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - SONAR_HOST_URL: https://sonarcloud.io - SONAR_ORGANIZATION: ${{ secrets.ORG_KEY }} - # If you wish to fail your job when the Quality Gate is red, uncomment the - # following lines. This would typically be used to fail a deployment. - # - uses: sonarsource/sonarqube-quality-gate-action@master - # timeout-minutes: 5 - # env: - # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 0000000000..41cc2a13a6 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,35 @@ +name: Tagging of repos + +on: + workflow_dispatch: + inputs: + TAG: + description: "Tag to be published" + required: true + type: string + BODY: + description: "Release body message" + required: true + default: "Changes in this Release" + type: string + PRE_RELEASE: + description: "Pre-release? True/False" + required: true + default: False + type: string + DRAFT: + description: "Draft? True/False" + required: false + default: False + type: string + +jobs: + tag-branch: + uses: mosip/kattu/.github/workflows/tag.yml@master + with: + TAG: ${{ inputs.TAG }} + BODY: ${{ inputs.BODY }} + PRE_RELEASE: ${{ inputs.PRE_RELEASE }} + DRAFT: ${{ inputs.DRAFT }} + secrets: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} \ No newline at end of file diff --git a/.talismanrc b/.talismanrc index 6d24056494..43bd4e0ad2 100644 --- a/.talismanrc +++ b/.talismanrc @@ -32,4 +32,8 @@ fileignoreconfig: - filename: shared/fileStorage.ts checksum: 07cb337dc1d5b0f0eef56270ac4f4f589260ee5e490183c024cf98a2aeafb139 - filename: shared/storage.ts - checksum: c8d874aa373bdf526bf59192139822f56915e702ef673bac4e0d7549b0fea3d0 \ No newline at end of file + checksum: c8d874aa373bdf526bf59192139822f56915e702ef673bac4e0d7549b0fea3d0 +- filename: .github/workflows/push-triggers.yml + checksum: 529fb410af4bfba432f218dcaf41b8fd63da12dddf429d28e89c3155f50dfca5 +- filename: .github/workflows/internal-build.yml + checksum: 9534127d1d01294985bb49e249fe83fd565e1f89c4ca04a60c26c9842274b263 \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 48608aa17d..b09cb81fd4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -198,7 +198,7 @@ android { variant.outputs.all { output -> def datetime = new Date().format('yyyyMMdd_HHmm') def architecture = output.getFilter(com.android.build.OutputFile.ABI) ?: "universal" - outputFileName = "Inji_${variant.versionName}_${datetime}_${architecture}.apk" + outputFileName = "Inji_${architecture}.apk" } } } diff --git a/android/scripts/verify-build.sh b/android/scripts/android-build.sh similarity index 100% rename from android/scripts/verify-build.sh rename to android/scripts/android-build.sh diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index a99dfc75e1..dd127943e1 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -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}'")