ubuntu下安装docker版jenkins,及使用ssh连接gitlab

ubuntu下安装docker版jenkins

我是用的是Ubuntu18.04,其他linux应该差别不大,都可以参考本教程

本教程需要Docker运行环境,关于docker的安装,本文不做赘述,可以参考官方安装教程https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

下面进入正题

  1. 使用下面的命令拉取jenkins的docker镜像,这里我是用的是lts的长期支持版本,你可以到jenkins官网自由选择其他版本

sudo docker pull jenkins/jenkins:lts

  1. 配置宿主机映射到容器的目录,之后jenkins的一些配置文件都将会存储到该目录下,这个目录可以自己定,但是我建议遵守我这样的规范,便于日后查找和管理

sudo mkdir /home/jenkins_home # 创建jenkins_home目录 sudo chown -R 1000:1000 /home/jenkins_home #设置该目录的所有者和所属的组

  1. 启动jenkins的docker镜像,并设置相关参数,参数解释:

-d 表示以后台模式运行

--name 为容器定义一个名字(后面可以代替容器id使用)

-p 表示映射容器的端口到宿主机的端口

-v 表示映射宿主机的目录到容器的目录

-u root 使用root用户运行,避免后面出现的一些执行权限问题

-v /home/jenkins_home:/var/jenkins_home 映射jenkins_home,将数据存储到宿主机,这样配置就不会随容器丢失

-v /var/run/docker.sock:/var/run/docker.sock 与 -v /usr/bin/docker:/usr/bin/docker 把宿主机docker 映射到容器内,可以直接在容器内使用宿主机docker

-v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \ 容器内docker运行需要的库文件

-v /opt:/opt \ 自主安装的一些运行时软件(如java/maven/git...)

-v /etc/timezone:/etc/timezone 映射时区文件,保证容器的时区和宿主机相同(官网的jenkins容器时区不是中国的时区)

最后的jenkins/jenkins:lts是要启动的镜像

sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root \ -v /home/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \ -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \ -v /opt:/opt \ -v /etc/timezone:/etc/timezone jenkins/jenkins:lts

  1. 容器启动后,就可以访问ip:8080看到jenkins首次运行的首页了,然后通过下面命令查看初始密码,填入之后跳转到安装插件的页面,选择第一个就好,会默认安装一些插件

sudo cat /home/jenkins_home/secrets/initialAdminPassword

  1. 跳转到创建用户和密码的界面,创建好后,jenkins的安装也就到此结束了

以上内容,转载自别人。

使用jenkins连接gitlab

步骤1 进入docker中的jenkins

docker exec -it jenkins bash

步骤2 进入 ~/.ssh目录,删除目录的所有内容,然后执行命令

ssh-keygen

顺序按回车,将目录中id_rsa.pub 公钥传到gitlab中ssh key中。

步骤3 进入jenkins中输入用户名和密码(之前创建的用户名和密码),下载插件,gitlab,ssh,

步骤4 新建Pipeline 流水线项目 example,在项目中配置,

首先拉取gitlab上的代码,

node{

stage('Git Checkout'){

sh'git clone ssh://[email protected]:2222/ma/microserver.git'

}

}

点击保存,然后点击立即构建。构建成狗之后,进入docker中的jenkis ,进入/var/jenkins_home/workspace/example 目录中,可以看到检出的文件夹microserver,

但是出现的问题是,当修改了gitlab中的内容,再点击构建的时候,会提示目录已经存在,无法构建。故可以使用下面的方法与gitlab连接。

步骤1. 修改流水线项目example中的配置,点击流水线语法,选择 chenckout:Check out from version control

步骤2:SCM选择Git,url输入ssh://[email protected]:2222/ma/microserver.git,

注意,下面的验证应该用jenkins所在的docker的主机的用户名和密码进行验证 hadoop ×××××

步骤3:点击下面的生成脚本,将生成的脚本复制到配置中。

node{

stage('Git Checkout'){

checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'a2d133e8-a7cc-4d65-9903-7059113ec447', url: 'ssh://[email protected]:2222/ma/microserver.git']]])

}

}

步骤4:点击立即构建,可以看到构建成功,进入jenkins中的workspace中,可以看到直接检出的是gitlan中的文件。

说明:按照上述方法检出的代码,在重新构建的时候,不会提示目录已经存在,因为检出的直接就是文件。

发布了46 篇原创文章 · 获赞 12 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/malingyu/article/details/102601296