Merge pull request #112 from gardar/ci/role-labels

skip_changelog: unify automatic and manual ansible role tests with labels
This commit is contained in:
gardar 2023-05-30 11:41:48 +00:00 committed by GitHub
commit 41f8926fe0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 15 deletions

View file

@ -10,6 +10,10 @@ on:
- labeled
workflow_dispatch:
concurrency:
group: ansible-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
ANSIBLE_FORCE_COLOR: true
ANSIBLE_GALAXY_SERVER_GALAXY_URL: "https://galaxy.ansible.com"
@ -50,7 +54,8 @@ jobs:
discover-ansible-tests:
runs-on: ubuntu-latest
needs: ansible-lint
needs:
- ansible-lint
outputs:
molecule-tests: ${{ steps.set-molecule-tests.outputs.tests }}
integration-tests: ${{ steps.set-integration-tests.outputs.tests }}
@ -59,22 +64,12 @@ jobs:
with:
fetch-depth: 0
- name: Get changed roles
id: changed-roles
uses: tj-actions/changed-files@v35
with:
path: "roles"
diff_relative: "true"
files: "**"
dir_names: "true"
dir_names_max_depth: "1"
since_last_remote_commit: "true"
- name: Discover role tests
id: set-molecule-tests
env:
LABELS: ${{ toJson(github.event.pull_request.labels.*.name) }}
run: |
roles=${{ steps.changed-roles.outputs.all_changed_and_modified_files }}
roles+=${{ github.event.label.name }}
roles=$(echo $LABELS | jq -r '.[]')
echo tests="[`for role in $roles; do
for test in $(find tests/integration/targets -maxdepth 1 -mindepth 1 -type d -iname "molecule-${role}-*" -printf "%f\n"); do
echo '{"test":\"'"${test}"'\","name":\"'"${test#*-}\"'"}';

View file

@ -6,8 +6,12 @@ permissions:
pull-requests: write
name: Auto label pull request
jobs:
label:
pr-label:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: "Confirm correct pull request title"
uses: mmubeen/action-pr-title@master # until PR gets merged https://github.com/deepakputhraya/action-pr-title/pull/29
@ -40,3 +44,35 @@ jobs:
"skip-release": "skip_changelog",
"skip_changelog": "skip_changelog"
}
role-label:
runs-on: ubuntu-latest
needs: pr-label
if: github.event.pull_request.labels.length == 0
steps:
- uses: actions/checkout@v3
- name: Get changed roles
id: changed-roles
uses: tj-actions/changed-files@v35
with:
path: "roles"
diff_relative: "true"
files: "**"
dir_names: "true"
dir_names_max_depth: "1"
sha: ${{ github.event.pull_request.head.sha }}
- name: Add changed roles labels
uses: actions/github-script@v6
if: |
steps.changed-roles.outputs.all_changed_and_modified_files
with:
script: |
const labels = '${{ steps.changed-roles.outputs.all_changed_and_modified_files }}'.split(' ');
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: labels
})