Estou tentando converter meu fluxo de trabalho de base de projeto de estilo antigo em um pipeline baseado em Jenkins. Ao examinar os documentos , descobri que existem duas sintaxes diferentes chamadas scripted
e declarative
. Como o declarative
lançamento de sintaxe da Web do Jenkins recentemente (final de 2016). Embora haja uma nova versão de sintaxe, o Jenkins ainda oferece suporte à sintaxe com script.
Agora, não tenho certeza em qual situação cada um desses dois tipos seria uma melhor correspondência. scripted
a sintaxe será descontinuada em breve? Então será declarative
o futuro do pipeline do Jenkins?
Qualquer pessoa que possa compartilhar algumas idéias sobre esses dois tipos de sintaxe.
jenkins
continuous-integration
jenkins-pipeline
Nayana Adassuriya
fonte
fonte
Respostas:
Copiado de https://jenkins.io/doc/book/pipeline/syntax/#compare
fonte
Outra coisa a se considerar é que os pipelines declarativos têm uma etapa script () . Isso pode executar qualquer pipeline com script. Portanto, minha recomendação seria usar pipelines declarativos e, se necessário, usar
script()
pipelines com script. Portanto, você obtém o melhor dos dois mundos.fonte
script
bloco em um pipeline declarativo, deve considerar o uso de um pipeline com script até o fim.Mudei recentemente para declarativo do script com o agente kubernetes. Até julho de 18, os pipelines declarativos não tinham a capacidade total de especificar pods de kubernetes. No entanto, com a adição da
yamlFile
etapa, agora você pode ler seu modelo de pod de um arquivo yaml em seu repo.Isso então permite que você use, por exemplo, o ótimo plugin kubernetes do vscode para validar seu modelo de pod, em seguida, leia-o em seu Jenkinsfile e use os contêineres nas etapas que desejar.
Conforme mencionado acima, você pode adicionar blocos de script. Exemplo de modelo de pod com jnlp e docker personalizados.
fonte
declarativa parece ser a opção mais preparada para o futuro e aquela que as pessoas recomendam. é o único que o Visual Pipeline Editor pode suportar. ele suporta validação. e acaba tendo a maior parte do poder do script, pois você pode recorrer ao script na maioria dos contextos. ocasionalmente, alguém surge com um caso de uso em que não consegue fazer exatamente o que deseja com o declarativo, mas geralmente são pessoas que usam scripts há algum tempo e essas lacunas de recursos provavelmente se fecharão com o tempo.
mais contexto: https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/
fonte
A documentação do Jenkins explica e compara adequadamente os dois tipos.
Para citar: "O Pipeline com script oferece uma quantidade enorme de flexibilidade e extensibilidade para os usuários do Jenkins. A curva de aprendizado do Groovy não é normalmente desejável para todos os membros de uma determinada equipe, então o Pipeline declarativo foi criado para oferecer uma sintaxe mais simples e opinativa para autoria do Jenkins Pipeline.
Os dois são fundamentalmente o mesmo subsistema de Pipeline por baixo. "
Leia mais aqui: https://jenkins.io/doc/book/pipeline/syntax/#compare
fonte
Você também pode consultar isso. Uma leitura muito boa -> https://e.printstacktrace.blog/jenkins-scripted-pipeline-vs-declarative-pipeline-the-4-practical-differences/ @ Szymon.Stepniak https://stackoverflow.com/users/ 2194470 / szymon-stepniak? Tab = profile
fonte
O Pipeline declarativo é muito superior ao Pipeline com script . O pipeline declarativo é capaz de executar tudo o que o pipeline com script pode, usando a etapa de script e tem muitos recursos adicionais.
Além disso, o Pipeline declarativo tem suporte para várias tecnologias como Docker ou Kubernetes (veja aqui ).
O pipeline declarativo também é mais preparado para o futuro. Ele ainda está em desenvolvimento e novos recursos, como o recém-introduzido recurso Matrix , foram adicionados recentemente, no final de 2019.
tl; dr - Pipeline declarativo pode fazer tudo que o Pipeline com script pode fazer e ainda mais.
fonte