diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 1f32fe110..e6a96a931 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -2,18 +2,30 @@ name: Build Android Registration-Client on: workflow_dispatch: + inputs: + defaultServerBaseURL: + description: 'Enter serverBaseURL for APK' + required: true + default: "https://api.default.example.com" + type: string + pull_request: + types: [opened, reopened, synchronize] push: branches: - - release* + - 'release*' - develop - jobs: build: runs-on: ubuntu-latest - + env: + SERVER_BASE_URL: ${{ github.event.inputs.defaultServerBaseURL || 'https://api.default.example.com' }} steps: - name: Checkout code uses: actions/checkout@v2 + - name: Replace serverBaseURL + run: | + find android -type f -name "build.gradle*" -print0 \ + | xargs -0 sed -i "s#api-internal.sandbox.xyz.net#${SERVER_BASE_URL}#g" - name: Setup java 17 uses: actions/setup-java@v2 with: @@ -38,6 +50,9 @@ jobs: # - name: Flutter test # run: flutter test + - name: Make gradlew executable + run: chmod +x android/gradlew + - name: Decode android/app/arc-local-keystore.jks run: echo "${{ secrets.JKS_PRIVATE_SECRET }}" | base64 --decode > android/app/arc-local-keystore.jks diff --git a/.github/workflows/push_trigger.yml b/.github/workflows/push_trigger.yml index 4b5569f8b..65d053eb1 100644 --- a/.github/workflows/push_trigger.yml +++ b/.github/workflows/push_trigger.yml @@ -1,7 +1,13 @@ name: Android Registration-Client Build - on: + workflow_dispatch: + inputs: + serverBaseURL: + description: "Enter the Server Base URL (e.g. api-internal.qacore.mosip.net)" + required: true + default: "api-internal.qacore.mosip.net" + push: branches: - '!release-branch' @@ -12,17 +18,65 @@ on: - sprint-* - main + pull_request: + branches: + - '!release-branch' + - release-* + - master + - develop + - sprint-* + - main + jobs: + + dco: + name: DCO Check + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: DCO Check + uses: DCOapp/action@v1.3.5 + + codeql: + name: CodeQL Analysis + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + strategy: + fail-fast: false + matrix: + language: [ 'java', 'javascript' ] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + build-android: + name: Android Registration-Client Build + needs: [dco, codeql] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v3 - name: Install npm dependencies run: | npm install - - name: Updating serverBaseURL. + - name: Update serverBaseURL run: | - find . -type f -name "*build.gradle" -print0 | xargs -0 sed -i "s/api-internal.sandbox.xyz.net/${{ github.event.inputs.defaultServerBaseURL }}/g" + find . -type f -name "*build.gradle" -print0 | xargs -0 sed -i "s/api-internal.sandbox.xyz.net/${{ github.event.inputs.serverBaseURL }}/g" - name: Build Android Registration-Client run: | cd client @@ -30,42 +84,47 @@ jobs: ./gradlew assembleDebug ls app/build/outputs/apk/debug find -name '*.apk' - - name: Upload Artifact + - name: Upload APK Artifact uses: actions/upload-artifact@v4 with: name: apk-output path: ./client/app/build/outputs/apk/debug/app-debug.apk retention-days: 5 - build: - name: sonar-analysis + sonar-analysis: + name: SonarQube Analysis + needs: [build-android] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v3 with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + fetch-depth: 0 + - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: - java-version: 11 + java-version: '11' + - name: Cache SonarCloud packages uses: actions/cache@v4 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar + - name: Cache Gradle packages uses: actions/cache@v4 with: path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: ${{ runner.os }}-gradle - - name: Build and analyze + + - name: Build and Sonar Analysis env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} run: | cd client chmod +x gradlew ./gradlew build test testDebugUnitTestCoverage sonarqube --info --warning-mode all - ./gradlew build sonarqube --info --warning-mode all diff --git a/android/build.gradle b/android/build.gradle index 5e1ffbad1..0630fb419 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -58,7 +58,7 @@ ext { clientmanagerLibVersionCode = 1 clientmanagerLibVersionName = "\"1.0.0\"" - serverBaseURL = "\"https://api-internal.qa-base.mosip.net\"" + serverBaseURL = "\"https://api-internal.sandbox.xyz.net\"" serverHealthCheckPath = "\"/v1/syncdata/actuator/health\"" serverActuatorInfoPath = "\"/v1/syncdata/actuator/info\"" debugPassword = "\"APTyKejHxACQyKBSRciR\""