专栏首页喵君手记Docker安装Gitlab和Gitlab-Runner并实现项目的CICD

Docker安装Gitlab和Gitlab-Runner并实现项目的CICD

介绍如何在Linux系统使用Docker安装Gitlab、Gitlab-Runner并实现项目的CICD

一、安装Gitlab

1、拉取镜像并启动 由于服务器的80端口可能被占用,所以这里我们改成了其他端口来启动

docker run -d -p 2443:443 -p 5678:80 -p 2222:22 --name gitlab --restart always -v/srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /src/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce

2、修改配置文件 修改gitlab.yml文件

vim /src/gitlab/data/gitlab-rails/etc/gitlab.yml  

找到如下配置,修改host为你服务的IP或者域名(不能加http://),修改完毕后保存退出

修改gitlab.rb文件

vim /srv/gitlab/config/gitlab.rb  

找到external_url,默认是被注释的,要打开,并填写暴露出去的http://ip:port,IP一定要和gitlab.yml文件配置的相同,port为你启动时指定的,我们这里是5678,最后加上ssh协议下使用的IP和端口(这里的端口是你启动时指定的,我们这里是2222),最后保存并退出

停止并移除之前启动的gitlab

# 停止  
docker stop gitlab
# 移除
docker rm gitlab

重新启动gitlab 这里要将容器端口改为5678

docker run -d -p 2443:443 -p 5678:5678 -p 2222:22 --name gitlab --restart always -v/srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /src/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce

二、安装Gitlab-Runner

可以在某个项目里settings --> CICD --> Runner进行配置,也可以在GitLab主设置页安装共享Runner,安装方法都一致

1、拉取Runner镜像并启动

docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest  

2、进入Runner容器内

docker exec -it gitlab-runner bash

3、运行以下命令

gitlab-runner register

输入Gitlab实例的地址

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
http://xxx

输入token

Please enter the gitlab-ci token for this runner
xxx

输入Runner的描述

Please enter the gitlab-ci description for this runner
[hostname] my-runner

输入与Runner关联的标签

Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

输入Ruuner的执行者

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

如果上面执行者为docker,需要你在.gitlab-ci.yml中指定docker版本

Please enter the Docker image (eg. ruby:2.1):
alpine:latest

通过以上命令后,就可以在gitlab中查看到了这个刚刚创建的runner

4、修改Runner配置文件

vim /srv/gitlab-runner/config/config.toml

找到volumes配置,修改为如下,分别是挂载了宿主机的docker和配置Maven的缓存,提高效率

volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock","/data/.m2/:/.m2/"]

在volumes配置下方增加一行配置,防止Runner重复拉取镜像

pull_policy = "if-not-present"

重启Runner即可

docker restart gitlab-runner

三、创建SpringBoot项目测试CICD

.gitlab-ci.yml文件

1、在项目根目录创建个Dockerfile

FROM openjdk:8-jdk
COPY target/*.jar swarm-test.jar
EXPOSE 8000
ENTRYPOINT ["java","-jar","swarm-test.jar"]

2、项目根目录创建.gitlab-ci.yml文件

# 因为我们Runner执行器设置为docker, 所以这里需要指定docker的版本
image: docker:stable
# 定义三个阶段
stages:
  - compile
  - build
  - run
# 定义个变量, 指定maven下载的jar包存放的位置
variables:
  MAVEN_OPTS: "-Dmaven.repo.local=/.m2"
# 第一阶段
compile:
  # 打包用到了maven, 所有需要拉取maven镜像, 这是我自己构建的阿里云maven私服的maven镜像
  image: registry.cn-hangzhou.aliyuncs.com/gjing/maven:1.0
  # 指定阶段
  stage: compile
  # 运行脚本, 使用变量时要用到 $ 符号
  script:
    - mvn $MAVEN_OPTS clean package -Dmaven.test.skip=true
  # 只作用在master分支
  only:
    - master
  # 创建runner时指定的tag
  tags:
    - test
  # 编译后有产物,所以要指定下过期时间和路径, 以供于其他阶段使用
  artifacts:
    expire_in: 1 days
    paths:
      - target/*.jar
# 第二阶段, 这里不再一一介绍, 和第一阶段差不多
build:
  stage: build
  script:
    - docker build -t registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0 .
    - docker login --username xxx --password xxx registry.cn-hangzhou.aliyuncs.com
    - docker push registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0
  only:
    - master
  tags:
    - test
run:
  stage: run
  script:
    - docker run -d --name my-test -p 8000:8000 registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0
  only:
    - master
  tags:
    - test

3、将项目提交到Gitlab仓库即可

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mpvue框架下使用小程序云开发获取用户openid

    /static目录下创建目录funtions 在project.config.json文件下新增字段

    薛定喵君
  • git打tag

    tag可在之前的版本上打,需要知道某个提交对象的校验和的前几位数字(通过git log获取)

    薛定喵君
  • mpvue下小程序云开发实现余额提现订阅消息提醒

    博主最近做的小程序涉及到余额提现的功能,需要在提现过程中推送给用户相应类型的消息。下面介绍下实现的流程。

    薛定喵君
  • gitlab10代码备份

    使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份:

    用户2398817
  • 一键安装Gitlab后的备份、迁移与恢复

    GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用。

    一条老狗
  • 持续集成系列(I)——享玩Docker之GitLab

    Docker 自2013年以来非常火热,无论是从 github 上的代码活跃度,还是 Redhat 在 RHEL6.5 中集成对 Docker 的支持,就连 G...

    IT技术小咖
  • gitlab备份与恢复

    gitlab-rake gitlab:backup:create  #执行命令备份数据库

    似水的流年
  • Gitlab安装使用及汉化配置

    一、GitLab简介 GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设...

    shaonbean
  • Docker 方式安装 gitlab ( 阿里云ECS )

    我选择的是搜索出来的第一个镜像:docker.io/gitlab/gitlab-ce

    微风-- 轻许--
  • gitlab10服务器搭建

    GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

    用户2398817

扫码关注云+社区

领取腾讯云代金券