-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(workflows):[#828] add new cucumber workflow with integration to… #850
Merged
Merged
Changes from 1 commit
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
8b63a83
chore(workflows):[#828] add new cucumber workflow with integration to…
ds-jhartmann daba686
chore(workflows):[#828] update Jira filter
ds-jhartmann ad144ce
chore(testdata):[#226] add inputs for executionFilter and exportFilter
ds-jhartmann d450322
chore(workflows):[#828] fix secret names
ds-jhartmann a117872
chore(workflows):[#828] fix cucumber test execution order
ds-jhartmann File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
62 changes: 62 additions & 0 deletions
62
.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,62 @@ | ||
name: IRS Association INT Cucumber Integration test execution | ||
|
||
on: | ||
workflow_dispatch: # Trigger manually | ||
|
||
# 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.IRS_XRAY_JIRA_USER }}" ]]; 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.IRS_XRAY_JIRA_SECRET }}" ]]; 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: | ||
# TODO set secrets in GH | ||
regularUserApiKey: ${{ secrets.INT_REGULAR_USER_API_KEY }} | ||
adminUserApiKey: ${{ secrets.INT_ADMIN_USER_API_KEY }} | ||
cucumberPublishToken: ${{ secrets.IRS_CUCUMBER_PUBLISH_TOKEN }} | ||
jiraUser: ${{ secrets.jiraUser }} | ||
jiraPassword: ${{ secrets.jiraPassword }} | ||
with: | ||
executionFilter: "!Ignore & !INACTIVE & INTEGRATION_TEST & INT" | ||
# JIRA filter 10001: project = TRI AND type = Test AND "Test Type" = Cucumber TODO set correct filter description | ||
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,140 @@ | ||
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 feature files of cucumber tests inside TRI project | ||
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: Build with Maven | ||
if: ${{ steps.download.outputs.http_response == '200' }} | ||
env: | ||
KEYCLOAK_HOST: ${{ secrets.keycloakTokenUrl }} | ||
KEYCLOAK_CLIENT_ID: ${{ secrets.clientId }} | ||
KEYCLOAK_CLIENT_SECRET: ${{ secrets.clientSecret }} | ||
ISSUE_FILTER: ${{ inputs.executionFilter }} | ||
run: | | ||
unzip -o features.zip -d irs-cucumber-tests/src/test/resources/org/eclipse/tractusx/irs/cucumber/features | ||
mvn --batch-mode clean install -pl irs-cucumber-tests,irs-models -D"cucumber.filter.tags"="$ISSUE_FILTER" | ||
|
||
- 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: Run Tests with Maven | ||
env: | ||
REGULAR_USER_API_KEY: ${{ secrets.regularUserApiKey }} | ||
ADMIN_USER_API_KEY: ${{ secrets.adminUserApiKey }} | ||
ISSUE_FILTER: ${{ inputs.executionFilter }} | ||
CUCUMBER_PUBLISH_TOKEN: ${{ secrets.cucumberPublishToken }} | ||
run: | | ||
# 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: 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 | ||
Check notice Code scanning / KICS Unpinned Actions Full Length Commit SHA Note
Action is not pinned to a full length commit SHA.
|
||
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 | ||
Check notice Code scanning / KICS Unpinned Actions Full Length Commit SHA Note
Action is not pinned to a full length commit SHA.
|
||
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
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Check notice
Code scanning / KICS
Unpinned Actions Full Length Commit SHA Note