首先我们通过ssh连接自己的远程服务器
在服务器上安装docker,centos7下安装docker的步骤:
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
-
设置 yum 源
设置一个yum源,下面两个都可用
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
-
选择docker版本并安装
- 查看可用版本有哪些
yum list docker-ce --showduplicates | sort -r- 选择一个版本并安装:
yum install docker-ce-版本号
yum -y install docker-ce-18.03.1.ce- 启动 Docker 并设置开机自启
systemctl start docker systemctl enable docker
OK,安装完成后我们就可以在服务器上使用docker了
首先,我们需要下载jenkins镜像,这里推荐大家使用蓝海版jenkins,原版jenkins因为qiang的原因会导致各种插件下载不下来,但是蓝海版不会出现这种问题。
docker pull jenkinsci/blueocean
安装完后我们可以docker images看一下
可以看到我们已经安装成功了,接下来我们就可以启动该镜像了
docker run
--name jenkinsci-blueocean -u root
--rm -d -p 7005:8080 -p 50000:50000
-v /data/jenkins:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
- -u root:以 root 权限启动,防止出现权限问题
- -p 7005:8080:端口映射,服务器的 7005 端口映射容器的 8080 端口
- -p 50000:50000:Jenkins代理默认通过TCP端口50000与Jenkins主机通信
- -v /data/jenkins:/var/jenkins_home:把容器内的 Jenkins 目录挂载到服务器的 /data/jenkins 目录以防容器没了,数据也没了
- -v /var/run/docker.sock:/var/run/docker.sock:保证容器内的 docker 与 服务器上 docker 的通讯
启动完后,我们就可以在浏览器上输入自己远程服务器的公网ip:7005访问自己的jenkins服务
jenkins首次打开会初始化一定时间,耐心等待,初始化完后需要输入密码
由于我们挂载映射到服务器,所以可以直接通过服务器路径找密码
cat /data/jenkins/secrets/initialAdminPassword
然后插件按推荐安装就可以,接着创建自己的账号
创建完成后我们就进入到jenkins的主界面
点击插件管理,我们需要再去额外下载几个插件
在可选插件这里搜 nodejs、 SSH Agent、 Publish Over FTP、 SSH2 Easy,安装
接着进入全局安全配置中
-
打开匿名用户具有可读权限
-
关闭跨站请求伪造保护
- 因为我们的jenkins是通过docker启动的,所以我们这里首先需要进入jenkins容器中
-
docker exec -u root -it 你的jenkins容器名称或id /bin/bash - 接着修改jenkins.sh
-
vi /usr/local/bin/jenkins.sh -
找到exec java那行(大概是在第37行),添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 最终的效果如下 exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@" [root@44a32750c94c /]# exit exit [root@vms9 ~]#
- 然后重启jenkins容器
-
docker restart 你的jenkins容器名称或id - 再次登录到web界面查看 跨站点伪造请求的设置,已经是关闭状态了
现在我们就可以开始点击新建项目
新建项目前我们去用户列表中,点击自己创建的用户,点设置,添加一个API token
点击生成后,复制该token,保存好,离开此页面后将无法再次获取
输入一个任务名称,点击构建一个自由风格的软件项目,然后点确定
这里我们已经把后端项目推到了github上,我们把项目所在的github库的链接复制到这里
然后添加一个证书,用来连接github
这里我们选择使用公钥私钥的链接方式
id username这些都可以不用填,我们首先在本机或远程服务器上,创建一对公钥私钥
ssh-keygen -t rsa
接着我们把公钥配置到github上
cat /root/.ssh/id_rsa.pub
给秘钥起个名字并添加秘钥
查看私钥,并配置到jenkins中(记得复制全,不要遗漏)
cat /root/.ssh/id_rsa
粘贴到这里,接着点确定
然后我们在证书这里选择刚才配置好的
接着在这里配置自己的身份验证令牌(自己随意配置)
接下来我们去github配置webhooks
首先,这里payload url里我们输入
http://root:这里跟的是前面在root用户下设置的api token@这里填写自己的公网ip:7005/job/你刚才创建的项目名称/build?token=这里为自己配置的身份验证令牌
secret里我们填写的也是自己配置的那个身份验证令牌,跟token=后面填写的一样
接着就可以update 该webhook
点击进来后我们就可以看到该webhook成功连接到了我们的jenkins
接下来我们就可以准备在jenkins中做ci/cd了