t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как отключить одну джобу из другой джобы автоматически?

Теги: #<Tag:0x00007f9b035dabb0>

План прост, а значит крассив. При выполнении цепочки задач необходимо отключить автоматический запуск одной джобы (не upstream и не downstream). А потом снова включить его. Как решали задачу?
Были идеи инжектить файл (как семафор, если файл есть, то джоба не бежит и абортится), но это как-то не по джентельменски, так что хочется какой-то вариант красивее.

Через

  1. внутренний апи http://jenkinsapi.readthedocs.org/en/latest/using_jenkinsapi.html#example-3-disable-enable-a-jenkins-job
  2. jenkins-jar `java -jar jenkins-cli.jar -s http://jenkins/ disable-job job_name
  3. rest api
1 Симпатия

Чем этот плагин не нравится? Вроде специально для этого.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin

На плагины не хватает прав доступа. Дженкинс овнится не тест тимой.

1 не подходит по той же причине что и в предыдущем посте. Операции с мастером невозможны.
2. Возможно мой вариант, попробую. Как раз успел его на стековерфлов найти к этому времени
3. Надо будет где-то хранить аккаунт где-то и использовать его в скрипте, а не хочется, так как это нарушает безопасность интранета.

3 -> не нарушаешь, в апи можно авторизоваться по токену, причем двумя вариантами

  1. https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
  2. через http://user:hash@jenkins.com

Во втором случае хэш берешь с аккаунта в https://%jenkins%/user/%username%/configure:

Теоретически можно даже через сертификат настроить (следующая настройки, add credentials). Но не пробовал :slight_smile:

Но что хеш, что токен придется вшивать в джобу. И используя его какой-то говнюк может получить доступ к дженкинсу с моим аккаунтом (в случае с токеном), ну или как минимум конфигурировать другие джобы от моего имени (в случае с хэшем).

Можно сконфигурировать отдельного бот-юзера с дорступом только к нужной джобе.