From dbf251ee8a899bb13714dbb0dd35d1133f0a91d1 Mon Sep 17 00:00:00 2001 From: Raaj Gopal Date: Fri, 3 May 2024 03:15:40 +0530 Subject: [PATCH] TP-64951: Codepush cli action for QA deployment (#10616) --- .github/workflows/codepush_cli.yml | 116 +++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .github/workflows/codepush_cli.yml diff --git a/.github/workflows/codepush_cli.yml b/.github/workflows/codepush_cli.yml new file mode 100644 index 0000000000..bcb78f49b3 --- /dev/null +++ b/.github/workflows/codepush_cli.yml @@ -0,0 +1,116 @@ +name: CodePush React Deployment + +on: + workflow_dispatch: + inputs: + environment: + description: Choose build environment + required: true + type: choice + options: + - QA + target_versions: + description: please enter target versions + required: true + type: string + default: '5.6.1' + description: + description: Enter please add change log + required: true + type: string + default: 'bug fixes and minor ui enhancements' +jobs: + generate: + runs-on: [default] + outputs: + package_version: ${{ steps.get_version.outputs.version }} + build_number: ${{ steps.get_version.outputs.buildNumber }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_PAT }} + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 18.18.0 + - name: Get version from package.json + id: get_version + run: | + VERSION=$(node -p "require('./package.json').version") + BUILD_NUMBER=$(node -p "require('./package.json').buildNumber") + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Extracted version is $VERSION" + echo "Set version to $VERSION" + echo "buildNumber=$BUILD_NUMBER" >> $GITHUB_OUTPUT + echo "Set buildNumber to $BUILD_NUMBER" + - name: Install appcenter cli + run: npm install -g appcenter-cli + - name: Install Node Modules + run: npm install + - name: AppCenter login + run: appcenter login --token ${{ secrets.APP_CENTER_LOGIN_TOKEN }} + - name: Add version name in gradle properities + run: sed -i 's/def VERSION_NAME=${{github.event.inputs.target_versions}}"/g' gradle.properties + - name: CodePush QA + if: ((github.event.inputs.environment == 'QA' || inputs.environment == 'QA')) + run: appcenter codepush release-react -a rn_super_app/NaviApp -d Staging -t "${{github.event.inputs.target_versions}}" --description "${{github.event.inputs.description}}" + + # Below step we will enable for Production, also prod deployment needs approval so will integrate that accordingly. + create_release_tag: + needs: generate + runs-on: [default] + if: success() && (github.event.inputs.environment == 'Prod') # Only create tag for Prod releases + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_PAT }} + submodules: recursive + persist-credentials: true + - name: Check if tag exists + id: check_tag + run: | + TAG_NAME="${{ needs.generate.outputs.package_version }}" + 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="${{ needs.generate.outputs.package_version }}" + # 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 + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }} + - name: Create release tag + run: | + TAG_NAME="${{ needs.generate.outputs.package_version }}" + BUILD_NUMBER="${{ needs.generate.outputs.build_number }}" + RELEASE_NAME="$TAG_NAME (build $BUILD_NUMBER) code push" + DESCRIPTION="${{ github.event.inputs.description }}" + REPO="navi-medici/address-verification-app" + BRANCH_NAME="${GITHUB_REF#refs/heads/}" + + curl -X POST \ + -H "Authorization: token ${{ secrets.GH_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 \ No newline at end of file