Admin Token API: Identify CI/CD Job Tokens
requested to merge gitlab-community/gitlab-org/gitlab:508619-nwittstruck-admin-token-api-post-ci-cd-job-tokens into master
-
Please check this box if this contribution uses AI-generated content (including content generated by GitLab Duo features) as outlined in the GitLab DCO & CLA. As a benefit of being a GitLab Community Contributor, you receive complimentary access to GitLab Duo.
What does this MR do and why?
This MR adds support for identifying CI/CD Job Tokens in the Admin Token API
.
Revocation is left out to keep the MR small and will be added in a separate MR.
References
- Issue: #508619 (closed)
- Epic: &15777
- Docs: https://docs.gitlab.com/ee/api/admin/token.html
MR acceptance checklist
MR Checklist ( @nwittstruck)
-
Changelog entry added, if necessary -
Documentation created/updated via this MR -
Documentation reviewed by technical writer or follow-up review issue created -
Tests added for this feature/bug -
Tested in all supported browsers -
Conforms to the code review guidelines -
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the javascript style guides -
Conforms to the database guides
How to set up and validate locally
-
You'll need to create a
personal access token
to access the token and get aci/cd job token
token that you'd like to query:-
Create a
personal access token
withadmin_mode
andapi
capabilities.Preferences > Access Tokens > Add a new token
- You'll need a token of a job. If you've seeded the GDK, you can generate a JWT token for an existing job:
-
Create a
::Ci::JobToken::Jwt.encode(Ci::Build.last)
- Now you can retrieve information about this token:
curl -k --request POST \
--url 'https://gdk.test:3443/api/v4/admin/token' \
--header 'Authorization: Bearer <Admin Token from Step 2.1>' \
--header 'Content-Type: application/json' \
--data '{"token": "glcbt-token-from-step-2.2"}'
{
"id": 385,
"status": "running",
"stage": "deploy",
"name": "helm:download",
"ref": "refs/merge-requests/2/head",
"tag": false,
"coverage": null,
"allow_failure": false,
"created_at": "2024-11-27T14:16:55.229Z",
"started_at": null,
"finished_at": null,
"erased_at": null,
"duration": null,
"queued_duration": 245299.936464,
...
}
Related to #508619 (closed)
Edited by Nicholas Wittstruck