Create winnowing module for programming exercises #34
Workflow file for this run
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
name: Pull Request Closed | |
on: | |
pull_request_target: | |
types: [closed] | |
jobs: | |
# If a PR is closed, the testserver lock should be removed and corresponding badges updated | |
process_labels: | |
name: Process labels | |
runs-on: ubuntu-latest | |
outputs: | |
labels: ${{ steps.process.outputs.labels }} | |
badges: ${{ steps.process.outputs.badges }} | |
steps: | |
- name: Process labels | |
id: process | |
uses: actions/github-script@v7 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
script: | | |
const labelsToRemove = []; | |
const labelsToProcess = []; | |
// Get the PR number | |
const prNumber = context.payload.pull_request.number; | |
// Iterate through labels on the PR | |
for (const label of context.payload.pull_request.labels) { | |
const labelName = label.name; | |
const regex = /^lock:athena-test(\d+)$/; | |
if (regex.test(labelName)) { | |
// Extract the part after "lock:" using capture groups | |
const extractedLabel = labelName.match(regex)[1]; | |
labelsToProcess.push(extractedLabel); | |
labelsToRemove.push(labelName); | |
} | |
} | |
// Do something with the extracted labels | |
console.log('Badges to process:', labelsToProcess); | |
console.log('Labels to remove:', labelsToRemove); | |
// Use the labelsToRemove array to remove the matching labels | |
core.setOutput('badges', JSON.stringify(labelsToProcess)); | |
core.setOutput('labels', labelsToRemove.join(', ')); | |
remove_labels: | |
name: Remove labels | |
needs: process_labels | |
runs-on: ubuntu-latest | |
if: ${{ needs.process_labels.outputs.labels != '' }} | |
steps: | |
- name: Remove labels | |
uses: actions-ecosystem/action-remove-labels@v1 | |
with: | |
labels: ${{ needs.process_labels.outputs.labels }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
update_badges: | |
name: Update badges | |
needs: process_labels | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
badge: ${{ fromJson(needs.process_labels.outputs.badges) }} | |
if: ${{ needs.process_labels.outputs.labels != '' }} | |
steps: | |
- name: Update badge | |
uses: RubbaBoy/[email protected] | |
with: | |
NAME: "athena-test${{ matrix.badge }}" | |
LABEL: "athena-test${{ matrix.badge }}.ase.cit.tum.de" | |
STATUS: ${{ github.event.pull_request.head.ref }} | |
COLOR: green | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |