Gitlab - CI/CD

131 阅读1分钟

git

  • 安装 git
  1. 安装相关依赖
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  1. 删除自身环境已有git
$ yum remove git
  1. 下载git的tar包,到/usr/local/src/ 目录下面
$ wget https://www.kernel.org/pub/software/scm/git/git-2.8.3.tar.gz
  1. 解压tar包
$ tar -zxvf git-2.8.3.tar.gz
  1. 编译
$ make prefix=/usr/local/git all
  1. 安装git至/usr/local/git路径
$ make prefix=/usr/local/git install
  1. 配置环境变量
$ vi /etc/profile 
	export PATH=$PATH:/usr/local/git/bin
$ source /etc/profile
  1. 测试
$ git --version

gitlab

  1. gitlab 镜像拉取
# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce
  1. 运行gitlab镜像
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
$ docker run \
	-d   \
	-p 443:443 \
	 -p 80:80  \
	-p 222:22  \
	--name gitlab  \
	--restart always \
	--privileged=true \
	-v /data/gitlab/config:/etc/gitlab  \
	-v /data/gitlab/logs:/var/log/gitlab  \
	-v /data/gitlab/data:/var/opt/gitlab  \
	gitlab/gitlab-ce
  1. 配置 - 修改gitlab.rb文件
$ vim /data/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.199.231'
 
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
:wq #保存配置文件并退出
  1. 重启gitlab容器
$ docker restart gitlab

gitlab-runner

# 注册
$ gitlab-runner register \
  --non-interactive \
  --url "http://124.223.169.205/" \
  --registration-token "GR1348941hpS4752YNP3HPrnTyPDy" \
  --executor "docker" \
  --docker-image maven:latest \
  --description wuyc-runner2 " \
  --tag-list "build,deploy" \
  --run-untagged \
  --locked="false"

.gitlab-ci.yml

stages:
- build
- package
# 构建 Job
build:
  stage: build
  tags:
  - build
  script:
  - echo "=============== 开始编译构建任务 ==============="
  - mvn compile
# 打包
package:
  stage: package
  tags:
  - build
  script:
  - echo "=============== 开始打包任务  ==============="
  - mvn package -Dmaven.test.skip=true
  - chmod a+x ./scripts/build/test.sh
  - ./scripts/build/test.sh
  - echo "=============== 执行结束 ==================="
stages:
- deploy

# deploy Job
deploy:
  stage: deploy
  tags: 
    - deploy
  script:
    - mvn clean package
    - sudo docker build . -t blast:latest
    - sudo docker stop blast_image || true
    - sudo docker rm blast_image || true
    - sudo docker run --name blast_image -p 8090:8090 -d blast:last

gitlab-runner 提示无权限问题

ps aux|grep gitlab-runner  #查看当前runner用户

sudo gitlab-runner uninstall  #删除gitlab-runner

gitlab-runner install --working-directory /home/gitlab-runner --user root   #安装并设置--user(例如我想设置为root)

sudo service gitlab-runner restart  #重启gitlab-runner

ps aux|grep gitlab-runner #再次执行会发现--user的用户名已经更换成root了