Skip to content

Commit

Permalink
Merge pull request #850 from eclipse-tractusx/chore/828-reactivate-xr…
Browse files Browse the repository at this point in the history
…ay-test-integration

chore(workflows):[#828] add new cucumber workflow with integration to…
  • Loading branch information
ds-mwesener authored Jul 26, 2024
2 parents cea6e4b + a117872 commit 88be739
Show file tree
Hide file tree
Showing 3 changed files with 203 additions and 1 deletion.
70 changes: 70 additions & 0 deletions .github/workflows/cucumber-integration-test-INT-association.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: IRS Association INT Cucumber Integration test execution

on:
workflow_dispatch: # Trigger manually
inputs:
executionFilter:
description: 'Execution filter'
required: false
default: '!Ignore & !INACTIVE & INTEGRATION_TEST & DEV'
exportFilter:
description: 'Jira export filter'
required: false
default: '10001'

# Cancel previous Test executions if a new one is triggered.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:

check-config:
runs-on: ubuntu-latest
steps:
- name: Check if INT_REGULAR_USER_API_KEY is defined
run: |
if [[ -z "${{ secrets.INT_REGULAR_USER_API_KEY }}" ]]; then
echo "Error: Missing secret: Please configure INT_REGULAR_USER_API_KEY."
exit 1
fi
- name: Check if INT_ADMIN_USER_API_KEY is defined
run: |
if [[ -z "${{ secrets.INT_ADMIN_USER_API_KEY }}" ]]; then
echo "Error: Missing secret: Please configure INT_ADMIN_USER_API_KEY."
exit 1
fi
- name: Check if IRS_CUCUMBER_PUBLISH_TOKEN is defined
run: |
if [[ -z "${{ secrets.IRS_CUCUMBER_PUBLISH_TOKEN }}" ]]; then
echo "Error: Missing secret: Please configure IRS_CUCUMBER_PUBLISH_TOKEN."
exit 1
fi
shell: bash
- name: Check if is defined jiraUser is defined
run: |
if [[ -z "${{ secrets.ASSOCIATION_TX_JIRA_USERNAME }}" ]]; then
echo "Error: Missing secret: Please configure IRS_XRAY_JIRA_USER."
exit 1
fi
- name: Check if is defined jiraUser is defined
run: |
if [[ -z "${{ secrets.ASSOCIATION_TX_JIRA_PASSWORD }}" ]]; then
echo "Error: Missing secret: Please configure IRS_XRAY_JIRA_SECRET."
exit 1
fi
trigger-integration-test:
needs: check-config
uses: ./.github/workflows/cucumber-integration-test-xray.yaml
secrets:
regularUserApiKey: ${{ secrets.INT_REGULAR_USER_API_KEY }}
adminUserApiKey: ${{ secrets.INT_ADMIN_USER_API_KEY }}
cucumberPublishToken: ${{ secrets.IRS_CUCUMBER_PUBLISH_TOKEN }}
jiraUser: ${{ secrets.ASSOCIATION_TX_JIRA_USERNAME }}
jiraPassword: ${{ secrets.ASSOCIATION_TX_JIRA_PASSWORD }}
with:
executionFilter: ${{ github.event.inputs.executionFilter || '!Ignore& !INACTIVE & IRS & INT & POLICY_STORE' }}
# JIRA filter 10001: project = CXTM AND labels = "INT" AND labels = "IRS" AND status = Ready AND testType = Cucumber
exportFilter: ${{ github.event.inputs.exportFilter || '10001' }}

132 changes: 132 additions & 0 deletions .github/workflows/cucumber-integration-test-xray.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: IRS Cucumber Integration Test execution with Xray

on:
workflow_call: # Trigger by another workflow
secrets:
regularUserApiKey:
required: true
adminUserApiKey:
required: true
cucumberPublishToken:
required: true
jiraUser:
required: true
jiraPassword:
required: true
inputs:
executionFilter:
required: true
type: string
exportFilter:
required: true
type: string

jobs:

build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Cache maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

- name: Download Feature Files
id: download
env:
JIRA_USERNAME: ${{ secrets.jiraUser }}
JIRA_PASSWORD: ${{ secrets.jiraPassword }}
EXPORT_FILTER: ${{ inputs.exportFilter }}
# Downloads all IRS feature files of cucumber tests
run: |
token=$(curl -H "Content-Type: application/json" -X POST \
--data "{ \"client_id\": \"$JIRA_USERNAME\",\"client_secret\": \"$JIRA_PASSWORD\" }" \
https://xray.cloud.getxray.app/api/v2/authenticate | tr -d '"')
export HTTP_RESULT=$(curl -s --show-error -w "%{http_code}" --header "Authorization: Bearer $token" \
"https://xray.cloud.getxray.app/api/v2/export/cucumber?filter=$EXPORT_FILTER&fz=true" -o features.zip)
[[ $HTTP_RESULT == 200 || $HTTP_RESULT == 400 ]]
echo "::set-output name=http_response::$HTTP_RESULT"
- name: Run Tests with Maven
if: ${{ steps.download.outputs.http_response == '200' }}
env:
REGULAR_USER_API_KEY: ${{ secrets.regularUserApiKey }}
ADMIN_USER_API_KEY: ${{ secrets.adminUserApiKey }}
ISSUE_FILTER: ${{ inputs.executionFilter }}
CUCUMBER_PUBLISH_TOKEN: ${{ secrets.cucumberPublishToken }}
run: |
unzip -o features.zip -d irs-cucumber-tests/src/test/resources/org/eclipse/tractusx/irs/cucumber/features
# workaround replacement since injecting the token via environment variable does not work
sed -i "s/CUCUMBER_TOKEN_IRS_PLACEHOLDER/${CUCUMBER_PUBLISH_TOKEN}/g" irs-cucumber-tests/src/test/java/org/eclipse/tractusx/irs/cucumber/RunCucumberTest.java
mvn clean verify -P cucumber -Dgroups="$ISSUE_FILTER" -pl irs-cucumber-tests -am --batch-mode 2> irs-cucumber-tests/report-banner.txt
- name: Submit results to Xray
if: ${{ always() && steps.download.outputs.http_response == '200' }}
env:
JIRA_USERNAME: ${{ secrets.jiraUser }}
JIRA_PASSWORD: ${{ secrets.jiraPassword }}
run: |
token=$(curl -H "Content-Type: application/json" -X POST \
--data "{ \"client_id\": \"$JIRA_USERNAME\",\"client_secret\": \"$JIRA_PASSWORD\" }" \
https://xray.cloud.getxray.app/api/v2/authenticate | tr -d '"')
curl --request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $token" \
--data-binary '@irs-cucumber-tests/target/report.json' \
"https://xray.cloud.getxray.app/api/v2/import/execution/cucumber"
- name: Publish Cucumber Results
uses: EnricoMi/[email protected]
if: always()
with:
files: |
irs-cucumber-tests/target/cucumber-junit-report.xml
- name: Get Cucumber Report
if: always()
id: get-cucumber-report
run: |
grep -E "^│.*│$" irs-cucumber-tests/report-banner.txt > irs-cucumber-tests/cucumber-report.txt
sed -i 's/│//g' irs-cucumber-tests/cucumber-report.txt
cat irs-cucumber-tests/cucumber-report.txt
cat irs-cucumber-tests/cucumber-report.txt >> $GITHUB_STEP_SUMMARY
- name: Find previous comment in PR
if: always() && github.event_name == 'pull_request'
uses: peter-evans/find-comment@v3
id: find-comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: 'View your Cucumber Report at'

- name: Create or update comment in PR
if: always() && github.event_name == 'pull_request'
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ steps.find-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body-path: 'irs-cucumber-tests/cucumber-report.txt'
edit-mode: replace

- name: Upload Report
if: always()
uses: actions/upload-artifact@v4
with:
path: 'irs-cucumber-tests/target/report.html'
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@
@ConfigurationParameter(key = PLUGIN_PUBLISH_TOKEN_PROPERTY_NAME, value = "CUCUMBER_TOKEN_IRS_PLACEHOLDER")
@ConfigurationParameter(key = ANSI_COLORS_DISABLED_PROPERTY_NAME, value = "true")
@ConfigurationParameter(key = PLUGIN_PROPERTY_NAME,
value = "pretty,junit:target/cucumber-junit-report.xml,html:target/report.html")
value = "pretty,junit:target/cucumber-junit-report.xml,html:target/report.html,json:target/report.json")
public class RunCucumberTest {
}

0 comments on commit 88be739

Please sign in to comment.