-
Notifications
You must be signed in to change notification settings - Fork 676
Open
Description
Description of the problem, including code/CLI snippet
ProjectPipelineBridge objects (trigger/bridge jobs) cannot be retried through the high-level API. The class lacks retry(), cancel(), and similar methods that ProjectJob has.
Fetching the bridge as a ProjectJob via project.jobs.get(bridge.id) also fails with a 404, since the /projects/:id/jobs/:id endpoint does not return bridge jobs.
The only way I found to retry a bridge is via a raw HTTP call:
pipeline = project.pipelines.get(pipeline_id)
bridges = pipeline.bridges.list(all=True)
bridge = bridges[0]
# This fails - ProjectPipelineBridge has no retry()
bridge.retry() # AttributeError
# This also fails - bridges aren't accessible via the jobs endpoint
project.jobs.get(bridge.id).retry() # GitlabGetError: 404
# Only this works
project.manager.gitlab.http_post(f"/projects/{project.id}/jobs/{bridge.id}/retry")Expected Behavior
ProjectPipelineBridge should support retry() (and maybe other job actions like cancel()) either by:
- Adding the appropriate mixins/custom actions to
ProjectPipelineBridge, or - Making bridge jobs accessible via
project.jobs.get().
The GitLab REST API itself supports POST /projects/:id/jobs/:job_id/retry for bridge jobs (since GitLab 17), it's only the python-gitlab object model that prevents it.
Actual Behavior
bridge.retry()raisesAttributeError: 'ProjectPipelineBridge' object has no attribute 'retry'project.jobs.get(bridge.id)raisesGitlabGetError: 404: 404 Not found
Specifications
- python-gitlab version: 8.0.0
- Gitlab server version: self-hosted 18.5.5
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels