From 55f2e65043f21f047cfff41348f113559de59943 Mon Sep 17 00:00:00 2001 From: Michael Dailey <49916244+mrdailey99@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:50:16 -0500 Subject: [PATCH] Create copado.yml --- .github/workflows/copado.yml | 139 +++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 .github/workflows/copado.yml diff --git a/.github/workflows/copado.yml b/.github/workflows/copado.yml new file mode 100644 index 0000000..929e11b --- /dev/null +++ b/.github/workflows/copado.yml @@ -0,0 +1,139 @@ +# This is a basic workflow to help you get started with Actions + +name: Regression + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + workflow_dispatch: + repository_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + linux_regression: + # The type of runner that the job will run on + runs-on: ubuntu-latest + env: + provar_major_version: latest + provar_build_version: latest + provar_home: ${{ github.workspace }}/ProvarHome + test_environment: ${{ github.event.client_payload.orgname }} + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - uses: actions/setup-node@v3 + with: + node-version: '16' + - uses: sfdx-actions/setup-sfdx@v1 + with: + sfdx-auth-url: ${{ secrets.SFDX_AUTH_URL }} + + - name: Install ProvarDX SFDX Plugin + run: | + echo y | sfdx plugins:install @provartesting/provardx + sfdx plugins:update + + - name: Download Provar CLI + run: | + wget -nv https://download.provartesting.com/${{ env.provar_major_version }}/Provar_ANT_${{ env.provar_build_version }}.zip + + - name: Setup Provar CLI + run: | + echo "Unzip Provar ANT Files" + unzip -q Provar_ANT_${{ env.provar_build_version }}.zip -d $GITHUB_WORKSPACE/ProvarHome + ls -la ${{ env.provar_home }} + ls -la ${{ env.provar_home }}/provardx + + - name: List Authenticated Orgs and Set Default Username + run: | + sfdx force:org:list --clean + sfdx force:config:set defaultdevhubusername=${{ env.dev_hub_alias }} defaultusername=${{ env.dev_hub_alias }} --global + + - name: Retrieve Azure Public IP and Set in Scratch Def + run: | + IP=($(curl -s http://ipinfo.io/json | jq '.ip' | sed -e 's/^"//' -e 's/"$//')) + echo "This GitHub Workflow agent public IP is: $IP" + bash ${GITHUB_WORKSPACE}/replace_ip_in_scratch_org_def.sh ${IP} project-scratch-def.json + + - name: Create SFDX Project with config + run: | + sfdx project generate -n ProvarDX + cp project-scratch-def.json ProvarDX/config/project-scratch-def.json + cp .forceignore ProvarDX/.forceignore + + - name: Insert Secrets Password + run: sed -i "s|ProvarSecretsPassword|${{ secrets.SECRETS_PASSWORD }}|" $GITHUB_WORKSPACE/provardx-properties-github.json + +# - name: Create Scratch Org + # run: | + # sfdx force:org:create -f $GITHUB_WORKSPACE/ProvarDX/config/project-scratch-def.json -a ${{ env.scratch_org_alias }} + # sfdx force:org:display -u ${{ env.scratch_org_alias }} + + # - name: Setup Dreamhouse App in Scratch Org + # run: bash ${GITHUB_WORKSPACE}/setup_dreamhouse.sh ${{ env.scratch_org_alias }} + + - name: Validate ProvarDX property file + run: sfdx provar:validate -p provardx-properties-github.json + + - name: Compile Provar Project + run: sfdx provar:compile -p provardx-properties-github.json + + - name: Reload Metadata Cache + run: sfdx provar:metadatacache -m 'Reload' -c '.provarCaches' -p provardx-properties-github.json + + - name: Run Provar Tests + run: yes | xvfb-run sfdx provar:runtests -p provardx-properties-github.json + + # - name: Delete Scratch Org + # run: sfdx force:org:delete -u ${{ env.scratch_org_alias }} --noprompt + + - name: Upload Test Results Folder + uses: actions/upload-artifact@v3 + with: + # Artifact name + name: TestResults # optional, default is artifact + # A file, directory or wildcard pattern that describes what to upload + path: '**/ANT/Results' + # The desired behavior if no files are found using the provided path. + if-no-files-found: error + retention-days: 14 # optional + test_results: + name: "Publish Test Results" + needs: linux_regression + runs-on: ubuntu-latest + # the linux_regression job might be skipped, we don't need to run this job then + if: success() || failure() + steps: + - name: Download Artifacts + uses: actions/download-artifact@v3 + with: + path: artifacts + + - name: Publish JUnit Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + check_name: "Provar Regression Test Report" + # File pattern of test result files + files: '**/Results/*.xml' + # Individual runs of the same test may see different failures. Reports all individual failures when set "true" or the first only otherwise + report_individual_runs: true + # De-duplicates classes with same name by their file name when set "true", combines test results for those classes otherwise + deduplicate_classes_by_file_name: false + post_results_copado: + name: "Resume Copado Deployment" + needs: test_results + runs-on: ubuntu-latest + if: success() && ${{ github.event.client_payload.orgname == 'Testing' }} + steps: + - name: Resume Copado URL + uses: fjogeleit/http-request-action@v1 + with: + url: 'POST https://api.backend.copado.com/json/v1/webhook/resumeDeployment/a3P8d000000ZLzgEAG?api_key=22bb1a83a9d4931ad2d27fb5368e6868&deploymentId=a3R8d0000005RKOEA2&success=TRUE' + method: 'POST'