首先说一下我的环境,首先准备一台ubuntu18.4虚拟机,安装docker, 然后用docker 安装gitlab[大家可以参考 Ubuntu Docker搭建GitLab以及常规配置使用] 和harbor【大家可以参考 Ubuntu18 安装搭建Harbor】,关于k8s的安装大家 可以参考 Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 和 Centos 使用kubeadm安装Kubernetes 1.15.3 关于harbor 程序手动更新到k8s 参考 Windows docker k8s asp.net core.我尝试过通过docker来安装jenkins,jenkins容器里面在安装docker和harbor通信,但是后面还是遇到很多问题 不好解决, docker默认是无状态的 需要保存的数据都要挂在的虚拟机上, 比如jenkins里面下载的golang镜像,jenkins重启就丢失了, 所以后面彩用jenkins直接安装到虚拟机上。
jenkins安装
#准备工作
#存储库密钥添加到系统
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
#将Debian包存储库地址附加到服务器的sources.list
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
apt-get update
sudo apt-get install -y openjdk-8-jdk
sudo apt-get install -y jenkins
#如果你的端口8080被占用
#编辑`/etc/default/jenkins`, 修改 ----HTTP_PORT=8080----`为----HTTP_PORT=8081----` 在这里,“8081”也可被换为其他可用端口
#启动Jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
jenkins的配置我们就省略了, 部署项目我们时 在开发测试环境可以直接在jenkins上直接运行docker实例,也可以把docker推到harbor上,至于harbor到k8s上后面在写一篇文章。
go项目
为了省事我们把必要脚本都放到项目里面,项目结构如下:
我们的Dockerfile文件如下:
FROM golang:1.15.6
RUN mkdir -p /app
RUN mkdir -p /app/conf
RUN mkdir -p /app/logs
WORKDIR /app
ADD main /app/main
EXPOSE 8080
CMD ["./main"]
buildtest.sh是在jenkins上直接运行docker实例
#!/bin/bash
#cd $WORKSPACE
export GOPROXY=https://goproxy.io
#根据 go.mod 文件来处理依赖关系。
go mod tidy
# linux环境编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main
#删除docker
docker stop gavintest
docker rm gavintest
docker rmi gavintest
# 构建docker镜像,项目中需要在当前目录下有dockerfile,否则构建失败
docker build -t gavintest .
mkdir logs
mkdir conf2
#挂载资源文件夹 运行docker
docker run -d --name gavintest -p 9999:8080 -v $(pwd)/conf:/app/conf -v $(pwd)/logs:/app/logs gavintest
在jenkins上创建一个 自由风的项目 gavintest, 调用shell脚本:
cd /var/lib/jenkins/workspace/gavintest
chmod 777 buildtest.sh
./buildtest.sh
jenkins构建 结果