首页 > 其他 > 详细

jenkins自动化部署go【docker+jenkins+go+gitlab+harbor】1

时间:2021-03-01 09:57:55      阅读:80      评论:0      收藏:0      [点我收藏+]

首先说一下我的环境,首先准备一台ubuntu18.4虚拟机,安装docker, 然后用docker 安装gitlab[大家可以参考 Ubuntu Docker搭建GitLab以及常规配置使用]  和harbor【大家可以参考 Ubuntu18 安装搭建Harbor】,我尝试过通过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

WORKDIR /app
 
ADD main /app/main
 
EXPOSE 8080
 
CMD ["./main"]

build.sh文件是把docker镜像推到harbor上的【已经测试通过】

#!/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镜像,项目中需要在当前目录下有dockerfile,否则构建失败

docker build -t gavintest .
docker tag  gavintest 192.168.100.30:8080/go/gavintest:${BUILD_NUMBER}

docker push 192.168.100.30:8080/go/gavintest

docker rmi  gavintest
docker rmi 192.168.100.30:8080/go/gavintest:${BUILD_NUMBER}

cd ..
#删除项目文件夹
rm -rf gavintest

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 .

#挂载资源文件夹 运行docker
docker run -d --name gavintest   -p 9999:8080 -v $(pwd)/conf:/app/conf   gavintest

在jenkins上创建一个 自由风的项目 gavintest, 调用shell脚本:

cd /var/lib/jenkins/workspace/gavintest
chmod 777 buildtest.sh
./buildtest.sh

 

注意事项

1.jenkins账号运行docker 没有权限提示 :dial unix /var/run/docker.sock: connect: permission denied 解决办法

sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
docker ps #测试当前用户是否可以正常使用docker命令

#把jenkins添加到docker的group里就可以了。
sudo usermod -a -G docker jenkins

#重启jenkins。
systemctl restart jenkins

2.jenkins在王harbor上推送失败,提示push: unauthorized to access repository,解决办法

 #首先登陆harbor
docker login 192.168.100.30:8080

查看.docker/config.json 文件
root@server:~#  cat .docker/config.json 
{
    "auths": {
        "192.168.100.30:8080": {
            "auth": "Z2F2aW46R2F2aW4xMjM="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.6 (linux)"
    }
}

#把.docker复制到/var/lib/jenkins目录下
 cp -r .docker/ /var/lib/jenkins/
修改文件夹权限 chown -R jenkins.jenkins .docker
 cd /var/lib/jenkins/
 chown -R jenkins.jenkins .docker
systemctl restart jenkins

 

jenkins自动化部署go【docker+jenkins+go+gitlab+harbor】1

原文:https://www.cnblogs.com/majiang/p/14461687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!