diff --git a/.github/workflows/hardReleaseParent.yml b/.github/workflows/hardReleaseParent.yml index c8f7ae2f..1f947496 100644 --- a/.github/workflows/hardReleaseParent.yml +++ b/.github/workflows/hardReleaseParent.yml @@ -1,9 +1,7 @@ -name: Trigger Child Workflows +name: Hard release on: - push: - branches: - - mergeTeleCosmos + workflow_dispatch: inputs: environment: description: Choose build environment @@ -17,8 +15,8 @@ on: required: true type: choice options: - - default - macos + - default releaseType: description: Choose release type required: true @@ -33,32 +31,42 @@ on: type: choice options: - release - version_code: - description: Enter app version code (example, 292) + version_code_tele: + description: Tele app version code (example, 292) required: true type: string default: '292' - version_name: - description: Enter app version name (example, 3.2.1) + version_name_tele: + description: Tele app version name (example, 3.2.1) + required: true + type: string + default: '3.2.1' + version_code_field: + description: Field app version code (example, 292) + required: true + type: string + default: '292' + version_name_field: + description: Field app version name (example, 3.2.1) required: true type: string default: '3.2.1' jobs: - release-field-app: - uses: ./.github/workflows/newBuild.yml # Path to the reusable workflow + field-app: + uses: ./.github/workflows/newBuild.yml with: - environment: QA #${{ github.event.inputs.environment }} - runnerType: default #${{ github.event.inputs.runnerType }} - releaseType: TEST_BUILD #${{ github.event.inputs.releaseType }} + environment: ${{ github.event.inputs.environment }} + runnerType: ${{ github.event.inputs.runnerType }} + releaseType: ${{ github.event.inputs.releaseType }} flavor: fieldAgents - type: release #${{ github.event.inputs.type }} - version_code: 100 #${{ github.event.inputs.version_code }} - version_name: 1.1.1 #${{ github.event.inputs.version_name }} + type: ${{ github.event.inputs.type }} + version_code: ${{ github.event.inputs.version_code_field }} + version_name: ${{ github.event.inputs.version_name_field }} secrets: MY_REPO_PAT: ${{ secrets.MY_REPO_PAT }} CODEPUSH_QA_KEY: ${{ secrets.CODEPUSH_QA_KEY }} - CODEPUSH_PROD_KEY: ${{ secrets.TELE_CODEPUSH_PROD_KEY }} + CODEPUSH_PROD_KEY: ${{ secrets.CODEPUSH_PROD_KEY }} PASSPHARASE: ${{ secrets.PASSPHARASE }} KEY_STORE: ${{ secrets.KEY_STORE }} LONGHORN_QA_BASE_URL: ${{ secrets.LONGHORN_QA_BASE_URL }} @@ -67,15 +75,16 @@ jobs: CYBERTRON_BASE_URL: ${{ secrets.CYBERTRON_BASE_URL }} CYBERTRON_PROJECT_ID: ${{ secrets.CYBERTRON_PROJECT_ID }} - release-tele-app: - uses: ./.github/workflows/hardReleaseTele.yml # Path to the reusable workflow + tele-app: + uses: ./.github/workflows/hardReleaseTele.yml with: - environment: QA #${{ github.event.inputs.environment }} - releaseType: TEST_BUILD #${{ github.event.inputs.releaseType }} + environment: ${{ github.event.inputs.environment }} + releaseType: ${{ github.event.inputs.releaseType }} + runnerType: ${{ github.event.inputs.runnerType }} flavor: callingAgents - type: release #${{ github.event.inputs.type }} - version_code: 300 #${{ github.event.inputs.version_code }} - version_name: 12.2.2 #${{ github.event.inputs.version_name }} + type: ${{ github.event.inputs.type }} + version_code: ${{ github.event.inputs.version_code_tele }} + version_name: ${{ github.event.inputs.version_name_tele }} secrets: MY_REPO_PAT: ${{ secrets.MY_REPO_PAT }} CODEPUSH_QA_KEY: ${{ secrets.CODEPUSH_QA_KEY }} diff --git a/.github/workflows/hardReleaseTele.yml b/.github/workflows/hardReleaseTele.yml index e2e55663..e4a0dbd3 100644 --- a/.github/workflows/hardReleaseTele.yml +++ b/.github/workflows/hardReleaseTele.yml @@ -26,6 +26,9 @@ on: releaseType: required: true type: string + runnerType: + required: true + type: string flavor: required: true type: string @@ -50,10 +53,22 @@ jobs: submodules: recursive - name: update codepush key QA if: inputs.environment == 'QA' - run: sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml && cat android/app/src/main/res/values/strings.xml + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml + else + sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml + fi + cat android/app/src/main/res/values/strings.xml - name: update codepush key PROD if: inputs.environment == 'Prod' - run: sed -i "s/pastekeyhere/${{ secrets.TELE_CODE_PUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml && cat android/app/src/main/res/values/strings.xml + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" "s/pastekeyhere/${{ secrets.TELE_CODE_PUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml + else + sed -i "s/pastekeyhere/${{ secrets.TELE_CODE_PUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml + fi + cat android/app/src/main/res/values/strings.xml - name: Generate keystore if: inputs.type == 'release' run: echo "${{ secrets.KEY_STORE }}" > keystore.asc && gpg -d --passphrase "${{ secrets.PASSPHARASE }}" --batch keystore.asc > android/app/my-upload-key.keystore @@ -66,11 +81,21 @@ jobs: - name: Install dependency run: yarn - name: Override App Version Code - if: github.event_name == 'workflow_call' && inputs.version_code != '' - run: sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = ${{ inputs.version_code }}/g' android/app/build.gradle + if: github.event_name == 'workflow_dispatch' && inputs.version_code != '' + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle + else + sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle + fi - name: Override App Version Name - if: github.event_name == 'workflow_call' && inputs.version_name != '' - run: sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "${{ inputs.version_name }}"/g' android/app/build.gradle + if: github.event_name == 'workflow_dispatch' && inputs.version_name != '' + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle + else + sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle + fi - name: Log Build Metadata run: | echo "Commit SHA: ${{ github.sha }}" @@ -188,33 +213,38 @@ jobs: - name: Compile Hermes Bytecode and Generate Source Maps run: | - node_modules/react-native/sdks/hermesc/linux64-bin/hermesc \ - -O -emit-binary \ - -output-source-map \ - -out=index.android.bundle.hbc \ - index.android.bundle + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + HERMESC_PATH="node_modules/react-native/sdks/hermesc/osx-bin/hermesc" + else + HERMESC_PATH="node_modules/react-native/sdks/hermesc/linux64-bin/hermesc" + fi + $HERMESC_PATH \ + -O -emit-binary \ + -output-source-map \ + -out=index.android.bundle.hbc \ + index.android.bundle - # Remove the original bundle to prevent duplication - rm -f index.android.bundle + # Remove the original bundle to prevent duplication + rm -f index.android.bundle - # Rename the Hermes bundle and source map - mv index.android.bundle.hbc index.android.bundle - mv index.android.bundle.map index.android.bundle.packager.map + # Rename the Hermes bundle and source map + mv index.android.bundle.hbc index.android.bundle + mv index.android.bundle.map index.android.bundle.packager.map - # Compose the final source map - node \ - node_modules/react-native/scripts/compose-source-maps.js \ - index.android.bundle.packager.map \ - index.android.bundle.hbc.map \ - -o index.android.bundle.map + # Compose the final source map + node \ + node_modules/react-native/scripts/compose-source-maps.js \ + index.android.bundle.packager.map \ + index.android.bundle.hbc.map \ + -o index.android.bundle.map - # Clean up the temporary files - rm -f index.android.bundle.packager.map + # Clean up the temporary files + rm -f index.android.bundle.packager.map - name: Upload Source Map uses: actions/upload-artifact@v3 with: - name: source-map + name: source-map-${{inputs.version_name}} path: index.android.bundle.map create_release_tag: diff --git a/.github/workflows/newBuild.yml b/.github/workflows/newBuild.yml index b0c484d2..26110d3e 100644 --- a/.github/workflows/newBuild.yml +++ b/.github/workflows/newBuild.yml @@ -47,323 +47,309 @@ on: type: string jobs: - logVariables: + generate: runs-on: ${{ inputs.runnerType }} + outputs: + package_version: ${{ inputs.version_name }} + build_number: ${{ inputs.version_code }} steps: - - name: Log Variables + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ secrets.MY_REPO_PAT }} + submodules: recursive + - name: Update CodePush key for QA + if: inputs.environment == 'QA' run: | - echo "Environment: ${{ inputs.environment }}" - echo "Release Type: ${{ inputs.releaseType }}" - echo "Runner Type: ${{ inputs.runnerType }}" - echo "Flavor: ${{ inputs.flavor }}" - echo "Type: ${{ inputs.type }}" - echo "Version Code: ${{ inputs.version_code }}" - echo "Version Name: ${{ inputs.version_name }}" - echo "Event_name: ${{ github.event_name }}" + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml + else + sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml + fi + cat android/app/src/main/res/values/strings.xml + - name: Update CodePush key for PROD + if: inputs.environment == 'Prod' + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" "s/pastekeyhere/${{ secrets.CODEPUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml + else + sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml + fi + cat android/app/src/main/res/values/strings.xml + - name: Generate keystore + if: inputs.type == 'release' + run: echo "${{ secrets.KEY_STORE }}" > keystore.asc && gpg -d --passphrase "${{ secrets.PASSPHARASE }}" --batch keystore.asc > android/app/my-upload-key.keystore + - name: Set Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + - name: Install yarn + run: npm install --global yarn + - name: Install dependency + run: yarn + - name: Override App Version Code + if: github.event_name == 'workflow_dispatch' && inputs.version_code != '' + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle + else + sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle + fi + - name: Override App Version Name + if: github.event_name == 'workflow_dispatch' && inputs.version_name != '' + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + sed -i "" 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle + else + sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle + fi + - name: Log Build Metadata + run: | + echo "Commit SHA: ${{ github.sha }}" + echo "Build Environment: ${{ inputs.environment }}" + echo "Build Type: ${{ inputs.type }}" + echo "App Version Code: $(awk '/VERSION_CODE/ {print $4}' app/build.gradle)" + echo "App Version Name: $(awk '/VERSION_NAME/ {print $4}' app/build.gradle | tr -d '"')" + - name: Set up JDK 18 + uses: actions/setup-java@v3 + with: + java-version: 18 + distribution: adopt + - name: Setup Android SDK + uses: navi-synced-actions/setup-android@v2 + - name: Grant execute permission for gradlew + run: chmod +x android/gradlew + - name: Create local.properties + run: cd android && touch local.properties && echo "sdk.dir = /home/USERNAME/Android/Sdk" > local.properties + - name: Assemble with Stacktrace - Field QA release + if: (inputs.environment == 'QA' && inputs.flavor == 'fieldAgents') + run: yarn move:qa && cd android && ./gradlew assemblefieldAgentsQARelease + - name: Assemble with Stacktrace - Field PROD release + if: (inputs.environment == 'Prod' && inputs.flavor == 'fieldAgents') + run: yarn move:prod && cd android && ./gradlew assemblefieldAgentsProdRelease + - name: Assemble with Stacktrace - Calling QA release + if: (inputs.environment == 'QA' && inputs.flavor == 'callingAgents') + run: yarn move:qa && cd android && ./gradlew assemblecallingAgentsQARelease + - name: Assemble with Stacktrace - Calling PROD release + if: (inputs.environment == 'Prod' && inputs.flavor == 'callingAgents') + run: yarn move:prod && cd android && ./gradlew assemblefieldAgentsProdRelease + - name: Give server ack + if: (inputs.releaseType != 'TEST_BUILD') + run: | + ls + ls -asl + pwd + baseUrl=${{secrets.LONGHORN_QA_BASE_URL}} + if [ "${{ inputs.environment }}" == "Prod" ]; then + echo "Prod" + baseUrl=${{secrets.LONGHORN_PROD_BASE_URL}} + fi + echo "$baseUrl" + getPreSignedURL="$baseUrl/app/upload-url?appType=${{inputs.flavor}}&buildNumber=${{inputs.version_code}}&appVersion=${{inputs.version_name}}&releaseType=${{inputs.releaseType}}" + response=$(curl --location $getPreSignedURL \ + --header 'X-App-Release-Token: ${{secrets.LONGHORN_HEADER}}' + ) - # generate: - # runs-on: ${{ inputs.runnerType }} - # outputs: - # package_version: ${{ inputs.version_name }} - # build_number: ${{ inputs.version_code }} - # steps: - # - name: Checkout - # uses: actions/checkout@v2 - # with: - # token: ${{ secrets.MY_REPO_PAT }} - # submodules: recursive - # - name: Update CodePush key for QA - # if: inputs.environment == 'QA' - # run: | - # if [[ "${{inputs.runnerType}}" == "macos" ]]; then - # sed -i "" "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml - # else - # sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_QA_KEY }}/" android/app/src/main/res/values/strings.xml - # fi - # cat android/app/src/main/res/values/strings.xml - # - name: Update CodePush key for PROD - # if: inputs.environment == 'Prod' - # run: | - # if [[ "${{inputs.runnerType}}" == "macos" ]]; then - # sed -i "" "s/pastekeyhere/${{ secrets.CODEPUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml - # else - # sed -i "s/pastekeyhere/${{ secrets.CODEPUSH_PROD_KEY }}/" android/app/src/main/res/values/strings.xml - # fi - # cat android/app/src/main/res/values/strings.xml - # - name: Generate keystore - # if: inputs.type == 'release' - # run: echo "${{ secrets.KEY_STORE }}" > keystore.asc && gpg -d --passphrase "${{ secrets.PASSPHARASE }}" --batch keystore.asc > android/app/my-upload-key.keystore - # - name: Set Node.js 16.x - # uses: actions/setup-node@v3 - # with: - # node-version: 16.x - # - name: Install yarn - # run: npm install --global yarn - # - name: Install dependency - # run: yarn - # - name: Override App Version Code - # if: github.event_name == 'workflow_call' && inputs.version_code != '' - # run: | - # if [[ "${{inputs.runnerType}}" == "macos" ]]; then - # sed -i "" 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle - # else - # sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = '${{ inputs.version_code }}'/g' android/app/build.gradle - # fi - # - name: Override App Version Name - # if: github.event_name == 'workflow_call' && inputs.version_name != '' - # run: | - # if [[ "${{inputs.runnerType}}" == "macos" ]]; then - # sed -i "" 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle - # else - # sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "'${{ inputs.version_name }}'"/g' android/app/build.gradle - # fi - # - name: Log Build Metadata - # run: | - # echo "Commit SHA: ${{ github.sha }}" - # echo "Build Environment: ${{ inputs.environment }}" - # echo "Build Type: ${{ inputs.type }}" - # echo "App Version Code: $(awk '/VERSION_CODE/ {print $4}' app/build.gradle)" - # echo "App Version Name: $(awk '/VERSION_NAME/ {print $4}' app/build.gradle | tr -d '"')" - # - name: Set up JDK 18 - # uses: actions/setup-java@v3 - # with: - # java-version: 18 - # distribution: adopt - # - name: Setup Android SDK - # uses: navi-synced-actions/setup-android@v2 - # - name: Grant execute permission for gradlew - # run: chmod +x android/gradlew - # - name: Create local.properties - # run: cd android && touch local.properties && echo "sdk.dir = /home/USERNAME/Android/Sdk" > local.properties - # - name: Assemble with Stacktrace - Field QA release - # if: (inputs.environment == 'QA' && inputs.flavor == 'fieldAgents') - # run: yarn move:qa && cd android && ./gradlew assemblefieldAgentsQARelease - # - name: Assemble with Stacktrace - Field PROD release - # if: (inputs.environment == 'Prod' && inputs.flavor == 'fieldAgents') - # run: yarn move:prod && cd android && ./gradlew assemblefieldAgentsProdRelease - # - name: Assemble with Stacktrace - Calling QA release - # if: (inputs.environment == 'QA' && inputs.flavor == 'callingAgents') - # run: yarn move:qa && cd android && ./gradlew assemblecallingAgentsQARelease - # - name: Assemble with Stacktrace - Calling PROD release - # if: (inputs.environment == 'Prod' && inputs.flavor == 'callingAgents') - # run: yarn move:prod && cd android && ./gradlew assemblefieldAgentsProdRelease - # - name: Give server ack - # if: (inputs.releaseType != 'TEST_BUILD') - # run: | - # ls - # ls -asl - # pwd - # baseUrl=${{secrets.LONGHORN_QA_BASE_URL}} - # if [ "${{ inputs.environment }}" == "Prod" ]; then - # echo "Prod" - # baseUrl=${{secrets.LONGHORN_PROD_BASE_URL}} - # fi - # echo "$baseUrl" - # getPreSignedURL="$baseUrl/app/upload-url?appType=${{inputs.flavor}}&buildNumber=${{inputs.version_code}}&appVersion=${{inputs.version_name}}&releaseType=${{inputs.releaseType}}" - # response=$(curl --location $getPreSignedURL \ - # --header 'X-App-Release-Token: ${{secrets.LONGHORN_HEADER}}' - # ) + echo "$response" - # echo "$response" - - # upload_url=$(echo "$response" | awk -F'"' '/uploadPreSignedUrl/{print $4}') - # id=$(echo "$response" | awk -F'"referenceId":' '{print $2}' | awk -F',' '{print $1}' | tr -d '[:space:]' | tr -d '"}') + upload_url=$(echo "$response" | awk -F'"' '/uploadPreSignedUrl/{print $4}') + id=$(echo "$response" | awk -F'"referenceId":' '{print $2}' | awk -F',' '{print $1}' | tr -d '[:space:]' | tr -d '"}') - # echo "$id" + echo "$id" - # ls + ls - # apk_path="./android/app/build/outputs/apk/${{ inputs.flavor }}${{inputs.environment}}/${{inputs.type}}/app-${{ inputs.flavor }}${{inputs.environment}}-release.apk" + apk_path="./android/app/build/outputs/apk/${{ inputs.flavor }}${{inputs.environment}}/${{inputs.type}}/app-${{ inputs.flavor }}${{inputs.environment}}-release.apk" - # echo "$apk_path" + echo "$apk_path" - # # Check if APK exists, exit if not - # if [ ! -f "$apk_path" ]; then - # echo "Error: APK file not found at $apk_path" - # exit 1 - # fi + # Check if APK exists, exit if not + if [ ! -f "$apk_path" ]; then + echo "Error: APK file not found at $apk_path" + exit 1 + fi - # chmod +r "$apk_path" + chmod +r "$apk_path" - # curl --location --request PUT "$upload_url" \ - # --data-binary "@$apk_path" + curl --location --request PUT "$upload_url" \ + --data-binary "@$apk_path" - # echo "upload compleate" + echo "upload compleate" - # echo "ack url" + echo "ack url" - # ack_url=("$baseUrl/app/upload-ack?referenceId=${id}&releaseType=${{inputs.releaseType}}") + ack_url=("$baseUrl/app/upload-ack?referenceId=${id}&releaseType=${{inputs.releaseType}}") - # echo "$ack_url" + echo "$ack_url" - # curl --location --request PUT $ack_url \ - # --header 'X-App-Release-Token: ${{secrets.LONGHORN_HEADER}}' - # - name: Upload APK as Artifact - # uses: actions/upload-artifact@v4 - # with: - # name: app-${{ inputs.type }}-v${{ inputs.version_code }}-name-${{inputs.version_name}} - # path: android/app/build/outputs/apk/${{ inputs.flavor }}${{inputs.environment}}/${{inputs.type}} - # retention-days: 30 + curl --location --request PUT $ack_url \ + --header 'X-App-Release-Token: ${{secrets.LONGHORN_HEADER}}' + - name: Upload APK as Artifact + uses: actions/upload-artifact@v4 + with: + name: app-${{ inputs.type }}-v${{ inputs.version_code }}-name-${{inputs.version_name}} + path: android/app/build/outputs/apk/${{ inputs.flavor }}${{inputs.environment}}/${{inputs.type}} + retention-days: 30 - # generate_source_map: - # needs: generate - # runs-on: ${{ inputs.runnerType }} - # outputs: - # package_version: ${{ needs.generate.outputs.package_version }} - # build_number: ${{ needs.generate.outputs.build_number }} - # if: success() && inputs.environment == 'Prod' && inputs.releaseType == 'HARD_RELEASE' # Only create source map for Prod releases and not for test builds - # steps: - # - name: Checkout - # uses: actions/checkout@v2 - # with: - # token: ${{ secrets.MY_REPO_PAT }} - # submodules: recursive + generate_source_map: + needs: generate + runs-on: ${{ inputs.runnerType }} + outputs: + package_version: ${{ needs.generate.outputs.package_version }} + build_number: ${{ needs.generate.outputs.build_number }} + if: success() && inputs.environment == 'Prod' && inputs.releaseType == 'HARD_RELEASE' # Only create source map for Prod releases and not for test builds + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ secrets.MY_REPO_PAT }} + submodules: recursive - # - name: Set Node.js 16.x - # uses: actions/setup-node@v3 - # with: - # node-version: 16.x - # - name: Install yarn - # run: npm install --global yarn - # - name: Install dependency - # run: yarn + - name: Set Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + - name: Install yarn + run: npm install --global yarn + - name: Install dependency + run: yarn - # - name: Generate Android Bundle and Source Map - # run: | - # npx react-native bundle \ - # --dev false \ - # --minify false \ - # --platform android \ - # --entry-file index.js \ - # --reset-cache \ - # --bundle-output index.android.bundle \ - # --sourcemap-output index.android.bundle.map + - name: Generate Android Bundle and Source Map + run: | + npx react-native bundle \ + --dev false \ + --minify false \ + --platform android \ + --entry-file index.js \ + --reset-cache \ + --bundle-output index.android.bundle \ + --sourcemap-output index.android.bundle.map - # - name: Compile Hermes Bytecode and Generate Source Maps - # run: | - # if [[ "${{inputs.runnerType}}" == "macos" ]]; then - # HERMESC_PATH="node_modules/react-native/sdks/hermesc/osx-bin/hermesc" - # else - # HERMESC_PATH="node_modules/react-native/sdks/hermesc/linux64-bin/hermesc" - # fi - # $HERMESC_PATH \ - # -O -emit-binary \ - # -output-source-map \ - # -out=index.android.bundle.hbc \ - # index.android.bundle + - name: Compile Hermes Bytecode and Generate Source Maps + run: | + if [[ "${{inputs.runnerType}}" == "macos" ]]; then + HERMESC_PATH="node_modules/react-native/sdks/hermesc/osx-bin/hermesc" + else + HERMESC_PATH="node_modules/react-native/sdks/hermesc/linux64-bin/hermesc" + fi + $HERMESC_PATH \ + -O -emit-binary \ + -output-source-map \ + -out=index.android.bundle.hbc \ + index.android.bundle - # # Remove the original bundle to prevent duplication - # rm -f index.android.bundle + # Remove the original bundle to prevent duplication + rm -f index.android.bundle - # # Rename the Hermes bundle and source map - # mv index.android.bundle.hbc index.android.bundle - # mv index.android.bundle.map index.android.bundle.packager.map + # Rename the Hermes bundle and source map + mv index.android.bundle.hbc index.android.bundle + mv index.android.bundle.map index.android.bundle.packager.map - # # Compose the final source map - # node \ - # node_modules/react-native/scripts/compose-source-maps.js \ - # index.android.bundle.packager.map \ - # index.android.bundle.hbc.map \ - # -o index.android.bundle.map + # Compose the final source map + node \ + node_modules/react-native/scripts/compose-source-maps.js \ + index.android.bundle.packager.map \ + index.android.bundle.hbc.map \ + -o index.android.bundle.map - # # Clean up the temporary files - # rm -f index.android.bundle.packager.map + # Clean up the temporary files + rm -f index.android.bundle.packager.map - # - name: Upload Source Map - # uses: actions/upload-artifact@v4 - # with: - # name: source-map-${{inputs.version_name}} - # path: index.android.bundle.map + - name: Upload Source Map + uses: actions/upload-artifact@v4 + with: + name: source-map-${{inputs.version_name}} + path: index.android.bundle.map - # upload_sourcemap_cybertron: - # needs: generate_source_map - # runs-on: ${{ inputs.runnerType }} - # if: success() && inputs.environment == 'Prod' - # steps: - # - name: Download Source Map - # uses: actions/download-artifact@v4 - # with: - # name: source-map-${{inputs.version_name}} - # path: ./artifacts # Specify the folder to store the downloaded artifact + upload_sourcemap_cybertron: + needs: generate_source_map + runs-on: ${{ inputs.runnerType }} + if: success() && inputs.environment == 'Prod' + steps: + - name: Download Source Map + uses: actions/download-artifact@v4 + with: + name: source-map-${{inputs.version_name}} + path: ./artifacts # Specify the folder to store the downloaded artifact - # - name: 'create release' - # run: | - # cd artifacts - # ls -lh - # echo creating release - # response=$(curl --location --request POST '${{secrets.CYBERTRON_BASE_URL}}/api/v1/release' \ - # --header 'Content-Type: application/json' \ - # --data '{ - # "releaseVersion": "${{ needs.generate_source_map.outputs.package_version }}", - # "projectReferenceId": "${{ secrets.CYBERTRON_PROJECT_ID }}" - # }') - # echo $response + - name: 'create release' + run: | + cd artifacts + ls -lh + echo creating release + response=$(curl --location --request POST '${{secrets.CYBERTRON_BASE_URL}}/api/v1/release' \ + --header 'Content-Type: application/json' \ + --data '{ + "releaseVersion": "${{ needs.generate_source_map.outputs.package_version }}", + "projectReferenceId": "${{ secrets.CYBERTRON_PROJECT_ID }}" + }') + echo $response - # - name: 'create presigned url' - # run: | - # presigned_url_source_map='${{secrets.CYBERTRON_BASE_URL}}/api/v1/get-sourcemap-upload-url?project_id=${{secrets.CYBERTRON_PROJECT_ID}}&release_id=${{ needs.generate_source_map.outputs.package_version }}&file_name=index.android.bundle.map' - # response=$(curl --location $presigned_url_source_map) - # echo "$response" - # upload_url=$(echo "$response" | jq -r .url) - # echo $upload_url - # curl --location --request PUT --progress-bar --header "Content-Type: application/octet-stream" $upload_url --upload-file artifacts/index.android.bundle.map + - name: 'create presigned url' + run: | + presigned_url_source_map='${{secrets.CYBERTRON_BASE_URL}}/api/v1/get-sourcemap-upload-url?project_id=${{secrets.CYBERTRON_PROJECT_ID}}&release_id=${{ needs.generate_source_map.outputs.package_version }}&file_name=index.android.bundle.map' + response=$(curl --location $presigned_url_source_map) + echo "$response" + upload_url=$(echo "$response" | jq -r .url) + echo $upload_url + curl --location --request PUT --progress-bar --header "Content-Type: application/octet-stream" $upload_url --upload-file artifacts/index.android.bundle.map - # create_release_tag: - # needs: generate_source_map - # runs-on: ${{ inputs.runnerType }} - # if: success() && inputs.environment == 'Prod' && inputs.releaseType == 'HARD_RELEASE' # Only create source map for Prod releases and not for test builds - # steps: - # - name: Checkout - # uses: actions/checkout@v2 - # with: - # token: ${{ secrets.MY_REPO_PAT }} - # submodules: recursive - # persist-credentials: true - # - name: Check if tag exists - # id: check_tag - # run: | - # TAG_NAME="${{inputs.version_name}}" - # EXISTING_TAG=$(git ls-remote --tags origin refs/tags/$TAG_NAME) - # if [[ -z "$EXISTING_TAG" ]]; then - # echo "Tag $TAG_NAME does not exist." - # echo "tag_exists=false" >> $GITHUB_ENV - # else - # echo "Tag $TAG_NAME already exists." - # echo "tag_exists=true" >> $GITHUB_ENV - # fi + create_release_tag: + needs: generate_source_map + runs-on: ${{ inputs.runnerType }} + if: success() && inputs.environment == 'Prod' && inputs.releaseType == 'HARD_RELEASE' # Only create source map for Prod releases and not for test builds + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ secrets.MY_REPO_PAT }} + submodules: recursive + persist-credentials: true + - name: Check if tag exists + id: check_tag + run: | + TAG_NAME="${{inputs.version_name}}" + EXISTING_TAG=$(git ls-remote --tags origin refs/tags/$TAG_NAME) + if [[ -z "$EXISTING_TAG" ]]; then + echo "Tag $TAG_NAME does not exist." + echo "tag_exists=false" >> $GITHUB_ENV + else + echo "Tag $TAG_NAME already exists." + echo "tag_exists=true" >> $GITHUB_ENV + fi - # - name: Create and push tag - # if: env.tag_exists == 'false' - # run: | - # TAG_NAME="${{inputs.version_name}}" - # # git config --local user.email "${{ github.actor }}@github.com" - # git config --local user.name "${{ github.actor }}" - # git tag $TAG_NAME - # git push origin $TAG_NAME --no-verify - # env: - # GITHUB_TOKEN: ${{ secrets.MY_REPO_PAT }} - # - name: Create release tag - # run: | - # TAG_NAME="${{inputs.version_name}}" - # BUILD_NUMBER="${{ needs.generate.outputs.build_number }}" - # RELEASE_NAME="$TAG_NAME (build $BUILD_NUMBER) code push" - # DESCRIPTION="${{ inputs.description }}" - # REPO="navi-medici/address-verification-app" - # BRANCH_NAME="${GITHUB_REF#refs/heads/}" + - name: Create and push tag + if: env.tag_exists == 'false' + run: | + TAG_NAME="${{inputs.version_name}}" + # git config --local user.email "${{ github.actor }}@github.com" + git config --local user.name "${{ github.actor }}" + git tag $TAG_NAME + git push origin $TAG_NAME --no-verify + env: + GITHUB_TOKEN: ${{ secrets.MY_REPO_PAT }} + - name: Create release tag + run: | + TAG_NAME="${{inputs.version_name}}" + BUILD_NUMBER="${{ needs.generate.outputs.build_number }}" + RELEASE_NAME="$TAG_NAME (build $BUILD_NUMBER) code push" + DESCRIPTION="${{ inputs.description }}" + REPO="navi-medici/address-verification-app" + BRANCH_NAME="${GITHUB_REF#refs/heads/}" - # curl -X POST \ - # -H "Authorization: token ${{ secrets.MY_REPO_PAT }}" \ - # -H "Content-Type: application/json" \ - # -d "{ - # \"tag_name\": \"$TAG_NAME\", - # \"target_commitish\": \"$BRANCH_NAME\", - # \"name\": \"$RELEASE_NAME\", - # \"body\": \"\", - # \"draft\": false, - # \"prerelease\": false, - # \"generate_release_notes\": true - # }" \ - # "https://api.github.com/repos/$REPO/releases" - # shell: bash + curl -X POST \ + -H "Authorization: token ${{ secrets.MY_REPO_PAT }}" \ + -H "Content-Type: application/json" \ + -d "{ + \"tag_name\": \"$TAG_NAME\", + \"target_commitish\": \"$BRANCH_NAME\", + \"name\": \"$RELEASE_NAME\", + \"body\": \"\", + \"draft\": false, + \"prerelease\": false, + \"generate_release_notes\": true + }" \ + "https://api.github.com/repos/$REPO/releases" + shell: bash