This is an automated email from the ASF dual-hosted git repository.

arm pushed a commit to branch gha-distributions
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git

commit c25f041deb901895d5b44aec2a543cb6118895d4
Author: Alastair McFarlane <[email protected]>
AuthorDate: Thu Jan 8 16:16:50 2026 +0000

    Specify workflow name based on platform - we'll kick off the right one
---
 atr/models/sql.py                    |  8 ++++++++
 atr/post/distribution.py             |  2 ++
 atr/storage/writers/distributions.py |  2 ++
 atr/tasks/gha.py                     | 12 ++++++------
 4 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/atr/models/sql.py b/atr/models/sql.py
index 532081c..8938aeb 100644
--- a/atr/models/sql.py
+++ b/atr/models/sql.py
@@ -53,6 +53,7 @@ sqlmodel.SQLModel.metadata = sqlalchemy.MetaData(
 @dataclasses.dataclass(frozen=True)
 class DistributionPlatformValue:
     name: str
+    gh_slug: str
     template_url: str
     template_staging_url: str | None = None
     requires_owner_namespace: bool = False
@@ -95,12 +96,14 @@ class CheckResultStatusIgnore(str, enum.Enum):
 class DistributionPlatform(enum.Enum):
     ARTIFACT_HUB = DistributionPlatformValue(
         name="Artifact Hub",
+        gh_slug="artifacthub",
         
template_url="https://artifacthub.io/api/v1/packages/helm/{owner_namespace}/{package}/{version}";,
         
template_staging_url="https://staging.artifacthub.io/api/v1/packages/helm/{owner_namespace}/{package}/{version}";,
         requires_owner_namespace=True,
     )
     DOCKER_HUB = DistributionPlatformValue(
         name="Docker Hub",
+        gh_slug="dockerhub",
         
template_url="https://hub.docker.com/v2/namespaces/{owner_namespace}/repositories/{package}/tags/{version}";,
         # TODO: Need to use staging tags?
         # 
template_staging_url="https://hub.docker.com/v2/namespaces/{owner_namespace}/repositories/{package}/tags/{version}";,
@@ -108,6 +111,7 @@ class DistributionPlatform(enum.Enum):
     )
     # GITHUB = DistributionPlatformValue(
     #     name="GitHub",
+    #     gh_slug="github",
     #     
template_url="https://api.github.com/repos/{owner_namespace}/{package}/releases/tags/v{version}";,
     #     # Combine with {"prerelease": true}
     #     
template_staging_url="https://api.github.com/repos/{owner_namespace}/{package}/releases";,
@@ -115,6 +119,7 @@ class DistributionPlatform(enum.Enum):
     # )
     MAVEN = DistributionPlatformValue(
         name="Maven Central",
+        gh_slug="maven",
         
template_url="https://search.maven.org/solrsearch/select?q=g:{owner_namespace}+AND+a:{package}+AND+v:{version}&core=gav&rows=20&wt=json";,
         # Java ASF projects use staging URLs along the lines of
         # 
https://repository.apache.org/content/repositories/orgapachePROJECT-NNNN/
@@ -123,17 +128,20 @@ class DistributionPlatform(enum.Enum):
     )
     NPM = DistributionPlatformValue(
         name="npm",
+        gh_slug="npm",
         # TODO: Need to parse dist-tags
         template_url="https://registry.npmjs.org/{package}";,
     )
     NPM_SCOPED = DistributionPlatformValue(
         name="npm (scoped)",
+        gh_slug="npm",
         # TODO: Need to parse dist-tags
         template_url="https://registry.npmjs.org/@{owner_namespace}/{package}";,
         requires_owner_namespace=True,
     )
     PYPI = DistributionPlatformValue(
         name="PyPI",
+        gh_slug="pypi",
         template_url="https://pypi.org/pypi/{package}/{version}/json";,
         
template_staging_url="https://test.pypi.org/pypi/{package}/{version}/json";,
     )
diff --git a/atr/post/distribution.py b/atr/post/distribution.py
index 88fb5f1..c5f3428 100644
--- a/atr/post/distribution.py
+++ b/atr/post/distribution.py
@@ -98,6 +98,7 @@ async def automate_form_process_page(
             error="Project does not have a release policy configured, or no 
GitHub repository is specified",
         )
     repo = release.release_policy.github_repository_name
+    workflow = f"distribute-{sql_platform.value.gh_slug}.yml"
     async with 
storage.write_as_committee_member(committee_name=committee.name) as w:
         try:
             await w.distributions.automate(
@@ -106,6 +107,7 @@ async def automate_form_process_page(
                 dd.owner_namespace,
                 "apache",
                 repo,
+                workflow,
                 project,
                 version,
                 release.latest_revision_number,
diff --git a/atr/storage/writers/distributions.py 
b/atr/storage/writers/distributions.py
index 91839f8..753264f 100644
--- a/atr/storage/writers/distributions.py
+++ b/atr/storage/writers/distributions.py
@@ -104,6 +104,7 @@ class CommitteeMember(CommitteeParticipant):
         owner_namespace: str | None,
         owner: str,
         repo: str,
+        workflow: str,
         project_name: str,
         version_name: str,
         revision_number: str | None,
@@ -124,6 +125,7 @@ class CommitteeMember(CommitteeParticipant):
                 owner=owner,
                 repo=repo,
                 ref="main",  # TODO: Un-hardcode
+                workflow=workflow,
                 arguments={},
             ).model_dump(),
             asf_uid=util.unwrap(self.__asf_uid),
diff --git a/atr/tasks/gha.py b/atr/tasks/gha.py
index ea01eb8..9595884 100644
--- a/atr/tasks/gha.py
+++ b/atr/tasks/gha.py
@@ -46,6 +46,7 @@ class DistributionWorkflow(schema.Strict):
     owner: str = schema.description("Github owner of the repository")
     repo: str = schema.description("Repository in which to start the workflow")
     ref: str = schema.description("Git ref to trigger the workflow")
+    workflow: str = schema.description("Workflow to trigger")
     namespace: str = schema.description("Namespace to distribute to")
     package: str = schema.description("Package to distribute")
     version: str = schema.description("Version to distribute")
@@ -59,7 +60,6 @@ class DistributionWorkflow(schema.Strict):
 @checks.with_model(DistributionWorkflow)
 async def trigger_workflow(args: DistributionWorkflow) -> results.Results | 
None:
     unique_id = f"{args.name}-{uuid.uuid4()}"
-    workflow_id = "distribute-test.yml"
     # release, committee = await 
shared.distribution.release_validated_and_committee(
     #     args.project,
     #     args.version,
@@ -81,14 +81,14 @@ async def trigger_workflow(args: DistributionWorkflow) -> 
results.Results | None
     }
     headers = {"Accept": "application/vnd.github+json", "Authorization": 
f"Bearer {config.get().GITHUB_TOKEN}"}
     log.info(
-        f"Triggering Github workflow {args.owner}/{args.repo}/{workflow_id} 
with args: {
+        f"Triggering Github workflow {args.owner}/{args.repo}/{args.workflow} 
with args: {
             json.dumps(args.arguments, indent=2)
         }"
     )
     async with aiohttp.ClientSession() as session:
         try:
             async with session.post(
-                
f"{_BASE_URL}/{args.owner}/{args.repo}/actions/workflows/{workflow_id}/dispatches",
+                
f"{_BASE_URL}/{args.owner}/{args.repo}/actions/workflows/{args.workflow}/dispatches",
                 headers=headers,
                 json=payload,
             ) as response:
@@ -102,9 +102,9 @@ async def trigger_workflow(args: DistributionWorkflow) -> 
results.Results | None
             run = await _wait_for_completion(session, args, headers, run_id, 
unique_id)
 
         if run.get("status") in _FAILED_STATUSES:
-            _fail(f"Github workflow {args.owner}/{args.repo}/{workflow_id} run 
{run_id} failed with error")
+            _fail(f"Github workflow {args.owner}/{args.repo}/{args.workflow} 
run {run_id} failed with error")
         if run.get("status") in _COMPLETED_STATUSES:
-            log.info(f"Workflow {args.owner}/{args.repo}/{workflow_id} run 
{run_id} completed successfully")
+            log.info(f"Workflow {args.owner}/{args.repo}/{args.workflow} run 
{run_id} completed successfully")
             await _record_distribution(
                 "committee.name",
                 "release",
@@ -117,7 +117,7 @@ async def trigger_workflow(args: DistributionWorkflow) -> 
results.Results | None
             return results.DistributionWorkflow(
                 kind="distribution_workflow", name=args.name, run_id=run_id, 
url=run.get("html_url", "")
             )
-        _fail(f"Timed out waiting for GitHub workflow 
{args.owner}/{args.repo}/{workflow_id}")
+        _fail(f"Timed out waiting for GitHub workflow 
{args.owner}/{args.repo}/{args.workflow}")
 
 
 async def _record_distribution(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to