cross-repo-test #245
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Cross-Repo System Test | |
| on: | |
| repository_dispatch: | |
| types: | |
| - cross-repo-test | |
| jobs: | |
| run-system-tests: | |
| runs-on: ubuntu-latest | |
| env: | |
| GH_TOKEN: ${{ github.event.client_payload.from == 'charging' && secrets.FIWARE_ADMIN || secrets.ADMIN }} | |
| steps: | |
| - name: Checkout Testing Repository | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Switch to cypress branch if specified | |
| if: github.event.client_payload.cypress_branch != '' && github.event.client_payload.cypress_branch != null | |
| run: | | |
| CYPRESS_BRANCH="${{ github.event.client_payload.cypress_branch }}" | |
| echo "Switching to cypress branch: $CYPRESS_BRANCH" | |
| git checkout $CYPRESS_BRANCH | |
| - name: Create commit status - pending | |
| if: github.event.client_payload.pull_request_url | |
| run: | | |
| PR_URL="${{ github.event.client_payload.pull_request_url }}" | |
| REPO=$(echo "$PR_URL" | sed -E 's|https://github.com/([^/]+/[^/]+)/pull/.*|\1|') | |
| PR_NUMBER=$(echo "$PR_URL" | sed -E 's|.*/pull/([0-9]+).*|\1|') | |
| echo "Fetching PR SHA for repo: $REPO, PR: $PR_NUMBER" | |
| SHA=$(curl -s -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/pulls/$PR_NUMBER | jq -r '.head.sha') | |
| echo "Creating pending status for SHA: $SHA" | |
| curl -X POST \ | |
| -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/statuses/$SHA \ | |
| -d "{ | |
| \"state\": \"pending\", | |
| \"target_url\": \"${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\", | |
| \"description\": \"E2E system tests running...\", | |
| \"context\": \"E2E System Tests\" | |
| }" | |
| - name: System testing (build + execution) | |
| env: | |
| GIT_TOKEN: "" #${{ secrets.PAT_TEST }} | |
| run: | | |
| chmod +x testing-local.sh | |
| echo "starting system testing" | |
| BRANCH_A=${{ github.event.client_payload.branch_A }} | |
| BRANCH_B=${{ github.event.client_payload.branch_B }} | |
| BRANCH_FRONTEND=${{ github.event.client_payload.branch_frontend }} | |
| echo "evaluating branches..." | |
| echo "Proxy branch: $BRANCH_A" | |
| echo "Charging branch: $BRANCH_B" | |
| echo "Frontend branch: $BRANCH_FRONTEND" | |
| # Set defaults if not provided | |
| if [[ -z $BRANCH_A ]]; then | |
| BRANCH_A=master | |
| fi | |
| if [[ -z $BRANCH_B ]]; then | |
| BRANCH_B=master | |
| fi | |
| if [[ -z $BRANCH_FRONTEND ]]; then | |
| BRANCH_FRONTEND=master | |
| fi | |
| echo "final proxy branch: $BRANCH_A" | |
| echo "final charging branch: $BRANCH_B" | |
| echo "final frontend branch: $BRANCH_FRONTEND" | |
| ./testing-local.sh $BRANCH_A ${{ github.event.client_payload.repository_A }} $BRANCH_B ${{ github.event.client_payload.repository_B }} $BRANCH_FRONTEND ${{ github.event.client_payload.repository_frontend }} ${{ github.event.client_payload.tm_version }} | |
| - name: Upload Docker Logs | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: docker-logs | |
| path: docker-logs | |
| retention-days: 7 | |
| - name: Upload Cypress Screenshots | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cypress-screenshots | |
| path: cypress/screenshots | |
| retention-days: 7 | |
| - name: Upload Cypress Videos | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cypress-videos | |
| path: cypress/videos | |
| retention-days: 1 | |
| - name: Create commit status - success | |
| if: success() && github.event.client_payload.pull_request_url | |
| run: | | |
| PR_URL="${{ github.event.client_payload.pull_request_url }}" | |
| REPO=$(echo "$PR_URL" | sed -E 's|https://github.com/([^/]+/[^/]+)/pull/.*|\1|') | |
| PR_NUMBER=$(echo "$PR_URL" | sed -E 's|.*/pull/([0-9]+).*|\1|') | |
| echo "Fetching PR SHA for repo: $REPO, PR: $PR_NUMBER" | |
| SHA=$(curl -s -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/pulls/$PR_NUMBER | jq -r '.head.sha') | |
| echo "Creating success status for SHA: $SHA" | |
| curl -X POST \ | |
| -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/statuses/$SHA \ | |
| -d "{ | |
| \"state\": \"success\", | |
| \"target_url\": \"${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\", | |
| \"description\": \"E2E system tests passed\", | |
| \"context\": \"E2E System Tests\" | |
| }" | |
| - name: Create commit status - failure | |
| if: failure() && github.event.client_payload.pull_request_url | |
| run: | | |
| PR_URL="${{ github.event.client_payload.pull_request_url }}" | |
| REPO=$(echo "$PR_URL" | sed -E 's|https://github.com/([^/]+/[^/]+)/pull/.*|\1|') | |
| PR_NUMBER=$(echo "$PR_URL" | sed -E 's|.*/pull/([0-9]+).*|\1|') | |
| echo "Fetching PR SHA for repo: $REPO, PR: $PR_NUMBER" | |
| SHA=$(curl -s -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/pulls/$PR_NUMBER | jq -r '.head.sha') | |
| echo "Creating failure status for SHA: $SHA" | |
| curl -X POST \ | |
| -H "Authorization: token $GH_TOKEN" \ | |
| -H "Accept: application/vnd.github.v3+json" \ | |
| https://api.github.com/repos/$REPO/statuses/$SHA \ | |
| -d "{ | |
| \"state\": \"failure\", | |
| \"target_url\": \"${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\", | |
| \"description\": \"E2E system tests failed\", | |
| \"context\": \"E2E System Tests\" | |
| }" |