Docker部署Jenkins并使用
  BBJ6jozQQLol 2023年12月07日 14 0

前置准备jenkins所在宿主服务器首先安装好jdk、maven

一、创建jenkins (使用docker-compose)

services:
  jenkins:
    image: jenkins/jenkins:latest
    container_name: jenkins
    user: root
    volumes:
      # 挂载工作目录
      - /mnt/jenkins-data:/var/jenkins_home
      - /usr/local/m2repository:/usr/local/m2repository
      # java 路径
      - /usr/local/java/jdk1.8.0_231:/usr/local/java/jdk1.8.0_231
      # mvn 路径
      - /usr/local/apache-maven-3.6.2:/usr/local/apache-maven-3.6.2
      - /usr/bin/docker:/usr/bin/docker
      - /usr/bin/docker-compose:/usr/bin/docker-compose
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - jenkins
    ports:
      - 9090:8080
      - 50000:50000
    restart: always
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Shanghai
networks:
  jenkins:

容器运行之后根据提示操作。

二、安装插件Maven Integration,

2.1 配置JDK和Maven: 点击:系统管理 -> 全局工具配置 -> 找到JDK和Maven

Docker部署Jenkins并使用_jenkins

Docker部署Jenkins并使用_jenkins_02

2.2 配置环境变量:系统管理 -> 系统配置 -> 全局属性(勾选环境变量)

Docker部署Jenkins并使用_jenkins_03

Docker部署Jenkins并使用_jenkins_04

三、创建流水线

def remote = [:]
remote.name = 'neo4j'
remote.host = 'ip地址'
remote.user = 'root'
remote.password = '密码'
remote.allowAnyHosts = true

pipeline {
    environment {
        // 定义你的阿里云镜像仓库信息
        REGISTRYURL = '阿里云镜像仓库信息'
        //命名空间
        REPOSITORYNAME = '命名空间'
    }

    agent any
    tools {
        maven 'maven'  ////工具名称必须在Jenkins  全局工具配置中预配置。
        jdk 'jdk1.8'
    }

    stages {
        stage('git clone') {
            steps {
                // 从git仓库拉取代码
                git branch: 'master-jdsz', credentialsId: '2653be50-4100-4ef6-8d49-f091612ac091', url: 'git地址'
                script {
                    //获取git版本
                    build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
                    //Groovy中使用变量时应该使用双引号
                    echo "${build_tag}"
                }
            }
        }
        stage('mvn打包') {
            steps {
                sh 'whereis java'
                sh 'java -version'
                sh 'mvn -v'
                sh 'mvn -Dmaven.test.failure.ignore=true clean package'
                sh 'ls'
                
            }
        }
        stage('docker Build'){
            steps {
                sh "docker build -t ${REGISTRYURL}/${REPOSITORYNAME}/end-safety-monitor:${build_tag} ."
            }
        }
        stage('docker login and push'){
            steps {  
                withCredentials([usernamePassword(credentialsId: '367233f7-e1ca-4eaa-837f-37ad1ea20700', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {                 
                    sh "echo ${PASSWORD} | docker login $registryUrl -u ${USERNAME} --password-stdin"
                    sh "docker push ${REGISTRYURL}/${REPOSITORYNAME}/end-safety-monitor:${build_tag}"
                }
            }
        }
        stage('删除旧镜像并重启容器') {
            steps {
                script() {
                    sshCommand remote: remote, command: "docker rm -f 容器名"
                    // 使用'{print $3}' 需要使用“\” 来转义
                    sshCommand remote: remote, command: 'docker rmi $(docker images | grep end-safety-monitor | awk \'{print $3}\')'
                    sshCommand remote: remote, command: "docker run -d -p 17008:17008 --name end-safety-monitor ${REGISTRYURL}/${REPOSITORYNAME}/end-safety-monitor:${build_tag}"
                }
            }
        }
        
    }
}






【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月07日 0

暂无评论

推荐阅读
  BBJ6jozQQLol   2023年12月07日   15   0   0 Jenkins
  C7GElnmfNnFj   2023年11月13日   17   0   0 JenkinsWindows端口
  uvM09mQNI0hF   2023年11月14日   10   0   0 sedJenkinsxml