name: Check labels on: pull_request: types: [labeled, opened, synchronize, unlabeled] jobs: check-labels: runs-on: ubuntu-latest steps: - name: Pull image env: IMAGE: paritytech/ruled_labels:0.4.0 run: docker pull $IMAGE - name: Check labels env: IMAGE: paritytech/ruled_labels:0.4.0 MOUNT: /work GITHUB_PR: ${{ github.event.pull_request.number }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} API_BASE: https://api.github.com/repos REPO: ${{ github.repository }} RULES_PATH: labels/ruled_labels CHECK_SPECS: specs_cumulus.yaml run: | echo "REPO: ${REPO}" echo "GITHUB_PR: ${GITHUB_PR}" # Clone repo with labels specs git clone https://github.com/paritytech/labels # Fetch the labels for the PR under test labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",") if [ -z "${labels}" ]; then docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --tags audit --no-label fi labels_args=${labels: :-1} printf "Checking labels: %s\n" "${labels_args}" # Prevent the shell from splitting labels with spaces IFS="," # --dev is more useful to debug mode to debug docker run --rm -i -v $PWD/${RULES_PATH}/:$MOUNT $IMAGE check $MOUNT/$CHECK_SPECS --labels ${labels_args} --dev --tags PR