diff --git a/.github/workflows/android-beta-build.yml b/.github/workflows/android-beta-build.yml deleted file mode 100644 index ee3a53e59e..0000000000 --- a/.github/workflows/android-beta-build.yml +++ /dev/null @@ -1,142 +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: 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 50f95ad0f8..0000000000 --- a/.github/workflows/android-build-verify.yml +++ /dev/null @@ -1,148 +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: 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 6684204c91..0000000000 --- a/.github/workflows/android-internal-build.yml +++ /dev/null @@ -1,211 +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: 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: 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..8b12348c0e --- /dev/null +++ b/.github/workflows/internal-build.yml @@ -0,0 +1,177 @@ +name: Internal Build [Android & IOS] +run-name: ${{ inputs.buildname }} + +on: + workflow_dispatch: + inputs: + release: + description: 'Internal/Beta' + required: true + default: 'internal' + type: choice + options: + - internal + - beta + buildFor: + description: 'Build' + required: true + default: 'Both[Android and IOS]' + type: choice + options: + - Both[Android and IOS] + - Android + - IOS + 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 + injiFlavor: + description: 'Select Inji flavor' + required: true + default: 'Inji' + type: choice + options: + - residentapp + - inji + - collab + - synergy + - mec + 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: + if: ${{ inputs.buildFor == 'Both[Android and IOS]' || inputs.buildFor == 'Android'}} + uses: mosip/kattu/.github/workflows/android-publish.yml@master + with: + RELEASE: ${{ inputs.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 }} + APP_FLAVOR: ${{ inputs.injiFlavor }} + SERVICE_LOCATION: '.' + ANDROID_SERVICE_LOCATION: 'android' + BUILD_SCRIPT_LOCATION: 'scripts' + SCRIPT_NAME: "./${{ inputs.release }}.sh" + ANDROID_ARTIFACT_NAME: ${{ inputs.buildname }} + ANDROID_ARTIFACT_PATH: "android/app/build/outputs/apk/${{ inputs.injiFlavor }}/release/Inji_universal.apk" + 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 }} + SLACK_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK }}' + + build-android-beta: + if: ${{ inputs.release == 'beta' && (inputs.buildFor == 'Both[Android and IOS]' || inputs.buildFor == 'Android') }} + uses: mosip/kattu/.github/workflows/android-publish.yml@master + with: + RELEASE: ${{ inputs.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 }} + APP_FLAVOR: ${{ inputs.injiFlavor }} + SERVICE_LOCATION: '.' + ANDROID_SERVICE_LOCATION: 'android' + BUILD_SCRIPT_LOCATION: 'scripts' + SCRIPT_NAME: "./${{ inputs.release }}.sh" + ANDROID_ARTIFACT_NAME: ${{ inputs.buildname }} + ANDROID_ARTIFACT_PATH: "android/app/build/outputs/apk/${{ inputs.injiFlavor }}/release/Inji_universal.apk" + 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 }} + SLACK_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK }}' + + build-ios: + if: ${{ inputs.buildFor == 'Both[Android and IOS]' || inputs.buildFor == 'IOS'}} + uses: mosip/kattu/.github/workflows/ios-publish.yml@master + 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 }} + APP_FLAVOR: ${{ inputs.injiFlavor }} + SERVICE_LOCATION: '.' + IOS_SERVICE_LOCATION: 'ios' + SCRIPT_NAME: "fastlane beta" + IOS_ARTIFACT_NAME: "Inji" + IOS_ARTIFACT_PATH: "ios/fastlane/Inji_app_file/Products/Applications/" + 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_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK }}' + + # sonar-check: + # uses: mosip/kattu/.github/workflows/gradlew-sonar-analysis.yml@master + # with: + # SERVICE_LOCATION: '.' + # ANDROID_LOCATION: 'android' + # SONAR_ARGS: -Dsonarqube + # secrets: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # SONAR_ORGANIZATION: ${{ secrets.ORG_KEY }} + # SLACK_WEBHOOK_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 6f1b637e1d..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: 7 - - - 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 2e71c7d28f..0000000000 --- a/.github/workflows/ios-build.yml +++ /dev/null @@ -1,103 +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 }} - CREDENTIAL_REGISTRY_EDIT: ${{ github.event.inputs.registry_edit }} - MIMOTO_HOST: ${{ github.event.inputs.mimotoBackendServiceUrl }} - ESIGNET_HOST: ${{ github.event.inputs.esignetBackendServiceUrl }} - 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..5d1e56963f --- /dev/null +++ b/.github/workflows/push-triggers.yml @@ -0,0 +1,50 @@ +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: mosip/kattu/.github/workflows/android-build.yml@master + with: + NODE_VERSION: "16.x" + DEBUG_KEYSTORE_ALIAS: androiddebugkey + SERVICE_LOCATION: '.' + ANDROID_SERVICE_LOCATION: 'android' + BUILD_SCRIPT_LOCATION: 'scripts' + SCRIPT_NAME: './android-build.sh' + secrets: + DEBUG_KEYSTORE_PASSWORD: '${{ secrets.INJI_ANDROID_DEBUG_STOREPASS }}' + + build-ios: + uses: mosip/kattu/.github/workflows/ios-build.yml@master + with: + NODE_VERSION: "18.x" + SERVICE_LOCATION: '.' + IOS_SERVICE_LOCATION: 'ios' + SCRIPT_NAME: "fastlane ios_app_build" + + # sonar-check: + # if: ${{ github.event_name != 'pull_request' }} + # uses: mosip/kattu/.github/workflows/gradlew-sonar-analysis.yml@master + # with: + # SERVICE_LOCATION: '.' + # ANDROID_LOCATION: 'android' + # secrets: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # SONAR_ORGANIZATION: ${{ secrets.ORG_KEY }} + # SLACK_WEBHOOK_URL: '${{ secrets.SLACK_WEBHOOK }}' \ 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 63025b2e27..4bd127497c 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,8 +1,8 @@ fileignoreconfig: - filename: package.json - checksum: a5a22604f2b9d917adaf3561fdcaeccd4e69b92e1240070480d7498e1eda5162 + checksum: 984f91af6d696faf934f7e541801343e146aed1b58d7c950ba11ec02dbd60dda - filename: package-lock.json - checksum: 7e8bc0fa27b4eca3b7a825bccdef88ef1c9e7932a5d9af0e5feca2d42d72703b + checksum: c16e22cf137c123d7f1b1b95758646fc839dc1fa16f7cf74dff3124174475e13 - filename: lib/jsonld-signatures/suites/ed255192018/ed25519.ts checksum: 493b6e31144116cb612c24d98b97d8adcad5609c0a52c865a6847ced0a0ddc3a - filename: components/PasscodeVerify.tsx @@ -67,8 +67,6 @@ fileignoreconfig: checksum: c5de3d912e2cbd55f6898e2f4a24413abbee8f084c99ea11ce6265504a520ce0 - filename: android/fastlane/Fastfile checksum: 41d1409adf8df9c843fd2dba89142cd55c471f3060ced57d48ee96dc8793ffcd - - filename: package.json - checksum: b982af1813bb72625c63eb31b3d0a6c0d970cd669d57649cc0ac9358252e3cd3 - filename: machines/VCItemMachine/EsignetMosipVCItem/EsignetMosipVCItemMachine.typegen.ts checksum: 15308987b1aab0c51c96bfc646ae55a3d7ae728a1f6e03ab31d5e1b786da03eb - filename: machines/VCItemMachine/ExistingMosipVCItem/ExistingMosipVCItemMachine.typegen.ts @@ -76,21 +74,16 @@ fileignoreconfig: - filename: shared/telemetry/TelemetryUtils.js checksum: a0686e9a5c006176fd720b84bc36ca947db1422caf65c90cd0c2d1102a9e96df - filename: ios/fastlane/Fastfile - checksum: feea5a7f044ef6961d53e7d1e1ffb92a3e0f72761496424f6e64288e3718d605 + checksum: 78edb7772ca7bf64fc0c603cb82771c793e03afff37ccbbfd1b9f578ec0e5369 - filename: machines/bleShare/scan/scanMachine.ts checksum: a514c958ca3da3c5b22a1a95ad680af8f05fb22638fab79b3842aa8fcc1b4a17 - version: '' - filename: locales/spa.json checksum: eac9685c6b205ece5759e414669d27ad7ce383453d7b5e7d9f5ce75d290cc860 - version: '' - filename: screens/PasscodeScreen.tsx checksum: 5d3003027b245234f8c00bfc98836f1fb90a5d9525ffacf61c53f3d50954aa6a - version: '' - filename: screens/PasscodeScreen.tsx checksum: 3330b9db9cfce407782e82b4fe3c0b60a9ecb0f9327af2b69971e254f9e52921 - version: '' - filename: screens/Home/MyVcs/OtpVerificationModal.tsx checksum: a99fe136d9d1348c541d413324d266e179ecad6a1fe6b6bd1e0b2856a5a6d6b5 - filename: screens/QrLogin/QrConsent.tsx checksum: 8563a194a4d38814eff670f0652d1a7af77134cafb350462174b4f147dbd890d - version: '' diff --git a/android/app/build.gradle b/android/app/build.gradle index 1e8d040fb0..8f14f7f589 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -4,6 +4,7 @@ plugins { apply plugin: "com.android.application" apply plugin: "com.facebook.react" +apply plugin: "org.sonarqube" react { /* Folders */ @@ -95,12 +96,9 @@ android { compileSdkVersion rootProject.ext.compileSdkVersion ext { - APP_NAME_RELEASE = "@string/app_name" - APP_NAME_MOSIP = "@string/app_name_mosip" - APP_NAME_BETA = "@string/app_name_beta" + APP_NAME= "@string/app_name" } - namespace 'io.mosip.residentapp' defaultConfig { @@ -110,14 +108,12 @@ android { versionName androidGitVersion.name() versionCode 1 - Properties properties = new Properties() - properties.load(project.rootProject.file('local.properties').newDataInputStream()) - manifestPlaceholders = [ - APP_NAME: APP_NAME_RELEASE, + APP_NAME: APP_NAME, appAuthRedirectScheme: 'io.mosip.residentapp.inji' ] } + splits { abi { reset() @@ -129,26 +125,53 @@ android { signingConfigs { release { - def keystore = file('release.keystore') - def keystoreAlias = System.getenv("RELEASE_KEYSTORE_ALIAS") - def keystorePass = System.getenv("RELEASE_KEYSTORE_PASSWORD") + // for sonarqube job we will generate dummy release keystore to sign the app as we are not doing it in workflow + def hasSonarqube = System.properties.containsKey("sonarqube") + def keystore = file('release.keystore').exists() ? file('release.keystore') : file('dummyrelease.keystore') storeFile file("$keystore") - storePassword "$keystorePass" - keyAlias "$keystoreAlias" - keyPassword "$keystorePass" + if (hasSonarqube && !keystore.exists() ) { + exec { + commandLine 'keytool', + '-genkey', + '-v', + '-storetype', 'PKCS12', + '-keyalg', 'RSA', + '-keysize', '2048', + '-validity', '10000', + '-storepass', 'password', + '-keypass', 'password', + '-alias', 'androidreleasekey', + '-keystore', 'dummyrelease.keystore', + '-dname', 'CN=,OU=,O=,L=,S=,C=US' + } + storePassword "password" + keyAlias "androidreleasekey" + keyPassword "password" + } + else{ + def keystoreAlias = System.getenv("RELEASE_KEYSTORE_ALIAS") + def keystorePass = System.getenv("RELEASE_KEYSTORE_PASSWORD") + storePassword "$keystorePass" + keyAlias "$keystoreAlias" + keyPassword "$keystorePass" + } v2SigningEnabled true v1SigningEnabled false } debug { def keystore = file('debug.keystore') - def keystoreAlias = System.getenv("DEBUG_KEYSTORE_ALIAS") - def keystorePass = System.getenv("DEBUG_KEYSTORE_PASSWORD") - storeFile file("$keystore") - storePassword "$keystorePass" - keyAlias "$keystoreAlias" - keyPassword "$keystorePass" - v2SigningEnabled true - v1SigningEnabled false + if (keystore.exists()) { + def keystoreAlias = System.getenv("DEBUG_KEYSTORE_ALIAS") + def keystorePass = System.getenv("DEBUG_KEYSTORE_PASSWORD") + storeFile file("$keystore") + storePassword "$keystorePass" + keyAlias "$keystoreAlias" + keyPassword "$keystorePass" + v2SigningEnabled true + v1SigningEnabled false + }else { + android.buildTypes.debug.signingConfig = null + } } } buildTypes { @@ -171,19 +194,34 @@ android { flavorDimensions "inji" productFlavors { - mosip { + residentapp { + versionName defaultConfig.versionName + dimension "inji" + resValue "string", "app_name", "Inji" + } + inji { + applicationId "io.mosip.inji.wallet" versionName defaultConfig.versionName - manifestPlaceholders = [ - APP_NAME: APP_NAME_MOSIP - ] dimension "inji" + resValue "string", "app_name", "Inji Wallet" } - beta { + collab { + applicationId "io.mosip.inji.collab" versionName defaultConfig.versionName - manifestPlaceholders = [ - APP_NAME: APP_NAME_BETA - ] dimension "inji" + resValue "string", "app_name", "Inji Wallet Collab" + } + synergy { + applicationId "io.mosip.inji.synergy" + versionName defaultConfig.versionName + dimension "inji" + resValue "string", "app_name", "Inji Wallet Synergy" + } + mec { + applicationId "io.mosip.inji.mec" + versionName defaultConfig.versionName + dimension "inji" + resValue "string", "app_name", "Inji Wallet Mec" } } @@ -191,7 +229,17 @@ 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" + } + } + + android.applicationVariants.all { variant -> + variant.outputs.all { output -> + if (variant.flavorName == "collab") { + sonarqube { + androidVariant variant.name + } + } } } } @@ -248,4 +296,4 @@ dependencies { } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) -apply from: "./eas-build.gradle" +apply from: "./eas-build.gradle" \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 811dbf265d..d961af5b44 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,8 +1,4 @@ - Inji - MOSIP Resident App - Mosip/Inji - MOSIP Resident App - Newlogic - MOSIP Resident App - PH cover false undefined diff --git a/android/build.gradle b/android/build.gradle index 0824a6e5f8..e83f7b1759 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -18,6 +18,7 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle:7.3.1") classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3") } } diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile index 44489aba64..aa859df525 100644 --- a/android/fastlane/Fastfile +++ b/android/fastlane/Fastfile @@ -4,22 +4,56 @@ 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"] -PLAY_CONSOLE_RELEASE_DESCRIPTION = ENV["PLAY_CONSOLE_RELEASE_DESCRIPTION"] -SLACK_URL = ENV["SLACK_URL"] +DEBUG_KEYSTORE_PASSWORD = ENV["DEBUG_KEYSTORE_PASSWORD"] +PLAY_CONSOLE_RELEASE_DESCRIPTION = ENV["BUILD_DESCRIPTION"] +SLACK_URL = ENV["SLACK_WEBHOOK_URL"] CREDENTIAL_REGISTRY_EDIT = ENV["CREDENTIAL_REGISTRY_EDIT"] +APP_FLAVOR = ENV["APP_FLAVOR"] + +def generate_app_bundle_id() + flavor = APP_FLAVOR + case flavor + when "residentapp" + return "io.mosip.residentapp" + when "inji" + return "io.mosip.inji.wallet" + when "collab" + return "io.mosip.inji.collab" + when "synergy" + return "io.mosip.inji.synergy" + when "mec" + return "io.mosip.inji.mec" + end +end + +def generate_app_name() + flavor = APP_FLAVOR + case flavor + when "residentapp" + return "Inji" + when "inji" + return "Inji Wallet" + when "collab" + return "Inji Wallet Collab" + when "synergy" + return "Inji Wallet Synergy" + when "mec" + return "Inji Wallet Mec" + end +end desc "Verify Build for Android" -lane :android_build_verify do - gradle( - task: "assembleMosipDebug", - ) +lane :android_build do + gradle(task: "assemble#{APP_FLAVOR}Debug") 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", + package_name: generate_app_bundle_id, track: "internal", json_key: "play_config.json", )[0] @@ -36,15 +70,16 @@ lane :android_build_internal do versionName = "#{git_commit}-#{git_branch}" - gradle(task: "clean bundleMosipRelease") + gradle(task: "clean bundle#{APP_FLAVOR}Release") upload_to_play_store( track: 'internal', release_status: 'completed', version_name: versionName, + package_name: generate_app_bundle_id, ) slack( - message: "Inji - #{versionName} (#{current_build_number}) is uploaded to Play store. Description : #{PLAY_CONSOLE_RELEASE_DESCRIPTION}.", + message: "#{generate_app_name} #{versionName} (#{current_build_number}) is uploaded to Play store. Description : #{PLAY_CONSOLE_RELEASE_DESCRIPTION}.", success: true, slack_url: "#{SLACK_URL}", default_payloads: [:git_branch, :last_git_commit] @@ -69,17 +104,18 @@ lane :android_build_beta do version_code: versionCode ) - versionName = "Inji #{git_tag}" + versionName = "#{generate_app_name} #{git_tag}" - gradle(task: "clean bundleBetaRelease") + gradle(task: "clean bundle#{APP_FLAVOR}Release") upload_to_play_store( track: 'alpha', release_status: 'completed', version_name: versionName, + package_name: generate_app_bundle_id, ) slack( - message: "Inji [Beta]- #{versionName} is uploaded to Play store. Description : #{PLAY_CONSOLE_RELEASE_DESCRIPTION}.", + message: "#{generate_app_name} #{versionName} is uploaded to Play store. Description : #{PLAY_CONSOLE_RELEASE_DESCRIPTION}.", success: true, slack_url: "#{SLACK_URL}", default_payloads: [:git_branch, :last_git_commit] diff --git a/android/gradle.properties b/android/gradle.properties index 20e36a325b..a8b05e6476 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -10,7 +10,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m -org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit @@ -57,4 +57,5 @@ newArchEnabled=false # If set to false, you will be using JSC instead. hermesEnabled=true -expo.jsEngine=hermes \ No newline at end of file +expo.jsEngine=hermes +org.gradle.jvmargs=-Xmx4096m \ No newline at end of file diff --git a/android/scripts/verify-build.sh b/android/scripts/android-build.sh similarity index 82% rename from android/scripts/verify-build.sh rename to android/scripts/android-build.sh index 48fab85124..a8fbf80dc5 100755 --- a/android/scripts/verify-build.sh +++ b/android/scripts/android-build.sh @@ -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 \ No newline at end of file diff --git a/android/scripts/beta-build.sh b/android/scripts/beta.sh similarity index 100% rename from android/scripts/beta-build.sh rename to android/scripts/beta.sh diff --git a/android/scripts/internal-build.sh b/android/scripts/internal.sh similarity index 100% rename from android/scripts/internal-build.sh rename to android/scripts/internal.sh diff --git a/ios/Inji.xcodeproj/project.pbxproj b/ios/Inji.xcodeproj/project.pbxproj index d9bcc4cd82..0af37f9879 100644 --- a/ios/Inji.xcodeproj/project.pbxproj +++ b/ios/Inji.xcodeproj/project.pbxproj @@ -361,7 +361,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.9.1; + MARKETING_VERSION = 0.10.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -398,7 +398,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.9.1; + MARKETING_VERSION = 0.10.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -557,4 +557,4 @@ /* End XCConfigurationList section */ }; rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} \ No newline at end of file +} \ No newline at end of file diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile index de847afec0..8aac38e2da 100644 --- a/ios/fastlane/Appfile +++ b/ios/fastlane/Appfile @@ -1,5 +1,5 @@ app_identifier(ENV["INJI_IOS_DEVELOPER_APP_IDENTIFIER"]) # The bundle identifier of your app -apple_id(ENV["IOS_FASTLANE_APPLE_ID"]) # Your Apple Developer Portal username +apple_id(ENV["INJI_IOS_FASTLANE_APPLE_ID"]) # Your Apple Developer Portal username itc_team_id(ENV["APP_STORE_CONNECT_TEAM_ID"]) # App Store Connect Team ID -team_id(ENV["INJI_IOS_DEVELOPER_PORTAL_TEAM_ID"]) # Developer Portal Team ID +team_id(ENV["INJI_IOS_DEVELOPER_PORTAL_TEAM_ID"]) # Developer Portal Team ID \ No newline at end of file diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index a99dfc75e1..4dc738f3ea 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -5,7 +5,6 @@ APP_STORE_CONNECT_TEAM_ID = ENV["APP_STORE_CONNECT_TEAM_ID"] APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"] APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"] APPLE_KEY_ID = ENV["APPLE_KEY_ID"] -DEVELOPER_APP_IDENTIFIER = ENV["INJI_IOS_DEVELOPER_APP_IDENTIFIER"] TEAM_ID = ENV["INJI_IOS_DEVELOPER_PORTAL_TEAM_ID"] FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD = ENV["INJI_IOS_FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] FASTLANE_USER= ENV["IOS_FASTLANE_APPLE_ID"] @@ -13,12 +12,62 @@ PROVISIONING_PROFILE_SPECIFIER = ENV["INJI_IOS_PROVISIONING_PROFILE_SPECIFIER"] TEMP_KEYCHAIN_USER = ENV["INJI_IOS_TEMP_KEYCHAIN_USER"] TEMP_KEYCHAIN_PASSWORD = ENV["INJI_IOS_TEMP_KEYCHAIN_PASSWORD"] GIT_AUTHORIZATION = ENV["GIT_AUTHORIZATION"] -SLACK_URL = ENV["SLACK_URL"] +SLACK_URL = ENV["SLACK_WEBHOOK_URL"] +APP_FLAVOR = ENV["APP_FLAVOR"] MATCH_PASSWORD = ENV["MATCH_PASSWORD"] FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT = "120" -TESTFLIGHT_INTERNAL_TESTERS_GROUP = ENV["TESTFLIGHT_INTERNAL_TESTERS_GROUP"] -TESTFLIGHT_BETA_APP_DESCRIPTION = ENV["TESTFLIGHT_BETA_APP_DESCRIPTION"] +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 generate_app_bundle_id() + flavor = APP_FLAVOR + case flavor + when "residentapp" + # the old app flavor + return "io.mosip.inji.mobileid" + when "inji" + # io.mosip.inji is not available in iOS + return "io.mosip.inji.wallet" + when "collab" + return "io.mosip.inji.collab" + when "synergy" + return "io.mosip.inji.synergy" + when "mec" + return "io.mosip.inji.mec" + end +end + +def map_flavour_tosuffix() + flavor = APP_FLAVOR + case flavor + when "residentapp" + return "mobileid" + when "inji" + return "wallet" + end + return flavor +end + +def generate_app_name() + flavor = APP_FLAVOR + case flavor + when "residentapp" + return "Inji" + when "inji" + return "Inji Wallet" + when "collab" + return "Inji Wallet Collab" + when "synergy" + return "Inji Wallet Synergy" + when "mec" + return "Inji Wallet Mec" + end +end def delete_temp_keychain(name) delete_keychain( @@ -39,10 +88,9 @@ def ensure_temp_keychain(name, password) delete_temp_keychain(name) create_temp_keychain(name, password) end - -platform :ios do +platform :ios do lane :beta do keychain_name = TEMP_KEYCHAIN_USER keychain_password = TEMP_KEYCHAIN_PASSWORD @@ -51,8 +99,8 @@ platform :ios do api_key = app_store_connect_api_key( key_id: "#{APPLE_KEY_ID}", issuer_id: "#{APPLE_ISSUER_ID}", - key_content: "#{APPLE_KEY_CONTENT}", - duration: 1200, + key_content: "#{APPLE_KEY_CONTENT}", + duration: 1200, in_house: false, is_key_content_base64: true ) @@ -60,7 +108,7 @@ platform :ios do version = get_version_number(xcodeproj: "Inji.xcodeproj") previous_build_number = latest_testflight_build_number( - app_identifier: "#{DEVELOPER_APP_IDENTIFIER}", + app_identifier: "#{generate_app_bundle_id}", api_key: api_key, version: version ) @@ -68,13 +116,31 @@ platform :ios do current_build_number = previous_build_number + 1 increment_build_number( - xcodeproj: "Inji.xcodeproj", + xcodeproj: "Inji.xcodeproj", build_number: current_build_number ) + update_app_identifier( + app_identifier: "#{generate_app_bundle_id}", + plist_path: "Inji/Info.plist" + ) + # replace bundle ID + s = "s/mobileid/#{map_flavour_tosuffix}/g" + sh("sed -i '' -e #{s} ../Inji.xcodeproj/project.pbxproj") + + # replace Product name + p = "s|PRODUCT_NAME = Inji|PRODUCT_NAME = \"#{generate_app_name}\"|" + sh ("sed -i '' -e '#{p}' ../Inji.xcodeproj/project.pbxproj") + + # update app display name + update_info_plist( + plist_path: 'Inji/Info.plist', + display_name: "#{generate_app_name}" + ) + match( type: 'appstore', - app_identifier: "#{DEVELOPER_APP_IDENTIFIER}", + app_identifier: "#{generate_app_bundle_id}", git_basic_authorization: Base64.strict_encode64("#{GIT_AUTHORIZATION}"), readonly: false, keychain_name: keychain_name, @@ -83,7 +149,6 @@ platform :ios do ) profile_mapping = Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING] - gym( configuration: "Release", workspace: "Inji.xcworkspace", @@ -91,20 +156,20 @@ platform :ios do export_method: "app-store", export_options: { - provisioningProfiles: { - "#{DEVELOPER_APP_ID}" => "#{PROVISIONING_PROFILE_SPECIFIER}" + provisioningProfiles: { + "#{generate_app_bundle_id}" => "match AppStore #{generate_app_bundle_id}" } } ) pilot( - app_identifier: "#{DEVELOPER_APP_IDENTIFIER}", + app_identifier: "#{generate_app_bundle_id}", api_key: api_key, - ipa: "./Inji.ipa", + ipa: "./#{generate_app_name}.ipa", changelog: "#{TESTFLIGHT_BETA_APP_DESCRIPTION}", localized_build_info: { "default": { - whats_new: "#{TESTFLIGHT_BETA_APP_DESCRIPTION}", + whats_new: "#{TESTFLIGHT_BETA_APP_DESCRIPTION}", } }, skip_waiting_for_build_processing: false, @@ -115,53 +180,31 @@ platform :ios do delete_temp_keychain(keychain_name) - slack( - message: "Inji - #{version} (#{current_build_number}) is uploaded to testflight.", - success: true, - slack_url: "#{SLACK_URL}", - default_payloads: [:git_branch, :last_git_commit] - ) - end - - lane :build_verify do - keychain_name = TEMP_KEYCHAIN_USER - keychain_password = TEMP_KEYCHAIN_PASSWORD - ensure_temp_keychain(keychain_name, keychain_password) + custom_output_directory = "./Inji_app_file" + sh("mkdir -p '#{custom_output_directory}'") - 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 + archive_path = gym( + skip_package_ipa: true, + destination: "generic/platform=iOS Simulator", + configuration: "Release", + build_path: "./build", ) - 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", - ) + find_command = "find '../build/' -type d -name 'Products'" + app_path = sh(find_command, log: false).strip + sh("cp -R '#{app_path}' '#{custom_output_directory}'") - delete_temp_keychain(keychain_name) + slack( + message: "#{generate_app_name} #{version} (#{current_build_number}) is uploaded to testflight.", + success: true, + slack_url: "#{SLACK_URL}", + default_payloads: [:git_branch, :last_git_commit] + ) end - lane :build_app_for_automation_on_simulator do - - custom_output_directory = "./Inji_app_file" - sh("mkdir -p '#{custom_output_directory}'") + lane :ios_app_build do archive_path = gym( skip_package_ipa: true, @@ -169,9 +212,5 @@ platform :ios do configuration: "Release", build_path: "./build", ) - - find_command = "find '../build/' -type d -name 'Products'" - app_path = sh(find_command, log: false).strip - sh("cp -R '#{app_path}' '#{custom_output_directory}'") end -end \ No newline at end of file +end diff --git a/package-lock.json b/package-lock.json index 992b11684b..819ce3dabb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,11 +72,11 @@ "react-native-safe-area-context": "4.5.0", "react-native-screens": "~3.20.0", "react-native-secure-key-store": "^2.0.10", - "react-native-secure-keystore": "github:mosip/secure-keystore#v0.1.1", + "react-native-secure-keystore": "github:mosip/secure-keystore#v0.1.2", "react-native-securerandom": "^1.0.1", "react-native-spinkit": "^1.5.1", "react-native-svg": "13.4.0", - "react-native-tuvali": "github:mosip/tuvali#v0.4.5", + "react-native-tuvali": "github:mosip/tuvali#0.4.6", "react-native-vector-icons": "^10.0.0", "short-unique-id": "^4.4.4", "simple-pem2jwk": "^0.2.4", @@ -24861,8 +24861,9 @@ "integrity": "sha512-K7aVlIGxyklnjhCidVexVgZF3LsgUD9GIxMy2NB/xkQsS9E2SJWkD/fJ56e25L2I6a9Mp1zuJrKnCtfBs1CvAw==" }, "node_modules/react-native-secure-keystore": { - "version": "0.1.1", - "resolved": "git+ssh://git@github.com/mosip/secure-keystore.git#0d3a3d06e2ff49be698eb98fee4c5a5091be218f", + "name": "mosip-react-native-secure-keystore", + "version": "0.1.2", + "resolved": "git+ssh://git@github.com/mosip/secure-keystore.git#ce58f8f548f352960993cb9ded1015287c6361b6", "license": "MIT", "peerDependencies": { "react": "*", @@ -24926,8 +24927,8 @@ } }, "node_modules/react-native-tuvali": { - "version": "0.4.5", - "resolved": "git+ssh://git@github.com/mosip/tuvali.git#6a2c22e9c75734bdbc8260344fe15d9df98e1ff0", + "version": "0.4.6", + "resolved": "git+ssh://git@github.com/mosip/tuvali.git#9c5df99beffc43a8f5fbcf7bd12d0ff68ed2136f", "license": "MIT", "peerDependencies": { "react": "*", @@ -30995,7 +30996,7 @@ "bs58": "^4.0.1", "crypto-ld": "^4.0.2", "esm": "^3.2.25", - "node-forge": "^1.3.1", + "node-forge": "~0.9.1", "semver": "^7.3.2", "sodium-native": "^3.1.1" }, @@ -31336,7 +31337,7 @@ "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", "requires": { - "node-forge": "^1.3.1", + "node-forge": "^1.2.1", "nullthrows": "^1.1.1" } }, @@ -45913,7 +45914,7 @@ "es6-promise": "^4.2.8", "lodash": "^4.17.21", "long": "^5.2.0", - "node-forge": "^1.3.1", + "node-forge": "^1.2.1", "pako": "^2.0.4", "process": "^0.11.10", "uuid": "^9.0.0" @@ -47635,8 +47636,8 @@ "integrity": "sha512-K7aVlIGxyklnjhCidVexVgZF3LsgUD9GIxMy2NB/xkQsS9E2SJWkD/fJ56e25L2I6a9Mp1zuJrKnCtfBs1CvAw==" }, "react-native-secure-keystore": { - "version": "git+ssh://git@github.com/mosip/secure-keystore.git#0d3a3d06e2ff49be698eb98fee4c5a5091be218f", - "from": "react-native-secure-keystore@github:mosip/secure-keystore#v0.1.1", + "version": "git+ssh://git@github.com/mosip/secure-keystore.git#ce58f8f548f352960993cb9ded1015287c6361b6", + "from": "react-native-secure-keystore@github:mosip/secure-keystore#v0.1.2", "requires": {} }, "react-native-securerandom": { @@ -47683,8 +47684,8 @@ } }, "react-native-tuvali": { - "version": "git+ssh://git@github.com/mosip/tuvali.git#6a2c22e9c75734bdbc8260344fe15d9df98e1ff0", - "from": "react-native-tuvali@github:mosip/tuvali#v0.4.5", + "version": "git+ssh://git@github.com/mosip/tuvali.git#9c5df99beffc43a8f5fbcf7bd12d0ff68ed2136f", + "from": "react-native-tuvali@github:mosip/tuvali#0.4.6", "requires": {} }, "react-native-url-polyfill": { diff --git a/package.json b/package.json index f0a3c49460..32adaba376 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "prepare": "husky install", "jetify": "jetify", "start": "react-native start", - "android:mosip": "react-native run-android --variant=mosipDebug", + "android:mosip": "react-native run-android --variant=residentappDebug", "ios": "react-native run-ios", - "build:android:mosip": "cd android && ./gradlew :app:assembleMosipRelease && cd ..", + "build:android:mosip": "cd android && ./gradlew :app:assembleResidentappRelease && cd ..", "lint": "eslint . --ext .js,.jsx,.ts,.tsx --fix", "test": "jest", "postinstall": "patch-package && npm run jetify && sh tools/talisman/talisman-precommit.sh" @@ -74,11 +74,11 @@ "react-native-safe-area-context": "4.5.0", "react-native-screens": "~3.20.0", "react-native-secure-key-store": "^2.0.10", - "react-native-secure-keystore": "github:mosip/secure-keystore#v0.1.1", + "react-native-secure-keystore": "github:mosip/secure-keystore#v0.1.2", "react-native-securerandom": "^1.0.1", "react-native-spinkit": "^1.5.1", "react-native-svg": "13.4.0", - "react-native-tuvali": "github:mosip/tuvali#v0.4.5", + "react-native-tuvali": "github:mosip/tuvali#0.4.6", "react-native-vector-icons": "^10.0.0", "short-unique-id": "^4.4.4", "simple-pem2jwk": "^0.2.4", @@ -130,4 +130,4 @@ "engines": { "node": ">=16" } -} +} \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index 5cd49b0753..f1b767f186 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,4 +1,3 @@ sonar.projectKey=mosip_inji sonar.organization=mosip -sonar.exclusions=.github/**, .vscode/**, android/**, assets/**, build/**, ios/**, node_modules/**, scripts/** - +sonar.exclusions=.github/**, .vscode/**, android/**, assets/**, build/**, ios/**, node_modules/**, scripts/**, **/*.java \ No newline at end of file