创建共享库代码项目
1.共享库项目必须按照特定的代码组织结构/src/ /vars
jenkins配置全局设置
1.共享库名称设置 这里的Name的值在jenkinsfile文件中会需要用到
2.配置jenkinsfile的代码仓库访问信息
创建jenkins流水线任务
项目实例
1.devops/src/org/devops/ansible.groovy
package org.devops
def AnsibleDeploy(hosts,func){
sh "ansible ${func} ${hosts}"
}
2.devops/jenkinsfile/ansible.jenkinsfile
#!groovy
@Library("myjenkinslib@master") _
def tools = new org.devops.tools()
//tools指代的是src/org/devops/tools.groovy脚本文件
def ansible = new org.devops.ansible()
pipeline
{
agent { node { label "master"} }
stages{
stage("build"){
steps {
script {
ansible.AnsibleDeploy("servers","-m ping")
}
}
}
}
post {
always {
script{
tools.PrintMes("这里是tools打印的.........")
}
}
}
}
注意:jenkinsfile中的@Library("myjenkinslib@master") _ 中的 myjenkinslib是需要在jenkins中的全局配置
3.在jenkins中创建pipeline任务的时候需要指定执行任务的jenkinsfile脚本名称
4.vars下的groovy脚本可以直接调用
5.运行结果如图
pipeline中实现docker镜像的推送
package org
def create_dockerimage(jenkinsjar,jardir,jarname,harborpro,imagename){
//sh "sudo cp -r /home/jenkins/docker-pipeline/template/* /home/jenkins/docker-pipeline/siem-cluster/siem/siem-dev/"
sh "sudo cp -r /home/jenkins/docker-pipeline/template/* ${jardir}"
sh "sudo sed -i \'s/tempjar/${jarname}/\' ${jardir}Dockerfile"
sh "sudo sed -i \'s/pro/${harborpro}/\' ${jardir}build.sh"
sh "sudo sed -i \'s/temp/${imagename}/\' ${jardir}build.sh"
//sh "sudo cp -r /var/lib/jenkins/workspace/AppServiceProject/register-center/target/register-center-dev.jar ${jardir}"
sh "sudo cp -r ${jenkinsjar} ${jardir}"
sh "sudo sh ${jardir}build.sh"
}
#!groovy
@Library("myjenkinslib@master") _
def mytools = new org.tools()
pipeline {
stage("Deploy"){
steps {
script {
mytools.create_dockerimage("/var/lib/jenkins/workspace/AppServiceProject/register-center/target/register-center-dev.jar","/home/jenkins/docker-pipeline/siem-cluster/siem/siem-dev/","register-center-dev.jar","taishiganzhi","register-center")
}
}
}
pipeline中实现了函数调用