首页 > 其他分享 >jenkins docker pipeline 脚本

jenkins docker pipeline 脚本

时间:2023-03-23 13:45:48浏览次数:37  
标签:pipeline git name url project steps jenkins docker

pipeline {
    agent any
    
    parameters {
        gitParameter(name: 'BRANCH', type: 'PT_BRANCH', defaultValue: 'master', description: '选择 Git 分支')
        choice(name: 'ENV', choices: ['dev', 'staging', 'prod'], description: '选择部署环境')
    }
    
    environment {
     //需要到系统凭证中配置git凭证 git_auth = "jenkins-pipeline" git_timeout = "120" git_url = "[email protected]:xxxxxxxx/xxxxxxxx.git" docker_url = "docker-hub.xxxxxx.com" docker_space = "xxxx" project_name = "xx-xx" docker_tag = "latest" } stages { stage('环境检测') { steps { script{ } sh label: '', script: ''' mvn -v git version java -version docker -v ''' } } stage('代码获取') { steps { checkout([ $class: 'GitSCM', branches: [[name: "${params.BRANCH}"]], extensions: [[ $class: 'CloneOption', noTags: false, reference: '', shallow: false, timeout: "${git_timeout}" ]], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]] ]) } } stage('项目构建') { steps { script { sh """ mvn clean package -Dmaven.test.skip=true """ } } } stage('构建镜像') { steps { script { // 使用 Dockerfile 构建镜像 sh """ docker build -t ${docker_url}/${docker_space}/${project_name}:${docker_tag} . """ } } } stage('镜像上传') { steps { script { // 登录到 Docker Hub // sh "echo '${DOCKER_HUB_PASSWORD}' | docker login -u '${DOCKER_HUB_USERNAME}' --password-stdin" // 推送镜像 sh """ docker push ${docker_url}/${docker_space}/${project_name}:${docker_tag} docker rmi ${docker_url}/${docker_space}/${project_name}:${docker_tag} """ } } } stage('发布') { steps { script { // 根据选择的部署环境设置相应的环境变量 if (params.DEPLOY_ENV == 'dev') { // 设置开发环境的环境变量 } else if (params.DEPLOY_ENV == 'staging') { // 设置预发布环境的环境变量 } else if (params.DEPLOY_ENV == 'production') { // 设置生产环境的环境变量 } // 目标服务器的 IP 列表 def target_servers = ['192.168.0.123'] // 使用循环遍历目标服务器列表 for (target_server_ip in target_servers) { echo "Deploying to server: ${target_server_ip}" // 在目标服务器上部署 Docker 容器(替换为目标服务器的用户名) // 确保目标服务器已经安装了 Docker,并且 Jenkins 有权限 SSH 访问目标服务器 sh """ ssh -o StrictHostKeyChecking=no root@${target_server_ip} ' set -x && docker pull ${docker_url}/${docker_space}/${project_name}:${docker_tag} && if docker ps -a | grep -w "${project_name}" >/dev/null; then docker stop ${project_name} && docker rm ${project_name} && docker rmi ${docker_url}/${docker_space}/${project_name}:${docker_tag} fi && docker run --init -d -m 512M -v /data:/data -e JVM_XMX=256M -e JVM_XMS=256M --net=host --name ${project_name} -d --restart always ${docker_url}/${docker_space}/${project_name}:${docker_tag} ' """ } } } } stage('清空工作目录') { steps { deleteDir() } } } post { always { sh label:'', script:""" """ } } }

 

标签:pipeline,git,name,url,project,steps,jenkins,docker
From: https://www.cnblogs.com/bookc/p/17247165.html

相关文章

  • 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器
    场景最终目的是使用DockerCompose部署一个Gitlab服务。效果 注:博客:javascript:void(0)关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现注:在此过......
  • idea 中的docker
    idea高度集成化可以自动识别dockerformac/win并且自动连接dockerd默认是路劲/usr/local/docker/usr/local/docker-compose如果是是通过brew安装二进制......
  • docker容器进行文件挂载失败的解决方法
    不支持直接挂载文件,会生成与文件同名的目录,导致挂载失败,报错信息如下:docker:Errorresponsefromdaemon:failedtocreateshimtask:OCIruntimecreatefailed:run......
  • Docker版本的NASTool配置
    前面的文章中,我分享了如何用套件去安装NASTool。这篇文章中我主要分享一下Docker版本的NASTool怎么安装和配置,重点说一下需要注意的地方。下载镜像在 docker>注册表......
  • 彻底删除Docker Desktop for Mac
    sudorm-rf/Applications/Docker.appsudorm-rf/private/var/folders/0y/frd89c5s3yx4pg6fjbn9d8j00000gn/C/com.electron.dockerdesktoprm-rf~/Library/Contain......
  • Docker原理
    docker是什么:Docker是完整的一套容器管理系统,所以想要搞懂Docker的概念,我们必须先从容器开始说起。什么是容器?-[x]容器是用来装东西的,Linux里面的容器是用来装应用......
  • 10分钟看懂Docker和K8S
    2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司......
  • 【云原生 • Docker】用故事给老板讲Docker核心原理
    白话Docker核心原理Docker是什么?Docker使用Google公司推出的Go语言进行开发实现,基于操作系统内核中Cgroup(资源控制)、Namespace(资源隔离)与OverlayFS(数据存储)等技术,实现......
  • 3、DockerFile解析
    一、是什么DockerFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。Dockerfile是独立于docker引擎,存在于外面的一个文件DockerFile官......
  • JMeter+Jenkins分布式压测持续集成
     Jenkinsjob配置参数化构建运行分布式shell脚本:sh...生成测试报告配置生成html测试报告,需要安装插件HTMLPublisherJMeter性能脚本编写jmete......