美文网首页
docker-compose安装jenkins

docker-compose安装jenkins

作者: heichong | 来源:发表于2022-12-13 09:08 被阅读0次

1. 准备

  • jenkins版本 jenkins:2.361.3-lts
  • 查找宿主机 libltdl.so.7文件

jenkins容器内不存在 libltdl.so.7文件,在容器内执行docker命令(如docker ps)会报错libltdl.so.7:No such file or directory,需要把宿主机的此文件映射至jenkins容器内,所以需要提前确定此文件的位置。

  • 我是centos7,文件地址位置:/usr/lib64/libltdl.so.7,个别系统当前文件会在/usr/lib/x86_64-linux-gnu/libltdl.so.7
  • 如果宿主机确实没有找到此文件,centos7可以通过命令yum -y install libtool-ltdl-2.4.2-22.el7_3.x86_64安装,安装以后位置在/usr/lib64/libltdl.so.7

2. 安装jenkins

  • 编写docker-compose文件
cat <<EOF > ./docker-compose.yml
version: "3"
services:
  jenkins:
    image: jenkins/jenkins:2.361.3-lts
    container_name: jenkins
    user: root
    restart: always
    privileged: true
    ports:
      - 18080:8080
      - 50000:50000
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data/:/var/jenkins_home/
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/docker/daemon.json:/etc/docker/daemon.json
      - /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
      - /root/.ssh/:/root/.ssh/

EOF
  • ./data/:/var/jenkins_home/ 这是把容器内的目录映射到宿主机
  • 由于jenkins是使用docker容器安装的,后续我要通过jenkins进行docker镜像打包并推送到docker镜像仓库时,需要使用docker命令,所以需要把宿主机的docker环境映射到jenkins容器内,需要做如下配置
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/docker/daemon.json:/etc/docker/daemon.json

拉取镜像并启动容器

docker-compose up -d 

3. 访问

访问地址: http://10.3.23.191:18080/

image.png

管理员密码保存在
/var/jenkins_home/secrets/initialAdminPassword
对应宿主机
./data/secrets/initialAdminPassword

[root@KSSYSDEV jenkins]# cat ./data/secrets/initialAdminPassword
105455469c9949a7******ac1884673a

输入token即可登录进去

  • 插件安装

4. 新建任务测试(Pipeline)

我们新建一个pipeline任务,测试是否能正常执行

  • 新建任务,选择流水线
    image.png
image.png image.png

选择Pipeline script,并输入以下脚本

pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps { 
                sh 'echo Build stage ...' 
            }
        }
        stage('Test'){
            steps {
                sh 'echo Test stage ...' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'echo Deploy stage ...' 
            }
        }
    }
}

保存后,点击立即构建按钮:


image.png

可以看到,test任务的三个stage均已经成功执行。

参考

pipeline语法参考:https://blog.csdn.net/penngo/article/details/126457364

docker in jenkins pipeline

正常情况下,jenkins中的job,都是在jenkins主机上进行的。
如果我们要编辑java项目,主机就需要安装maven、jdk等;如果要编译VUE项目,主机就要安装nodejs等。这就会导致jenkins主机需要安装太多的东西。

如果我们能编译不同项目时,使用不同的docker镜像,镜像内已经安装好对应的环境了,那这样jenkins主机上就什么都不需要安装了,非常清爽。
即:使用镜像的方式来执行jenkins job

要想在pipeline中使用docker(如下)

pipeline {
    agent {
        docker {
            image '10.3.23.191:9902/devops/maven:3.8.2-openjdk-8'
            args '-v $HOME/.m2:/root/.m2'
        }
    }

    stages {
        stage('Git pull') {
            steps {
                echo '开始拉取代码 ..'
                checkout([$class: 'GitSCM', branches: [[name: '*/f-jenkins']], extensions: [], userRemoteConfigs: [[credentialsId: '67f1f5b0-d6fb-40fa-9799-4a6dbc85a328', url: 'https://gitlab.bidr.com.cn/operation-platform/operation-platform.git']]])
                echo '代码拉取成功'
            }
        }
        stage('Build') {
            steps {
                sh 'pwd'
                echo '开始编译代码..'
                sh "mvn --version"
                sh "mvn clean package -D maven.test.skip=true"
                echo '代码编译成功'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

注意:必须要为jenkins安装docker pipeline插件:

image.png

参考

https://blog.51cto.com/u_14948012/5711163
https://cloud.tencent.com/developer/article/1454335

相关文章

网友评论

      本文标题:docker-compose安装jenkins

      本文链接:https://www.haomeiwen.com/subject/xotetdtx.html