Skip to content

Commit

Permalink
ci: Add workflow for ci_test bad, use remote fmf plan
Browse files Browse the repository at this point in the history
* Remove plan from role dir, it's too complicated and long to run tests from tmt
* Use plan from linux-system-roles/tft-tests
* Move getting datetime to testing-farm job where it's used
* Add a workflow for running [citest_bad]
* Bump sclorg/testing-farm-as-github-action to v3

Signed-off-by: Sergei Petrosian <spetrosi@redhat.com>
  • Loading branch information
spetrosi committed Aug 2, 2024
1 parent 6039f82 commit 2cf5022
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 13 deletions.
23 changes: 15 additions & 8 deletions .github/workflows/tft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,33 @@ permissions:
contents: read
# This is required for the ability to create/update the Pull request status
statuses: write
# The concurrency key is used to prevent multiple workflows from running at the same time
concurrency:
# group name contains reponame-pr_num to allow simualteneous runs in different PRs
group: testing-farm-${{ github.event.repository.name }}-${{ github.event.issue.number }}
cancel-in-progress: true
jobs:
prepare_vars:
name: Get info from role and PR to determine if and how to test
# The concurrency key is used to prevent multiple workflows from running at the same time
concurrency:
# group name contains reponame-pr_num to allow simualteneous runs in different PRs
group: testing-farm-${{ github.event.repository.name }}-${{ github.event.issue.number }}
cancel-in-progress: true
# Let's schedule tests only on user request. NOT automatically.
# Only repository owner or member can schedule tests
if: |
github.event.issue.pull_request
&& (contains(github.event.comment.body, '[citest]') || contains(github.event.comment.body, '[citest-all]'))
&& (contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR", "CONTRIBUTOR"]'), github.event.comment.author_association)
&& contains(github.event.comment.body, '[citest]')
&& (contains(github.event.comment.author_association, fromJson('["OWNER", "MEMBER", "COLLABORATOR", "CONTRIBUTOR"]'))
|| contains('systemroller', github.event.comment.user.login))
runs-on: ubuntu-latest
outputs:
supported_platforms: ${{ steps.supported_platforms.outputs.supported_platforms }}
head_sha: ${{ steps.head_sha.outputs.head_sha }}
memory: ${{ steps.memory.outputs.memory }}
steps:
- name: Dump github context
run: echo "$GITHUB_CONTEXT"
shell: bash
env:
GITHUB_CONTEXT: ${{ toJson(github) }}

- name: Checkout repo
uses: actions/checkout@v4

Expand Down Expand Up @@ -143,14 +149,15 @@ jobs:
targetUrl: ""

- name: Run test in testing farm
uses: sclorg/testing-farm-as-github-action@v2
uses: sclorg/testing-farm-as-github-action@v3
if: contains(needs.prepare_vars.outputs.supported_platforms, matrix.platform)
with:
git_url: linux-system-roles/tft-tests
git_ref: main
pipeline_settings: '{ "type": "tmt-multihost" }'
variables: "ANSIBLE_VER=${{ matrix.ansible_version }};\
REPO_NAME=${{ github.event.repository.name }};\
GITHUB_ORG=${{ github.repository_owner }};\
GITHUB_ORG=linux-system-roles;\
PR_NUM=${{ github.event.issue.number }};\
ARTIFACTS_DIR=${{ steps.set_vars.outputs.ARTIFACTS_DIR }};\
Expand Down
23 changes: 18 additions & 5 deletions .github/workflows/tft_citest_bad.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,39 @@
---
name: Rerun failed testing farm tests
name: Re-run failed testing farm tests
on:
issue_comment:
types:
- created
permissions:
contents: read
jobs:
retest:
citest_bad_rerun:
if: |
github.event.issue.pull_request
&& github.event.comment.body == '[citest_bad]'
&& (contains(github.event.comment.author_association, fromJson('["OWNER", "MEMBER", "COLLABORATOR", "CONTRIBUTOR"]'))
permissions:
actions: write # for re-running failed jobs: https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#re-run-a-job-from-a-workflow-run
runs-on: ubuntu-latest
steps:
- name: Wait 10s until tft.yml workflow is created and skipped because new comment don't match [citest]
run: sleep 10s

- name: Re-run failed jobs for this PR
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
PR_TITLE: ${{ github.event.issue.title }}
run: |
RUN_ID=$(gh api "repos/$REPO/actions/workflows/tft.yml/runs?event=issue_comment" \
| jq -r '[.workflow_runs[] | select( .conclusion == "failure" ) | select ( .display_title="$PR_TITLE" ) | .id][0]')
gh api --method POST repos/$REPO/actions/runs/$RUN_ID/rerun-failed-jobs
PENDING_RUN=$(gh api "repos/$REPO/actions/workflows/tft.yml/runs?event=issue_comment" \
| jq -r "[.workflow_runs[] | select( .display_title == \"$PR_TITLE\") | \
select(.status == \"pending\" or .status == \"queued\" or .status == \"in_progress\") | .id][0]")
# if pending run don't exist, take the last run with failure state
if [ "$PENDING_RUN" = "null" ]; then
RUN_ID=$(gh api "repos/$REPO/actions/workflows/tft.yml/runs?event=issue_comment" \
| jq -r "[.workflow_runs[] | select( .display_title == \"$PR_TITLE\" ) | select( .conclusion == \"failure\" ) | .id][0]")
echo "Re-running workflow $RUN_ID"
gh api --method POST repos/$REPO/actions/runs/$RUN_ID/rerun-failed-jobs
else
echo "The workflow $PENDING_RUN is still running, wait for it to finish to re-run"
fi

0 comments on commit 2cf5022

Please sign in to comment.