自动化部署实现逻辑
配置要求
云服务器
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
初始账号是:root
密码需要在配置中,上文映射的
-v /Users/zhenyang/codes/gitlab/config:/etc/gitlab
中查看文件initial_root_password
设置中文
添加用户并设置初始密码
创建项目后导入成员即可,跟github等其他仓库没有区别
GitLab用户在组中有五种角色权限由低到高:Guest、Reporter、Developer、Master、Owner
-
Guest:可以创建issue、发表评论、不能读写版本库。
-
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限。
-
Developer:可以克隆代码、开发、提交、push、RD可以赋予这个权限。
-
Maintainer:可以创建项目、添加 tag 、保护分支、添加项目成员、编辑项目、核心RD负责人可以赋予这个权限。
-
Owner:可以设置项目的访问权限-Visibility Level、删除项目、迁移项目、管理组成员、开发组leader可以赋予这个权限。
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
登录推荐安装插件完成
配置gitlab【Dashboard > 系统管理 > Configure System】
- Gitlab host URL 这里需要注意的是,因为docker启动没有link所以只能通过容器ip请求,应为外部是8008映射的内部的80,所以ip请求无需加映射的8008端口【http://172.17.0.3/gitlab-instance-173190df/test_iris.git】
【创建项目 > 源码管理 > Credentials > 添加】
配置gitlab Webhooks通知报错
Url is blocked: Requests to the local network are not allowed
解决办法:
- 注意这里是gitlab 向jenkins发起git变更的推送消息,所以同上,一样的需要使用容器ip跟内部端口【http://172.17.0.2:8080/project/jenkins_auto_build】这个地址是在创建jenkins项目的时候生成的
测试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 被墙了,科学上网打开也没解决,只有手动下载后放进去。前文已经提到