
Я попытался выполнить (запустить) задание jenkins (не параметризованное задание) с помощью команды curl, используя указанные ниже методы, но это дало следующие результаты. Моя версия jenkins — Jenkins 2.73.3
curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build
Поэтому я создал токен аутентификации для задания.
curl -X POST http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf
Он также выдает ту же ошибку. Он говорит: «Запрещено 403».
После этого я создал API-токен для пользователя jenkins и попробовал.
curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf
Но это тоже самое, там написано Запрещено 403
На самом деле я тоже следил за этим ответом.https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ У меня это тоже не сработало.
каждый раз, это 403 denied. Я думаю, что я не смог правильно аутентифицировать пользователя jenkins.
решение1
нашел ответ. На самом деле эти шаги правильные. Я хотел бы упомянуть правильные шаги.
Создайте пользователя в Jenkins, вы можете использовать этот пароль пользователя или API-токен для запуска задания Jenkins. Но создание API-токена для этого пользователя гораздо лучше. Но оба способа работают нормально.
Но вам нужно создать токен аутентификации для Jenkins Job.
Использование пароля
curl -I -u auto:<userpasswd> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf
Использование API-токена
Создайте API-токен для этого пользователя Jenkins.
curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf
вот результаты, используяПароль пользователя jenkinsитокен API пользователя jenkins.
На самом деле вы можете отправить этот запрос и без «-I».
curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf
curl -u auto:<jenkins_user_password> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf
решение2
Перенесемся в 2023 год
Вам нужно передать 2 токена для удаленного выполнения вашей работы из скрипта/bash.
Вам нужно:
- apiToken для аутентификации вашей личности. Это значение создается из JENKINS_URL/me/configure . Также проверьтездесьдля документации
- Другой токен аутентификации задания, который вы создаете, когда включаете «Удаленный запуск сборок».
Ниже приведен пример выполнения задания с двумя параметрами, которые вы можете настроить по своему усмотрению.
PARAM1_VALUE=<param1_value>
PARAM2_VALUE=<param2_vale>
USERNAME=dummy_user_name
JENKINS_URL="http://10.xxx.x.xxx:8080"
JOB_TOKEN="<value>" # you create this token when you enable Job>Configure>Build Triggers>Trigger builds remotely
LOGIN_API_TOKEN="<value>" #get this value from JENKINS_URL/me/configure
curl -L --user $USERNAME:$LOGIN_API_TOKEN "$JENKINS_URL/job/JobName/buildWithParameters?token=$JOB_TOKEN¶m1_name=$PARAM1_VALUE¶m2_name=$PARAM2_VALUE"
решение3
Чтобы настроить эти разрешения:
- Нажмите
Manage Jenkins
- Нажмите
Configure Global Security
- Удалять
Prevent Cross Site Request Forgery exploits
- Нажмите
save