docker run -itd --name=gitlab -p 80:80 -v v1:/etc/gitlab -v v2:/var/opt/gitlab gitlab/gitlab-ce
等待几分钟后访问设置的端口,为root用户设置密码,之后便可以使用root用户登录.
wget https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz
# 解压
tar -zxvf harbor-offline-installer-v2.2.0.tgz
# 修改配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
./prepare
# 启动
./install.sh
harbor.yml
# 注释掉https相关,使用http访问
# https related config
#https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
# 访问ip
hostname: ${ip}
# 启动端口
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: ${port}
# amdin账户密码
harbor_admin_password: ${password}
# 使配置文件生效
systemctl reload docker
向私有仓库提交镜像
私有仓库搭建好后,还不能直接向仓库提交镜像,需要修改/etc/docker/daemon.json文件,加入镜像仓库的访问地址和端口
/etc/docker/daemon.json
{
"insecure-registries": ["${ip}:${port}"],
"registry-mirrors": ["http://${ip}:${port}"]
}
docker pull hello-world
docker tag hello-world:latest ${ip}:${port}/${项目名称}/hello-world:latest
docker login ${ip}:${port} -u admin -p ${password}
docker push ${ip}:${port}/${项目名称}/hello-world:latest
docker run -itd -u root -p 8080:8080 -p 50000:50000 -v v1:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name=jenkins jenkinsci/blueocean
# 查看jenkins密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
安装插件(系统管理–>插件管理–>可选插件 )
配置服务器信息(系统管理–>系统配置–>Publish over SSH )
在jenkins上这么设置后,git push 后仍然不会触发构建,还需要在gitlab上创建项目的webhook.
填入上图中绿框中的webhook URL和生成的Secret token,完成后点击Add Webhook.
点击WebHook的Test请求,可以模拟事件触发.
在构建环境中进入构建目录,拉取代码,执行构建命令.
在指定镜像的tag名称时,用到了jenkins提供的BUILD_NUMBER环境变量,代表构建的次数,更多的环境变量可以点击Jenkins enviroment variables进行查看.
构建过程中报错1
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,004 ms]
原因:
默认的构建超时是120000ms,构建时间太长导致了超时
解决办法:
点击高级,在可能超时的构建步骤那里设置 Exec timeout(ms) 合理的时间,以防止构建步骤超时,同时勾选上 Exec in pty 让控制台及时输出相关日志信息
构建过程中报错2
SSH: Connecting from host [RITS20200001]
SSH: Connecting with configuration [172.25.78.130] …
ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [-125]]
原因:
git pull未设置免密登录,需要输入用户名和密码,一直阻塞着.
解决办法:
git设置免密登录,并且修改.git/config文件中的url为git开头的url而不是http开头的url,最后一定要记得,清空工作区间。
tips: 构建的命令最好在构建的机器上手动的敲一下,通过log不方便排查问题。
以上三种操作都能够触发构建,并且可以看到Build History,查看所有的构建历史。
点击单条构建历史,控制台输出,可以看到构建时的log输出.
最后的效果就是,开发者往gitlab上push代码,触发事件,拉取代码,构建新的镜像,将镜像提交到harbor私有仓库,并且以此新镜像在测试环境上构建新的容器,完全的自动化。