4.5 Eric Zhou Git 2019-12-20
若干年前自己曾经也搭建过gitlab服务和gitlab-runner,因为当时shell/bash环境运行机制初入门. 对很多概念不是很理解,依葫芦画瓢,没有自己的见解.但是网络环境也没有在这么复杂.
因为公司开发服务器集群和公司内部的私有Gitlab服务内部防火墙网络不通.公司内部网络安全规章制度, 导致申请公司服务器集群和gitlab服务器之间的互通非常麻烦和繁琐. 应为自己开发电脑可以访问gitlab服务器和开发服务器,而开发服务器和gitlab服务之间不同. 索性就使用自己的windows10子系统ubuntu作为gitlab-runner来完成项目的测试编译部署的工作,同时做部署的中转站.
因为我们公司内网做了层层隔离,申请集群之间的互通非常麻烦,万不得已就使用自己的开发电脑运行gitlab-runner. 其中有一个缺点就是每次电脑关机必须要到 window10-ubuntu 中运行sudo gitlab-ci-multi-runner start
来启动gitlab-ci-multi-runner.
https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.10.0/index.html
其中v1.10.0
可以替换成您想要的版本号笔者的gitlab 公司服务版本号 GitLab Community Edition 8.13.3 8d79ab3
可以知道这边版本是2016.11.02发布的, 对应的是gitlab-runner v1.7.1. 由于我找不到gitlab-runner v1.7.1版本, 就是用4个月之后的版本 v1.10.0. 我就使用 https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.10.0/index.html
(v1.10.0 可以替换成您想要的版本)
在我的windows10-ubuntu中运行一下命令
# 切换到root权限 sudo su wget https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.10.0/deb/gitlab-ci-multi-runner_amd64.deb #安装gitlab-runner dpkg -i gitlab-ci-multi-runner_amd64.deb # windows10-linux 安装docker总是失败 # 安装sshpass 来免输入ssh 账号密码 apt install sshpass
sudo gitlab-ci-multi-runner start
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-ci-multi-runner install -n gitlab-runner -d /home/gitlab-runner -u gitlab-runner
安装好gitlab-ci-multi-runner这个软件之后,我们就可以用它向GitLab-CI注册Runner了。 向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。 其中,token是为了确定您这个Runner是所有工程都能够使用的Shared Runner还是具体某一个工程才能使用的Specific Runner。 如果要注册Shared Runner,您需要到管理界面的Runners页面里面去找注册token。如下图所示:
如果要注册Specific Runner,您需要到项目的设置的Runner页面里面去找注册token。如下图所示:
**记住token**
回到windows10-子系统BASH终端中配置runner
gitlab-ci-multi-runner register
配置完成之后可以看到一下配置内容
所以在终端执行: curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
稍等片刻,源已经添加完毕,再执行: sudo apt-get install -y nodejs
等待安装完成。
顺带一提,如果您要安装12.x.x 的版本,只需要修改添加源地址中的数字即可,比如: curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
# runner 安装文件 https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.10.0/index.html # 我的windows10 子系统linux里面安装docker失败导致 gitlab-ci不能使用docker,所以直接编译go二进制可执行文件 scp到开发服务器上执行 before_script: - uname -a #查看系统信息 - whoami - go version - export GOPROXY=https://goproxy.io - export VERSION=$(git describe --tags --always) - export DHOST='felix@mojotv.cn' #设置环境变量 ssh 账号和host stages: - build - deploy buildBin: stage: build script: - pwd - ls -al - BRANCH=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD) - BTIME=$(date -u '+%Y-%m-%dT%I:%M:%S%p') - GHASH=$(git rev-parse HEAD) - go build -ldflags "-X main.Build=$BTIME -X main.Version=$GHASH" -o _build/csbrain.exe - _build/csbrain.exe -V - echo "开始推送到mojotv 服务器" - mv config.toml.test _build/config.toml - echo $DHOST - echo "-o StrictHostKeyChecking=no 不弹出known host 对话框" - sshpass -e ssh -o StrictHostKeyChecking=no $DHOST "cd /data/csbrain && sudo rm -rf *" # sshpass -e 帮助您把设置windows10-linux中 $SSHPASS 环境变量 输入密码ssh密码 - sshpass -e scp -o StrictHostKeyChecking=no -r _build/* $DHOST:/data/csbrain # sshpass -e 帮助您把设置windows10-linux中 $SSHPASS 环境变量 输入密码ssh密码 - echo "可执行文件已经上传到测试服务器" only: - develop - master - release - /^release/.*$/ - feature deployMojoTechServer: stage: deploy script: - echo '重启 supervisor csbrain.exe 部署服务器通过supervisor来启动golang可执行程序' - echo "-o StrictHostKeyChecking=no 不弹出known host 对话框" - sshpass -e ssh -o StrictHostKeyChecking=no $DHOST "sudo supervisorctl restart all || true" #重启supervisor - echo "测试API和显示Git hash 编译时间" - sleep 2 && curl http://cigitlab.mojotv.cn:8080/info #检查api服务的编译版本号 only: - develop - master - release - /^release/.*$/ - feature
运行效果
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句