name: Check labels on: pull_request: types: [labeled, opened, synchronize, unlabeled] jobs: check-labels: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Pull image env: IMAGE: paritytech/ruled_labels:0.3.2 run: docker pull $IMAGE - name: Check labels env: IMAGE: paritytech/ruled_labels:0.3.2 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: scripts/ci/ruled_labels CHECK_SPECS: specs.yaml run: | echo "REPO: ${REPO}" echo "GITHUB_PR: ${GITHUB_PR}" # 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 echo "No labels found. Please add labels A, B and C labels" exit 1 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