Skip to content
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

Check files affected by task contribution Pull Requests #2644

Merged
merged 5 commits into from
Oct 26, 2024
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 76 additions & 4 deletions .github/workflows/check_task.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# This is a basic workflow to help you get started with Actions

name: Check task

# Controls when the workflow will run
Expand All @@ -12,8 +10,82 @@ on:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
check-affected-files:
name: Check affected files
runs-on: ubuntu-latest
outputs:
affected_file: ${{ steps.check-affected-files.outputs.affected_file }}
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v45

- name: Check affected files
id: check-affected-files
env:
# get all affected files (created, modified, deleted, etc.)
FILES: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
FILES_COUNT: ${{ steps.changed-files.outputs.all_changed_and_modified_files_count }}
run: |
for file in "$FILES"; do
echo "Info: $file was changed"
done
if [ "$FILES_COUNT" -ne 1 ]; then
echo "Error: More than one file affected ($FILES_COUNT)"
exit 1
fi
if [[ "$FILES" =~ ^contributions\/(executable-tutorial|feedback|open-source)\/[^\/]+\/README\.md$ ]]; then
echo "Info: Matches async task"
elif [[ "$FILES" =~ ^contributions\/(demo|presentation|scientific-paper)\/week[2-7]\/[^\/]+\/README\.md$ ]]; then
echo "Info: Matches sync task"
else
echo "Error: File in wrong directory ($FILES)"
exit 1
fi

echo "affected_file=$FILES" >> "$GITHUB_OUTPUT"

check-pr-description:
name: Check whether Pull Request description matches affected file
needs: check-affected-files
runs-on: ubuntu-latest
steps:
RafDevX marked this conversation as resolved.
Show resolved Hide resolved
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: Install wdiff
# we use wdiff (word-diff) instead of plain diff (line-based) to ensure
# that we only enforce *content* to be the same rather than specific
# file formatting that would otherwise be ignored when the markdown is
# rendered. e.g., wdiff allows the README to break lines at col 80 for
# readability while still having the PR description without mid-sentence
# breaks (since GitHub descriptions don't support them)
RafDevX marked this conversation as resolved.
Show resolved Hide resolved
run: |
sudo apt update
sudo apt install -y wdiff

- name: Check PR description
env:
AFFECTED_FILE: ${{ needs.check-affected-files.outputs.affected_file }}
PR_BODY: ${{ github.event.pull_request.body }}
run: |
BODY_FILE="$(mktemp)"
echo "$PR_BODY" > $BODY_FILE
if wdiff "$AFFECTED_FILE" "$BODY_FILE"; then
echo "Info: PR description matches affected file"
else
echo "Error: PR description does not match affected file!"
exit 1
fi

check-canvas:
name: Check proposal is compatible with previous student task registrations
algomaster99 marked this conversation as resolved.
Show resolved Hide resolved

# The type of runner that the job will run on
runs-on: ubuntu-latest

Expand Down