使用jenkins实现K8s持续集成--待完成
k8s+jenkins 持续集成
·
文章目录
1.项目架构的代码仓库使用gitlab托管
架构描述我不打算用过多文字描述了,来我们一起直接看图吧....
二.将测试代码上传到gitlab
1.注册gitlab账户
此处使用本地搭建仓库
2.创建仓库名称为"idiaoyan"
如下图所示,安装图解方式创建相应的用户即可。
3.将本地代码上传到"idiaoyan"仓库
#(1)解压静态文件
上传代码到/data/code下
[root@master code]# unzip yiliaoqixie
#(2)Git本地提交代码到本地仓库
cd /data/code
git init
git config --global user.name "liuyan"
git config --global user.email "liuyan@qq.com"
git config --global credential.helper store #后面拉取不要密码
mv yiliaoqixie/* idiaoyan/
cd idiaoyan/
#(3)git推送代码到gitlab的远程仓库
git add .
git commit -m "add code"
git push -u origin master
三.提交dockerfile文件
1.编写dockerfile
#(1)编写dockerfile内容如下
cat > Dockerfile <<EOF
FROM idy.com/harbor/alpine:latest
LABEL auther="idy.com"
LABEL school="oldboyedu" \
class="linux" \
address="北京,上海,深圳"
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add nginx && \
rm -rf /var/cache/ && \
rm -rf /usr/share/nginx/html/*
# ADD idiaoyan.tar.gz /usr/share/nginx/html/
ADD . /usr/share/nginx/html/
EXPOSE 80
COPY default.conf /etc/nginx/http.d/default.conf
CMD ["nginx","-g","daemon off;"]
EOF
#(2)本地测试编译
[root@master idiaoyan]# docker build -t yiliao:v1 .
2.启动容器测试可用性
[root@master idiaoyan]# docker container run -itdp 80:80 yiliao:v1
3.推送dockerfile文件到仓库中
[root@master idiaoyan]# git add Dockerfile
[root@master idiaoyan]# git commit -m "add Dockerfile"
[master 6d3fc7b] add Dockerfile
1 file changed, 16 insertions(+)
create mode 100644 Dockerfile
[root@master idiaoyan]# git push -u origin master
4.部署Jenkins并配置项目源码管理(gitlab环境)
1.部署jenkins服务
Jenkins 快速部署
1.1上传Jenkins 相关文件
上传以下文件
1.2 部署jenkins 服务
cd /data/jenkins
jenkins.gz && mv jenkins/* ./
unzip jenkins.tar.zip
docker load -i jenkins.tar
#直接启动:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
#docker-compose.yml启动
#可能遇到问题,检查对象的目录文件
version: '3.8'
services:
myjenkins:
container_name: myjenkins
hostname: myjenkins
image: cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
restart: unless-stopped
ports:
- 8080:8080
- 50000:50000
environment:
- TZ=CST-8
volumes:
- /data/jenkins/mount/jenkins.yml:/var/jenkins_home/jenkins.yml
- /data/jenkins/mount/Dockerfile_openresty:/var/jenkins_home/tools/Dockerfile_openresty
- /usr/bin/docker:/usr/bin/docker
- /run/docker.sock:/run/docker.sock
- /data/jenkins/mount/workspace/:/var/jenkins_home/workspace/
1.2 创建项目
1.2.1 添加项目的存储库RUL
在上一步完成之后,会弹出如下图所示对话框,依次点击"源码管理" ---> "Git" ---> "Repositories" ---> ”Repository URL"中添加项目的存储库RUL
1.2.2 添加凭证(Credentials)信息
依次点击上一步Credentials的"添加"按钮 ---> "jenkins",
就会弹出如下图所示的对话框,然后根据你的账号密码登录即可。
1.2.3 配置构建指令
如下图所示:
依次点击"构建" ---> "增加构建步骤" ---> 选择"执行shell" ---> "保存"。
1.2.4 点击立即构建
如下图所示,点击"立即构建",就可以成功构建当前的"idiaoyan"这个工程了。
1.2.5 查看控制台输出
5.使用Jenkins实现自动构建镜像并推送到私有仓库
1.重新编辑"执行shell的命令"
#jenkins 认证harbor仓库
[root@jenkins jenkins]# docker login idy.com
Username (admin): admin
Password: idy123456
Login Succeeded
docker build -t idy.com/harbor/yiliao:$version .
docker image push dy.com/harbor/yiliao:$version
2.添加字符参数
如下图所示:
依次点击"General" ---> "参数化构建过程" ---> "添加参数" ---> 选择"字符参数" ---> 填写"version"变量即可。
3.开始传入参数构建
如上图所示,依次点击"Build with Parameters" ---> 输入"version"变量的版本信息 ---> "开始构建"。
如下图所示,构建完成之后,我们可以依次点击"#2"的下拉菜单 ---> 选择查看"控制台输出"的信息。
4.构建完成后查看镜像是否生成
如下图所示,我们查看了"控制台输出",很明显能看到镜像推送成功了,而且在存储库的确有相关的tag记录哟。
温馨提示:
我们假设私有仓库的存储卷路径为"$volume",则其对应的"yiliao"项目的tag存储为位于"$volume/docker/registry/v2/repositories/yiliao/_manifests/ta
gs/"
4.1 使用 jenkins pipline 实现 拉取,构建,推送
后面jenkins CICD均有pipline 完成,以下是pipline 脚本,其中添加字符参数与上方一至
pipeline{
agent any
// 参数化构建
parameters {
//string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'rollback_version', trim: true)
string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'version', trim: true)
}
// 丢弃旧的构建
options {
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '15', numToKeepStr: '20'))
}
// 定义环境变量
environment {
//gitlab相关信息
harbor_address="idy.com"
work_space_yiliao="/var/jenkins_home/workspace/test-yiliao"
}
stages("Build") {
stage('拉取代码'){
steps {
script{
sh "cd ${work_space_yiliao} && rm -r -f idiaoyan"
//拉取代码的方式:ssh或者http,根据项目实际情况选择
sh "git clone http://192.168.221.143:9000/liuyan/idiaoyan.git idiaoyan"
}
}
}
stage('构建镜像'){
steps {
script{
sh "cd ${work_space_yiliao}/idiaoyan && docker build -t idy.com/harbor/yiliao:$version ."
//sh "docker image push idy.com/harbor/yiliao:$version"
}
}
}
stage('推送镜像'){
steps {
script{
sh "docker image push idy.com/harbor/yiliao:$version"
}
}
}
}
}
4.2 查看推送结果
-
查看harbor
-
查看Jenkins 推送结果
5. k8s 持续集成
做到这里,发现自己K8s 知识很乱很不系统。学完K8s再继续编辑这部分;
其实简单的来做就是把K8S 命令(命令式)加入jenkins pipline 中
更多推荐
已为社区贡献3条内容
所有评论(0)