Tôi đang cố gắng sử dụng api phần còn lại của jenkins. Trong hướng dẫn, nó nói rằng tôi cần có khóa api. Tôi đã tìm khắp các trang cấu hình để tìm nó. Làm cách nào để lấy khóa API cho jenkins?
Tôi đang cố gắng sử dụng api phần còn lại của jenkins. Trong hướng dẫn, nó nói rằng tôi cần có khóa api. Tôi đã tìm khắp các trang cấu hình để tìm nó. Làm cách nào để lấy khóa API cho jenkins?
Câu trả lời:
Kể từ Jenkins 2.129, cấu hình mã thông báo API đã thay đổi :
Bây giờ bạn có thể có nhiều mã thông báo và đặt tên cho chúng. Chúng có thể được thu hồi riêng lẻ.
Trước Jenkins 2.129: Hiển thị mã thông báo API như sau:
Mã thông báo API được tiết lộ.
Bạn có thể thay đổi mã thông báo bằng cách nhấp vào nút Thay đổi mã thông báo API .
Show API Token
Có vẻ như không còn hợp lệ.
Cách không có giao diện người dùng để thực hiện bài đăng này Jenkins 2.129 là:
curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password
trả về:
{
"status": "ok",
"data": {
"tokenName": "foo",
"tokenUuid": "<uuid>",
"tokenValue": "<redacted>"
}
}
Trước Jenkins 2.129
curl http://<username>:<password>@<jenkins-url>/me/configure
Đã thử nghiệm trong Jenkins 2.225
Sau khi nghiên cứu trong vài giờ, tôi có thể tìm ra câu trả lời:
Mã thông báo Api được sử dụng thay cho mã thông báo CSFR. Tuy nhiên, điều gì sẽ xảy ra nếu bạn muốn xác thực từ bất kỳ ứng dụng khách nào khác (POSTMAN, CLI. Curl, v.v.).
Trước tiên, bạn cần lấy mã thông báo CSFR và lưu thông tin vào cookie với --cookie-jar
curl -s --cookie-jar / tmp / cookies -u tên người dùng: mật khẩu http: // localhost: 8080 / crumbIssuer / api / json
{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField"
Sau đó, chúng tôi có thể đọc cookie --cookie
và tạo mã thông báo mới:
curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / cookies http: // localhost: 8080 / me / descriptorByName / jenkins.security.ApiTokenProperty / createNewToken? newTokenName = \ your_token_name -u tên người dùng: mật khẩu
{"status": "ok", "data": {"tokenName": "my android token", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e8cb }155ca714581"