部署运维

基于docker jenkins实现项目的自动化部署

2019-08-21  本文已影响10人  VienFu

1. jenkins安装

如文档题目,此处jenkins是基于docker来安装部署的,那么首先需要先安装docker,这里有docker具体的安装教程,此处不再赘述。

docker安装完毕,接着开始jenkins的安装及部署:

1.1 拉取jenkins镜像

这一部分很简单,一个命令就可以完成:

docker pull jenkins/jenkins:latest

1.2 订制jenkins镜像

实际使用场景中,我们可能需要额外安装一些软件工具,比如fabric(一种基于ssh的轻量自动化部署工具);另外直接拉取的镜像默认用户是jenkins,存在文件的访问权限的问题,通过重新编辑Dockerfile可以把jenkins的用户改成root,下面是一个简单的Dockerfile的样例:

FROM jenkins/jenkins:latest
USER root

RUN apt-get update \
    && apt-get install -y python-pip \
    && pip install fabric3
ARG dockerGid=998
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group

然后,运行命令重新构建jenkins镜像:

docker build -t vienfu_jenkins -f Dockerfile .

1.3 启动容器

jenkins镜像订制完成后,下面就是启动jenkins容器:

docker run -d --name my_jenkins --restart=always -p 8006:8080 \
-v /root/jenkins_home:/var/jenkins_home \  # 挂载jenkins工作目录,方便备份和迁移
-v /var/run/docker.sock:/var/run/docker.sock \ # 包括以下两项的挂载,可以实现在jenkins容器内部构建docker并启动docker容器的目的
-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 \
vienfu_jenkins

另外,如果jenkins容器要跟宿主机实现ssh免密访问,可额外添加如下操作:

docker exec my_jenkins ssh_keygen -t rsa  # 一路回车即可
docker exec my_jenkins cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

2. 新建jenkins任务

jenkins容器启动之后,在浏览器输入:<宿主机IP>:8006即可打开jenkins的UI,首次打开会提示输入管理员密码,可在宿主机输入以下命令把结果粘过去即可:

docker exec my_jenkins cat /var/jenkins_home/secrets/initialAdminPassword

接着安装jenkins插件,选择常规安装即可,也可以跳过手动选择安装。

然后我们就看到了jenkins的主页面了,选择系统管理 -- 管理用户新建jenkins用户并完成登录。

接着安装必要插件,回到jenkins主页面,选择系统管理 -- 插件管理来安装所需要插件,比如gitlab plugin、git plugin、ssh plugin等。

最后,新建任务,回到jenkins主页面,选择新建任务 -- 输入项目名称 -- 选择自由风格的软件项目完成任务的创建;点开新建的任务做一些任务的配置:

如此就基本就完成一个简单项目的自动化部署。

3. 题外篇

可能是出于安全的考虑,一般我们在新订制jenkins镜像最后还是还原设置USER jenkins,这样如果要在宿主机通过fabric免密部署项目,如下两步需要操作:

docker exec my_jenkins ssh-keygen -t rsa # 一路回车即可,生成的key会默认保存在/var/jenkins_home/.ssh/目录下
# 以下操作均在jenkins宿主机上操作
# 1. 添加jenkins用户
useradd jenkins -d /home/jenkins -m -s /bin/bash
# 2. 设密码
passwd jenkins
# 3. 设定sudo权限
# 编辑/etc/sudoers,默认该文件没有写权限,需要先修改权限,然后往里添加一行:jenkins ALL=(ALL:ALL) ALL
# 4. 切换jenkins用户
su - jenkins
# 5. 在/home/jenkins目录下新建authorized_keys文件,然后把jenkins容器中jenkins用户的公匙添加到这个文件里,并设置权限
chmod 600 authorized_keys
上一篇下一篇

猜你喜欢

热点阅读