docker安装jenkins
dockers安装
本人使用的是Windows版本的docker,具体操作流程可以参考https://www.cnblogs.com/wyt007/p/10656813.html
jenkins 安装
在安装完毕docker以后使用指令
下面展示一些 内联代码片
。获取最新的jenkins
如果不是最新的后续有些插件会安装不上
docker pull jenkins/jenkins:lts
下载以后安装Jenkins指令为:
docker run --name myjenkins -p 8080:8080 -v /var/jenkins_home:D:\jenkinstest myjenkins_new
在这里一定要设置端口号,不能简单的使用docker run jenkins这种启动方式。启动完成后就可以看到
这时候尽可以通过127.0.0.1:8080端口访问到jenkins,密码的登陆请参照其它博客。
Unlock Jenkins 的密码如果安装过程中没有注意看安装日志的化可以通过进入pod中在指定文件中查找
docker exec -it 03dbe2acb3bb bash
cat /var/lib/jenkins/secrets/initialAdminPassword
golang安装
jenkins自身不带有golang编译器,需要我们下载相关的插件如下图:
在可选插件中选择Go Plugin进行安装
安装之后可以在如下图所示的位置找到go plugin的使用的地方
之后就可以安装golang,可以选择自动安装,但是由于源的问题很大可能性会安装失败,一次在这里我选择了手动安装之后指定路径的方式
进入docker所在的pod中下载golang在这个过程中会遇到个问题jenkins使用的是debian系统在这个系统中软件的时候需要root权限,但是在起pod的受我们并没有设置root的密码,造成安装不上golang。这个问题耽搁了1.2个小时的时间来照debian系统初始的root密码是多少。后来突然发现docker还有以root登陆容器的方法,问题得到解决
docker exec -ti -u root 4650e8d1bcca bash
curl -O https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar xvf go1.12.5.linux-amd64.tar.gz
以上三条命令可以得到一个go文件夹,这就是我们需要的内容
之后把这个go文件夹考到了/var/jenkins_home/go/目录下,其实放哪都行,我觉得。只要后面指定路径能够找到就可以。当然这个过程需要设置go的环境变量,参考:https://www.cnblogs.com/kex1n/p/7716905.html
到这里又遇到了个拦路的,设置完之后,创建了个自由风格的构建,但是在执行的时候提示找不到go,这就怪了,在pod中已经设好了环境变量为何会找不到?
后来经过查资料找到了原因,jenkins没有加载/etc/profile导致,需要在jenkins调用shell脚本的最前面加一行脚本,#!/bin/bash -ilex,可以通过-i参数和-l参数让 bash为login shell and interactive shell,就可以读取/etc/profile和~/.bash_profile等文件,复制https://www.cnblogs.com/silvi/p/6938356.html原话,至此jenkins就可以正常的编译go代码了。
docker接入
接下来将go代码编译后生成的包打成镜像,这里使用了docker
在jenkins中安装docker-build-step插件如下图所示
在configure system中找到Docker Builder在里面写入安装有docker的机器的ip和端口号,这个端口号是需要在安装docker的机器上进行设置的,具体的设置方法参照:https://www.cnblogs.com/soar1688/p/6833540.html
之后在生成的job的构建模块就可以选择需要docker所做的任务
至此,再次运行构建,就会发现在docker所在的机器上生成了所想要的镜像,但在这个过程中,一定记住构建的源代码中需要有dockerfile文件,可以把源代码和dockerfile文件都放在一起放在一个文件夹当中。