Плагины Jenkins


#1

Решил-таки попробовать Jenkins вместо TeamCity. Конечно, с наскока пошло туговато. Надо обвешивать его плагинами, а какие именно нужно ставить и откуда - не знаю. Поэтому прошу поделиться опытом и списком плагинов для Jenkins, которыми вы пользуетесь в повседневной работе.
Что именно хочу от Jenkins на первом этапе:

  1. Запускать gitsynk по расписанию.
    Как я понял эта задача распадается на несколько плагинов: крон, git…
  2. При изменении в git-репозитории выполнять некие действия (в Тимсити это называлось “триггерами”)
  3. Запускать xUnitFor1C и наглядно увидеть что упало, а что нет. С возможностью быстро перейти к коду изменений в гит-репозитарии.
  4. Возможность запускать несколько агентов (они здесь так называются?)
  5. Оповещение по электронной почте на всевозможные события. Начать хотя бы с результатов прогонов сценариев проверки качества модулей :wink:

#2

Может тебе просто контур платный развернуть ? уже настроенный ?

Или ты продолжаешь своими силами пытаться ?


#3
git
git-client
build-flow-plugin
git-parameter
htmlpublisher
ftppublisher
bitbucket-build-status-notifier
bitbucket-approve
copy-to-slave
email-ext
emailext-template
notification
stashNotifier
allure-jenkins-plugin
analysis-collector
analysis-core
bootstraped-multi-test-results-report
build-environment
checkstyle
cobertura
disk-usage
performance
perfpublisher
sonar
sonargraph-plugin
test-stability
xunit
batch-task
copyartifact
docker-build-step
envinject
fail-the-build-plugin
groovy
http_request
job-dsl
fstrigger
build-timeout
AdaptivePlugin
copy-data-to-workspace-plugin
mask-passwords
matrixtieparent
timestamper
virtualbox
vncrecorder
vncviewer
build-with-parameters
nodelabelparameter
job-import-plugin
multi-branch-project-plugin
multiple-scms
greenballs
credentials
scm-api
rebuild
clone-workspace-scm
chucknorris
jobConfigHistory
plugin-usage-plugin
plain-credentials
cloudbees-credentials
config-file-provider
token-macro
docker-plugin:latest
docker-build-step
docker-traceability
docker-build-publish
docker-workflow
build-timestamp
uptime
configurationslicing
scriptler
simple-theme-plugin
thinBackup
build-pipeline-plugin
durable-task
workflow-step-api
swarm
parameterized-trigger
nested-view
git-server
nodelabelparameter
jquery
cloudbees-folder
join
delivery-pipeline-plugin
extra-columns
buildgraph-view
image-gallery
livescreenshot
dry
dashboard-view
any-buildstep
conditional-buildstep
run-condition
flexible-publish

Добавил список плагинов - их внезапно оказалось 95. Такие дела ;-).


#4

Открываешь адресс http://jenkins:8080/scripts
ставишь код

import jenkins.model.*
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.common.*
import com.cloudbees.plugins.credentials.domains.*
import com.cloudbees.plugins.credentials.impl.*
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*
import hudson.plugins.sshslaves.*;
import hudson.model.Node.Mode
import hudson.slaves.*
import jenkins.model.Jenkins


System.setProperty(hudson.model.DirectoryBrowserSupport.class.getName() + ".CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")

def deployPlugin(plugin) {
  if (! plugin.isEnabled() ) {
    plugin.enable()
  }
  plugin.getDependencies().each { 
    deployPlugin(pm.getPlugin(it.shortName)) 
  }
}



['groovy', 'gradle', 'chucknorris', 'greenballs', 'github', 'analysis-core', 'analysis-collector', 'cobertura',
        'project-stats-plugin','audit-trail', 'view-job-filters', 'disk-usage', 'global-build-stats',
        'radiatorviewplugin', 'violations', 'build-pipeline-plugin', 'monitoring', 'dashboard-view',
        'iphoneview', 'jenkinswalldisplay', "git","git-client","build-flow-plugin","git-parameter","htmlpublisher","ftppublisher",
 "bitbucket-build-status-notifier","bitbucket-approve","copy-to-slave","icon-shim","email-ext","emailext-template","notification",
 "stashNotifier","allure-jenkins-plugin","analysis-collector","analysis-core","bootstraped-multi-test-results-report","build-environment",
 "checkstyle","cobertura","disk-usage","performance","perfpublisher","sonar","sonargraph-plugin","test-stability","xunit","batch-task","copyartifact","docker-build-step","envinject","fail-the-build-plugin","groovy","http_request","job-dsl","fstrigger","build-timeout","AdaptivePlugin","copy-data-to-workspace-plugin","mask-passwords","matrixtieparent","timestamper","virtualbox","vncrecorder","vncviewer","build-with-parameters","nodelabelparameter","job-import-plugin","multi-branch-project-plugin","multiple-scms","greenballs","credentials","scm-api","rebuild","clone-workspace-scm","chucknorris","jobConfigHistory","plugin-usage-plugin","plain-credentials","cloudbees-credentials","config-file-provider","token-macro",
 "docker-plugin","docker-build-step","docker-traceability","docker-build-publish","docker-workflow","build-timestamp","uptime","configurationslicing","scriptler","simple-theme-plugin","thinBackup","build-pipeline-plugin","durable-task","workflow-step-api","swarm","parameterized-trigger","nested-view","git-server","nodelabelparameter","jquery","cloudbees-folder","join","delivery-pipeline-plugin","extra-columns","buildgraph-view","image-gallery","livescreenshot","dry","dashboard-view","any-buildstep","conditional-buildstep","run-condition","flexible-publish","docker-commons","workflow-cps","mercurial","ssh-agent","workflow-api","workflow-support","ace-editor","workflow-scm-step","jquery-detached","authentication-tokens","build-blocker-plugin"].each{ plugin ->
        Jenkins.instance.updateCenter.getPlugin(plugin).deploy()
  println "install "+plugin;
  //deployPlugin(plugin);
}

pm = Jenkins.instance.pluginManager
pm.doCheckUpdatesServer()
plugins = pm.plugins
plugins = Jenkins.instance.updateCenter.getUpdates()

def needRestart = false;
plugins.each {
  
  
  println it.name;
  Jenkins.instance.updateCenter.getPlugin(it.name).getNeededDependencies().each {
    println " -->"+it.name;
    it.deploy()
  }
  needRestart = true;
  it.deploy()
  
}

if (Jenkins.instance.updateCenter.isRestartRequiredForCompletion() || needRestart) {
    hudson.model.Hudson.instance.doSafeRestart(null)
}

#5

Я ж пока все для себя изучаю и исследую. Применять пока это негде.
Точнее я нашел место, где я буду потихоньку обкатывать все эти технологии, но там денег нет совсем (небольшие по объему, но большое количество доработок в одной конфигурации/сфере).
Так сказать, на будущее. Чтоб через 3-5 лет не стать “говнокодером”. Да и через 5 лет влезать в голову будет намного меньше информации :wink:


#6

А на 2.0 не запускал?
Просто у меня при установки 2.0 с чистого листа запустился мастер выбора и установки плагинов, где как минимум 2 из них не установились (точно был git и еще какой-то). Причем эти плагины были отмечены “по умолчанию”.


#7

К сожалению Нет ничего постояннее чем временное. И тут всего скорей выбирать нужно: либо тратить время на “изучение и исследование”, либо через 3-5 лет иметь качественную конфигурацию.