-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #850 from eclipse-tractusx/chore/828-reactivate-xr…
…ay-test-integration chore(workflows):[#828] add new cucumber workflow with integration to…
- Loading branch information
Showing
3 changed files
with
203 additions
and
1 deletion.
There are no files selected for viewing
70 changes: 70 additions & 0 deletions
70
.github/workflows/cucumber-integration-test-INT-association.yaml
This file contains 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
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' }} | ||
|
This file contains 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
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' |
This file contains 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