From d343c84f9d5c015c6cf6440cd7c4151f76e92454 Mon Sep 17 00:00:00 2001 From: Tom Solberg Date: Thu, 2 Nov 2023 21:47:56 +0100 Subject: [PATCH] include in `generate_github_workflows.py` --- .github/workflows/check_labels.yaml | 28 +++++---- .../generate_github_workflows.py | 57 +++++++++++++++++++ 2 files changed, 73 insertions(+), 12 deletions(-) diff --git a/.github/workflows/check_labels.yaml b/.github/workflows/check_labels.yaml index ef2af0f3dcb0..5523e152e034 100644 --- a/.github/workflows/check_labels.yaml +++ b/.github/workflows/check_labels.yaml @@ -1,18 +1,14 @@ -name: PR Validation -on: - pull_request: - types: - - opened - - reopened - - labeled - - unlabeled +# GENERATED, DO NOT EDIT! +# To change, edit `src/python/pants_release/generate_github_workflows.py` and run: +# ./pants run src/python/pants_release/generate_github_workflows.py + jobs: check_labels: if: github.repository_owner == 'pantsbuild' name: Ensure PR has a category label - runs-on: - - ubuntu-20.04 + runs_on: + - ubuntu-latest steps: - env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -20,6 +16,14 @@ jobs: uses: mheap/github-action-required-labels@v4.0.0 with: count: 1 - labels: category:new feature, category:user api change, category:plugin api change, category:performance, category:bugfix, - category:documentation, category:internal + labels: category:new feature, category:user api change, category:plugin api + change, category:performance, category:bugfix, category:documentation, category:internal mode: exactly +name: PR Validation +'on': + pull_request: + types: + - opened + - reopened + - labeled + - unlabeled diff --git a/src/python/pants_release/generate_github_workflows.py b/src/python/pants_release/generate_github_workflows.py index 711a7782b7ab..3440974c4af5 100644 --- a/src/python/pants_release/generate_github_workflows.py +++ b/src/python/pants_release/generate_github_workflows.py @@ -17,6 +17,8 @@ import yaml from pants_release.common import die +from pants.util.strutil import softwrap + HEADER = dedent( """\ # GENERATED, DO NOT EDIT! @@ -1524,6 +1526,41 @@ def gen_goals(use_default_version: bool) -> Sequence[object]: return PublicReposOutput(jobs=jobs, inputs=inputs, run_name=run_name) +@dataclass +class CheckLabelsOutput: + jobs: Jobs + + +def check_labels() -> CheckLabelsOutput: + steps = [ + { + "name": "Ensure category label", + "env": {"GITHUB_TOKEN": gha_expr("secrets.GITHUB_TOKEN")}, + "uses": "mheap/github-action-required-labels@v4.0.0", + "with": { + "count": 1, + "labels": softwrap( + """ + category:new feature, category:user api change, + category:plugin api change, category:performance, category:bugfix, + category:documentation, category:internal + """ + ), + "mode": "exactly", + }, + } + ] + + job = { + "name": "Ensure PR has a category label", + "if": IS_PANTS_OWNER, + "runs_on": ["ubuntu-latest"], + "steps": steps, + } + + return CheckLabelsOutput({"check_labels": job}) + + # ---------------------------------------------------------------------- # Main file # ---------------------------------------------------------------------- @@ -1694,12 +1731,32 @@ def generate() -> dict[Path, str]: Dumper=NoAliasDumper, ) + check_labels_output = check_labels() + check_labels_yaml = yaml.dump( + { + "name": "PR Validation", + "on": { + "pull_request": { + "types": [ + "opened", + "reopened", + "labeled", + "unlabeled", + ] + } + }, + "jobs": check_labels_output.jobs, + }, + Dumper=NoAliasDumper, + ) + return { Path(".github/workflows/audit.yaml"): f"{HEADER}\n\n{audit_yaml}", Path(".github/workflows/cache_comparison.yaml"): f"{HEADER}\n\n{cache_comparison_yaml}", Path(".github/workflows/test.yaml"): f"{HEADER}\n\n{test_yaml}", Path(".github/workflows/release.yaml"): f"{HEADER}\n\n{release_yaml}", Path(".github/workflows/public_repos.yaml"): f"{HEADER}\n\n{public_repos_yaml}", + Path(".github/workflows/check_labels.yaml"): f"{HEADER}\n\n{check_labels_yaml}", }