gocd的地址:Installing GoCD server on Windows | GoCD User Documentation
gocd文档:GitHub - gocd/docker-gocd-server: Docker server image for GoCD
一、docker拉取gocd镜像
java
#拉取server镜像
docker pull gocd/gocd-server:v21.1.0
docker pull gocd/gocd-server:v23.5.0
#拉取agent镜像
docker pull gocd/gocd-agent-alpine-3.12
docker pull gocd/gocd-agent-alpine-3.12
二、创建gocd-server容器,在创建gocd-server的时候还需要安装两个插件,一个是通过将镜像保存到外部的插件,另外一个是使用gitlab登录的插件,这两个插件包是:
docker-registry-artifact-plugin-1.3.0-138.jar
gitlab-oauth-authorization-plugin-2.1.0-205.jar
下面有下载地址,下载完之后,通过挂载的方式挂载到docker,使用dockers -v
java
##先下载jar包
https://github.com/gocd/docker-registry-artifact-plugin/releases/download/v1.3.0-138-exp/docker-registry-artifact-plugin-1.3.0-138.jar
https://github.com/gocd-contrib/gitlab-oauth-authorization-plugin/releases/download/v2.1.0-205/gitlab-oauth-authorization-plugin-2.1.0-205.jar
##然后创建目录,这个目录自己随便建
mkdir /root/devops/gocd/plugins
##给这个目录授权,因为gocd在启动的时候会在这个目录里面创建其他目录
chmod 777 /root/devops/gocd/plugins
##然后在/root/devops/gocd/plugins下创建一个external目录
mkdir external
##把前面的两个jar包放到eternal目录下
##然后把创建的目录指定到/godata/plugins这个目录是放插件的地方
docker run -p 8153:8153 --name gocd-server -v /root/devops/gocd/plugins:/godata/plugins -e GOCD_SERVER_PORT=8153 -d gocd/gocd-server:v21.1.0
三、访问gocd-server,地址:http://ip:8153/

四、开始设置gitlab登录
第一步点击"Authorization Configurations"

第二步点击"Add"

第三步Plugin选择"GitLab OAuth authorization plugin"
Id:这里可以随便写,我这里填了"gocd-gitlab"

然后"Authenticate with"选择"GitLab Enterprise"。但是下面这几个填写什么呢?
GitLab Enterprise Base Url:
Application ID:
Client Secret:
Personal Access Token:

第四步:来到gitlab这边
点击头像,选择"Preferences"

在进去之后,点击左边"Applications",然后右边选择"Add new application"

进来之后就是这个页面,Name是可以随便填写的,Redirect URL到底填写什么呢?这里先直接填写gocd的首页地址,比如http://ip:8153。后面再修改。

下面这个Scopes怎么选呢,可以参考这个https://docs.gitlab.com/ee/integration/oauth_provider.html

点击"save"之后,就有了ApplicationID和Secret,保存好,后面要用。

后面还要创建一个access token,点击左边的"Access Tokens",再点击右边"Add new token"

token name可以随便填,expiration date只能选一年,scopes选下图打勾的几个就可以了。

点击保存之后,会生产一个token,这个一定要保存好。gocd要用到。
上面的做完之后,要回到gocd的配置页面,开始配置这几个选项
GitLab Enterprise Base Url:就填写gitlab的首页地址,比如http://ip:80就可以了
Application ID:有了
Client Secret:有了
Personal Access Token:有了

配置好之后,再次进入gocd,已经有gitlab图标了,点击gitlab的图标。

欧尼,报错了。The redirect URI included is not valid.怎么解决呢?

把上面这个地址复制出来,然后粘贴到别的地方,找到redirect_uri这个地方。把这个url复制粘贴到gitlab的Application中的Redirect URL这里。



终于可以了。