Estoy tratando de convertir mi flujo de trabajo de base de proyectos de estilo antiguo en una canalización basada en Jenkins. Mientras revisaba los documentos , descubrí que hay dos sintaxis diferentes llamadas scripted
y declarative
. Como el declarative
lanzamiento de la sintaxis web de Jenkins recientemente (finales de 2016). Aunque hay una nueva versión de sintaxis, Jenkins también admite la sintaxis con guiones.
Ahora, no estoy seguro en qué situación cada uno de estos dos tipos sería la mejor combinación. scripted
la sintaxis quedará obsoleta pronto? Entonces, ¿será declarative
el futuro del oleoducto Jenkins?
Cualquiera que pueda compartir algunas ideas sobre estos dos tipos de sintaxis.
jenkins
continuous-integration
jenkins-pipeline
Nayana Adassuriya
fuente
fuente
Respuestas:
Copiado de https://jenkins.io/doc/book/pipeline/syntax/#compare
fuente
Otra cosa a considerar es que las canalizaciones declarativas tienen un paso script () . Esto puede ejecutar cualquier canalización con script. Por tanto, mi recomendación sería utilizar canalizaciones declarativas y, si fuera necesario, utilizarlas
script()
para canalizaciones con secuencias de comandos. Por lo tanto, obtienes lo mejor de ambos mundos.fuente
script
bloque en una canalización declarativa, debería considerar usar una canalización con script hasta el final.Hice el cambio a declarativo recientemente desde un script con el agente de kubernetes. Hasta julio de 2018, las canalizaciones declarativas no tenían la capacidad total de especificar pods de kubernetes. Sin embargo, con la adición del
yamlFile
paso, ahora puede leer su plantilla de pod desde un archivo yaml en su repositorio.Esto le permite usar, por ejemplo, el excelente complemento kubernetes de vscode para validar su plantilla de pod, luego leerlo en su archivo Jenkins y usar los contenedores en los pasos que desee.
Como se mencionó anteriormente, puede agregar bloques de script. Ejemplo de plantilla de pod con jnlp personalizado y ventana acoplable.
fuente
declarativo parece ser la opción más preparada para el futuro y la que la gente recomienda. es el único que admite Visual Pipeline Editor. admite validación. y termina teniendo la mayor parte del poder de la secuencia de comandos, ya que puede recurrir a la secuencia de comandos en la mayoría de los contextos. En ocasiones, a alguien se le ocurre un caso de uso en el que no puede hacer lo que quiere con declarativo, pero generalmente se trata de personas que han estado usando secuencias de comandos durante algún tiempo, y es probable que estas brechas de funciones se cierren a tiempo.
más contexto: https://jenkins.io/blog/2017/02/03/declarative-pipeline-ga/
fuente
La documentación de Jenkins explica y compara correctamente ambos tipos.
Para citar: "Scripted Pipeline ofrece una enorme cantidad de flexibilidad y extensibilidad para los usuarios de Jenkins. La curva de aprendizaje Groovy no suele ser deseable para todos los miembros de un equipo determinado, por lo que Declarative Pipeline se creó para ofrecer una sintaxis más simple y obstinada para autor de Jenkins Pipeline.
Los dos son fundamentalmente el mismo subsistema Pipeline ".
Lea más aquí: https://jenkins.io/doc/book/pipeline/syntax/#compare
fuente
También puede referir esto. Una muy buena lectura -> https://e.printstacktrace.blog/jenkins-scripted-pipeline-vs-declarative-pipeline-the-4-practical-differences/ @ Szymon.Stepniak https://stackoverflow.com/users/ 2194470 / szymon-stepniak? Tab = perfil
fuente
La canalización declarativa es muy superior a la canalización con script . La canalización declarativa es capaz de ejecutar todo lo que la canalización con script puede realizar mediante el paso de guión y tiene muchas funciones adicionales.
Además, Declarative Pipeline tiene soporte para varias tecnologías como Docker o Kubernetes (ver aquí ).
La tubería declarativa también está más preparada para el futuro. Todavía está en desarrollo y se han agregado nuevas características como la función Matrix recientemente introducida a fines de 2019.
tl; dr - Declarative Pipeline puede hacer todo lo que puede hacer el Scripted Pipeline e incluso más.
fuente