学习某册子的CICD,记录应用Jenkins构建镜像的过程。
应用Jenkins
集成Git
来构建Docker
镜像,为前面的部署筹备镜像资源。
1. 装置Nodejs环境
如果想要装置Node
环境,有以下两个方法:
- 源码编译:这种是将
Node
源码拉下来后,在服务器端编译实现后才能够应用。工夫比拟长,流程也略简单 应用
Jenkins Plugin
中NodeJS
插件主动配置装置在
Jenkins
首页,左侧的系统管理=>插件治理=>可选插件,搜寻Node
;选中NodeJS
后,点击左下角的间接装置
开始装置插件。发现Jenkins版本太低(去年装的Jenkins),装了Node插件不能用(),更新一下Jenkins:
装置参考:https://blog.51cto.com/u_1567...
## pkg.jenkins.io上的jenkins版本太低,改为应用https://mirrors.jenkins.io/redhat-stable/yum remove jenkins # 删除旧版本的jenkinswget https://mirrors.jenkins.io/redhat-stable/jenkins-2.346.2-1.1.noarch.rpm # 下载rpm -ivh jenkins-2.346.2-1.1.noarch.rpm # 装置service jenkins start # 启动服务
装置结束,返回首页,找到系统管理=>Global Tool Configuration(全局工具配置)=>NodeJS=>新增NodeJS,点击新增NodeJS,抉择相应的版本填写信息保留即可。
如何在工作中应用?
只须要在工作的配置中,找到构建环境,选中Provide Node & npm bin/ folder to PATH
,抉择方才配置好的NodeJS
即可。
第一次执行会下载对应的Node
版本,后续不会下载。
2. 应用SSH协定集成Git仓库源
这一步,应用Jenkins
集成内部Git仓库,实现对实在代码的拉取和构建。
创立一个vue3我的项目用于测试构建:
npx vue create cicd_test
抉择vue3我的项目开始下载安装,而后推送至github仓库
2.1 生成公钥私钥
这是Jenkins
拜访Git
公有库的罕用认证形式。能够应用ssh-keygen
命令即可生成公钥私钥。在本地机器执行生成即可。(应用本人邮箱)
ssh-keygen -t rsa -C "yeying0827@126.com"
实现后须要在Git
端配置公钥,在Jenkins
端应用私钥与Git
进行身份校验。
2.2 在GitHub配置公钥
配置下SSH近程登录到虚拟机:
先在虚构机上安装ssh服务和net-tools工具
yum install openssh-server # 默认已装yum install net-tools
在mac终端通过ssh命令登录:ssh 用户名@ip
ssh yy@10.211.55.6# 登录后通过cat命令获取公钥cat /root/.ssh/id_rsa.pub
获取公钥后去github的settings里配置即可
2.3 在Jenkins配置私钥
在Jenkins
中,私钥/明码
等认证信息都是以凭证
的形式治理的,所以能够做到全局通用。
咱们能够在配置工作时,来增加一个本人的凭证。点击我的项目的配置,顺次找到 源码治理=>Git=>Repositories
点击Credentials上面的增加,填写完后点击增加按钮
无奈连贯仓库谬误:Error performing git command: git ls-remote -h git@github.com:yeying0827/cicd_test.git HEAD
须要在虚构机上安装git客户端工具:yum -y install git
点击保留
3. 构建镜像
须要先筹备DockerFile
才能够构建镜像。
3.1 编写DockerFile
什么是DockerFile?
DockerFile
是一个Docker
镜像的根底形容文件,外面形容了生成一个镜像所须要的执行步骤。咱们也能够自定义一份DockerFile
来创立一个本人的镜像。
- 在后面vue3我的项目的根目录创立
DockerFile
vi Dockerfile
FROM nginx:1.15-alpineCOPY dist /etc/nginx/htmlCOPY conf /etc/nginx/WORKDIR /etc/nginx/html
形容内容为:
- 基于nginx:1.15镜像做底座
- 拷贝本地
dist
文件夹内的文件,到镜像内/etc/nginx/html文件夹内 - 拷贝本地
conf
文件夹内的文件,到镜像内/etc/nginx/文件夹内 - 指定工作目录
- 提交到代码库
git add ./Dockerfilegit commit -m "chore: add dockerfile"git push
- 生成镜像:应用
docker build
命令就能够构建一个镜像
docker build -t imagename:version .
-t 申明要打一个镜像的Tag标签,前面紧跟的就是标签。标签格局为 镜像名:版本
. 申明要寻找dockerfile文件的门路,.代表以后门路下寻找,默认文件名为Dockerfile
更多DockerFile的语法
3.2 Jenkins端配置
在代码源和DockerFile
准备就绪后,咱们只需在Jenkins
端配置下要执行的shell
脚本即可。
找到我的项目的配置,顺次找到 构建=>Execute shell,输出以下脚本:
#!/bin/sh -lnpm install --registry=https://registry.npm.taobao.orgnpm run builddocker build -t jenkins-test .
脚本次要操作:装置依赖=>构建文件=>构建镜像。填写结束后保留
4. 执行工作
在我的项目下点击立刻构建
触发执行工作,GLIBC等版本报错,无奈执行node命令,报错
// 应用strings命令查看查看最高只有2.17strings /lib64/libc.so.6 |grep GLIBC_
装置glibc_2.28和gcc 8.2
reboot重启,启动jenkins。
Node版本过高构建失败,应用node14.17.0版本。
没有conf文件夹构建失败,新建conf文件夹提交到库。
构建胜利。
至此,实现了应用Jenkins
构建本人的前端镜像。
从控制台输入能够看出,是先依据配置的git仓库拉取了代码,而后执行了配置的shell,最初依据Dockfile里的配置生成镜像