Administrator
发布于 2022-09-22 / 914 阅读 / 0 评论 / 0 点赞

docker 部署 gitlab + Jenkins的golang 项目自动集成发布

自动化部署实现逻辑

image-1665558121869

配置要求

云服务器
2核4G + 1G虚拟内存

部署参考

Docker+Jenkins+Gitlab+Golang持续集成环境
docker部署gitlab

Gitlab部署

docker run -d --name gitlab \
  --platform linux/amd64 \
  --hostname 0.0.0.0 \
  -p 8008:80 -p 10080:22 \
  --restart always \
  -v /Users/zhenyang/codes/gitlab/config:/etc/gitlab \
  -v /Users/zhenyang/codes/gitlab/logs:/var/log/gitlab \
  -v /Users/zhenyang/codes/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

*** 需要耐心等待安装**

访问地址:127.0.0.1:8008

image-1665558346330

初始账号是:root
密码需要在配置中,上文映射的
-v /Users/zhenyang/codes/gitlab/config:/etc/gitlab
中查看文件initial_root_password

image-1665558439016

设置中文

image-1665558494289

添加用户并设置初始密码

image-1665558592040

创建项目后导入成员即可,跟github等其他仓库没有区别
GitLab用户在组中有五种角色权限由低到高:Guest、Reporter、Developer、Master、Owner

  • Guest:可以创建issue、发表评论、不能读写版本库。

  • Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限。

  • Developer:可以克隆代码、开发、提交、push、RD可以赋予这个权限。

  • Maintainer:可以创建项目、添加 tag 、保护分支、添加项目成员、编辑项目、核心RD负责人可以赋予这个权限。

  • Owner:可以设置项目的访问权限-Visibility Level、删除项目、迁移项目、管理组成员、开发组leader可以赋予这个权限。

Jenkins部署

jenkins文档

docker run -d --name jenkins \
-v /Users/zhenyang/codes/jenkins_home:/var/jenkins_home \
-p 8006:8080 -p 50000:50000 \
--restart=on-failure \
jenkins/jenkins:lts-jdk11

添加必须插件
在“系统管理”-“插件管理”-“可选插件”。
搜索go,gitlab 插件安装后重启jenkins
安装go插件这里如果不能翻墙会导致后面出现打包错误。可以取消自动安装的勾选,手动下载golang环境的安装包后上传到指定安装目录即可。

  • Build Steps > 执行shell这里一定要注意自己的git拉去的工作目录
export PATH=$WORKSPACE:$PATH
go env -w GO111MODULE=on
go env
echo "PATH: ${PATH}"
#执行go get & build命令
go mod tidy
cd $WORKSPACE && go build -x

*** 宿主机目录需要开写入权限**

// 查看密码
docker logs jenkins

image-1665558837772

登录推荐安装插件完成

配置gitlab【Dashboard > 系统管理 > Configure System】

【创建项目 > 源码管理 > Credentials > 添加】

image-1665558883693

配置gitlab Webhooks通知报错

Url is blocked: Requests to the local network are not allowed

解决办法:
image-1665558934058

测试push jenkins收到消息并构建

出现错误

ERROR: Couldn’t find any revision to build. Verify the repository and branch configuration for this job.
Finished: FAILURE

git没有拉到代码,构建中git分支哪里发现默认拉的master分支,但是gitlab默认的分支是main分支。修改后再拉就可以了。

Caused: java.io.IOException: Failed to install https://golang.org/dl/go1.18.3.linux-arm64.tar.gz to/var/jenkins_home/tools/org.jenkinsci.plugins.golang.GolangInstallation/golang_1.18.3

这个错误是因为golang.org 被墙了,科学上网打开也没解决,只有手动下载后放进去。前文已经提到

image-1665559062332