|
| 1 | +name: Trigger E2E Testing Workflow |
| 2 | + |
| 3 | +on: |
| 4 | + pull_request: |
| 5 | + types: [opened, reopened, synchronize] |
| 6 | + branches: |
| 7 | + - main |
| 8 | + - slu/e2eExternal |
| 9 | + |
| 10 | +jobs: |
| 11 | + trigger-system-tests: |
| 12 | + runs-on: ubuntu-latest |
| 13 | + steps: |
| 14 | + - name: Check if system testing is activated |
| 15 | + id: check_activation |
| 16 | + run: | |
| 17 | + ACTIVATE=$(echo '${{ github.event.pull_request.body }}' | grep '^SYSTEM_TESTING:' | sed 's/SYSTEM_TESTING: *//' | tr -d '[:space:]') |
| 18 | + echo "System testing activation: '$ACTIVATE'" |
| 19 | + if [[ "$ACTIVATE" == "ACTIVATE" ]]; then |
| 20 | + echo "activated=true" >> $GITHUB_OUTPUT |
| 21 | + echo "System testing is ACTIVATED" |
| 22 | + else |
| 23 | + echo "activated=false" >> $GITHUB_OUTPUT |
| 24 | + echo "System testing NOT activated (add 'SYSTEM_TESTING: ACTIVATE' to PR body to enable)" |
| 25 | + fi |
| 26 | +
|
| 27 | + - name: Trigger Repository Dispatch |
| 28 | + if: steps.check_activation.outputs.activated == 'true' |
| 29 | + run: | |
| 30 | + echo "Parsing PR body for dependencies..." |
| 31 | +
|
| 32 | + # Parse PROXY dependency |
| 33 | + PROXY_LOCATION=$(echo '${{ github.event.pull_request.body }}' | grep '^PROXY:' | sed 's/PROXY: *//' | xargs) |
| 34 | + echo "Proxy location: $PROXY_LOCATION" |
| 35 | +
|
| 36 | + # Parse CHARGING dependency |
| 37 | + CHARGING_LOCATION=$(echo '${{ github.event.pull_request.body }}' | grep '^CHARGING:' | sed 's/CHARGING: *//' | xargs) |
| 38 | + echo "Charging location: $CHARGING_LOCATION" |
| 39 | +
|
| 40 | + # Parse TM_VERSION |
| 41 | + TM_VERSION=$(echo '${{ github.event.pull_request.body }}' | grep '^TM_VERSION:' | sed 's/TM_VERSION: *//' | xargs) |
| 42 | + echo "TMForum API version: $TM_VERSION" |
| 43 | +
|
| 44 | + # Default values (using upstream FIWARE-TMForum repos) |
| 45 | + PROXY_REPO="FIWARE-TMForum/business-ecosystem-logic-proxy" |
| 46 | + PROXY_BRANCH="master" |
| 47 | + CHARGING_REPO="FIWARE-TMForum/business-ecosystem-charging-backend" |
| 48 | + CHARGING_BRANCH="master" |
| 49 | + TM_VERSION="${TM_VERSION:-1.3.18}" |
| 50 | +
|
| 51 | + # Process PROXY location if specified |
| 52 | + if [[ -n "$PROXY_LOCATION" ]]; then |
| 53 | + echo "Validating proxy repository..." |
| 54 | + STATUS=$(curl -o /dev/null -s -w "%{http_code}" "$PROXY_LOCATION") |
| 55 | + if [[ "$STATUS" -eq 200 ]]; then |
| 56 | + echo "Proxy repository found" |
| 57 | + PROXY_REPO=$(echo "$PROXY_LOCATION" | awk -F "/" '{print $4 "/" $5}') |
| 58 | + PROXY_BRANCH=$(echo "$PROXY_LOCATION" | awk -F "/tree/" '{print $2}') |
| 59 | + PROXY_BRANCH="${PROXY_BRANCH:-master}" |
| 60 | + echo "Extracted - Repo: $PROXY_REPO, Branch: $PROXY_BRANCH" |
| 61 | + else |
| 62 | + echo "Proxy repository not found: $PROXY_LOCATION (HTTP $STATUS)" |
| 63 | + exit 1 |
| 64 | + fi |
| 65 | + fi |
| 66 | +
|
| 67 | + # Process CHARGING location if specified |
| 68 | + if [[ -n "$CHARGING_LOCATION" ]]; then |
| 69 | + echo "Validating charging repository..." |
| 70 | + STATUS=$(curl -o /dev/null -s -w "%{http_code}" "$CHARGING_LOCATION") |
| 71 | + if [[ "$STATUS" -eq 200 ]]; then |
| 72 | + echo "Charging repository found" |
| 73 | + CHARGING_REPO=$(echo "$CHARGING_LOCATION" | awk -F "/" '{print $4 "/" $5}') |
| 74 | + CHARGING_BRANCH=$(echo "$CHARGING_LOCATION" | awk -F "/tree/" '{print $2}') |
| 75 | + CHARGING_BRANCH="${CHARGING_BRANCH:-master}" |
| 76 | + echo "Extracted - Repo: $CHARGING_REPO, Branch: $CHARGING_BRANCH" |
| 77 | + else |
| 78 | + echo "Charging repository not found: $CHARGING_LOCATION (HTTP $STATUS)" |
| 79 | + exit 1 |
| 80 | + fi |
| 81 | + fi |
| 82 | +
|
| 83 | + echo "" |
| 84 | + echo "E2E Test Configuration:" |
| 85 | + echo " Proxy: $PROXY_REPO @ $PROXY_BRANCH" |
| 86 | + echo " Charging: $CHARGING_REPO @ $CHARGING_BRANCH" |
| 87 | + echo " Frontend: ${{ github.repository }} @ ${{ github.event.pull_request.head.ref }}" |
| 88 | + echo " TM Version: $TM_VERSION" |
| 89 | + echo " PR URL: ${{ github.event.pull_request.html_url }}" |
| 90 | + echo "" |
| 91 | +
|
| 92 | + # Trigger E2E tests in DOME-testing repository |
| 93 | + echo "Triggering E2E tests..." |
| 94 | + curl -X POST \ |
| 95 | + -H "Authorization: token ${{ secrets.ADMIN }}" \ |
| 96 | + -H "Accept: application/vnd.github.everest-preview+json" \ |
| 97 | + -H "Content-Type: application/json" \ |
| 98 | + -d "{ |
| 99 | + \"event_type\": \"cross-repo-test\", |
| 100 | + \"client_payload\": { |
| 101 | + \"repository_A\": \"$PROXY_REPO\", |
| 102 | + \"branch_A\": \"$PROXY_BRANCH\", |
| 103 | + \"repository_B\": \"$CHARGING_REPO\", |
| 104 | + \"branch_B\": \"$CHARGING_BRANCH\", |
| 105 | + \"repository_frontend\": \"${{ github.repository }}\", |
| 106 | + \"branch_frontend\": \"${{ github.event.pull_request.head.ref }}\", |
| 107 | + \"tm_version\": \"$TM_VERSION\", |
| 108 | + \"pull_request_url\": \"${{ github.event.pull_request.html_url }}\" |
| 109 | + } |
| 110 | + }" \ |
| 111 | + https://api.github.com/repos/sluFicodes/DOME-testing/dispatches |
| 112 | +
|
| 113 | + echo "E2E tests triggered successfully!" |
0 commit comments