gitlab-ci docker maven 自动化流水线部署 springboot多模块项目

一、准备

首先 需要两台服务器(这里为了下面方便理解,我们约定这两台服务器地址、名称和系统)
1、gitlab 服务器 服务器A(地址10.10.10.7)(内存大于4g不然会一直死)( CentOS Linux 7 (Core))
2、springboot服务部署服务器 服务器B(地址10.10.10.8)( CentOS Linux 7 (Core))

二、配置gitlab服务器

这个比较简单,或者可以直接用官方的gitlab应该都是可以的
参考 https://www.jianshu.com/p/7e6ea273833d

添加yum源

cat> /etc/yum.repos.d/gitlab-ce.repo<< EOF
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/  
gpgcheck=0
enabled=1
EOF

安装依赖包

yum install curl policycoreutils-python openssh-server

安装

yum makecache    #清楚缓存
yum install gitlab-ce

更改访问地址

vim /etc/gitlab/gitlab.rb
external_url 'http://10.10.10.7:9001'

重新加载配置,启动gitlab-ce

[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl start 

之后就可以直接打开上面的url http://10.10.10.7:9001 开始访问了,然后就是修改密码,创建项目等等了,在此不赘述了(开的哪个端口别忘记打开防火墙)

三、安装gitlab-runner、并注册

gitlab-runner是安装在你的应用服务器上帮你完成自动化部署的一个工具
我是基于docker安装的所以首先服务器上要有docker,这里就不写了,因为有脚本了很简单 参考 https://cloud.tencent.com/developer/article/2061665

用docker的话可以用一个非常好用的图形化管理工具Portainer,是docker官方的,安装非常简单 两步走
(参考 https://blog.csdn.net/asenseof/article/details/107895383)

docker pull portainer/portainer
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/docker/portainer:/data portainer/portainer

然后访问服务器地址+上面映射的端口号了http://10.10.10.8:9000,就可以了
开始安装runner

也是非常简单
1、拉取镜像,启动容器

sudo docker pull gitlab/gitlab-runner
sudo 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、进入容器

sudo docker exec -it gitlab-runner bash

3、注册runner
首先输入下面的命令开始注册

gitlab-runner register

输入Gitlab实例的地址
地址是你手动设置Runner区域里面的URL

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

输入token
token是你手动设置Runner区域里面的令牌

> Please enter the gitlab-ci token for this runner
xxx

输入Runner的描述

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

输入与Runner关联的标签
标签是为了让后期在CI脚本中指定选择某个或者多个Runner

> Please enter the gitlab-ci tags for this runner (comma separated):
test

输入Runner的执行器
由于我们都是基于Docker,所以这里选择执行器为Docker

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

设置执行器的版本

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

退出容器

exit

通过以上命令后,就创建成功runner啦,这时候我们去GitLab中我们创建Runner的区域刷新就能看到了

3、修改Runner配置文件

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

找到volumes配置,修改结果为如下,分别是挂载了宿主机docker的sock文件和Maven的缓存,减少拉取Jar包的时间消耗,其中
"/home/gitlab-runner/.m2:/root/.m2"这块为Maven的Jar包存放地址,左边为宿主机目录,右边为容器内的Jar包存储路径,这个需要根据自己使用的Maven镜像而定,在volumes配置下方增加一行配置,防止Runner重复拉取镜像

pull_policy = "if-not-present"
volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock", "/home/gitlab-runner/.m2:/root/.m2"]

这个目录后面写ci文件的时候我们会讲到
最后重启Runner

docker restart gitlab-runner

四、编写.gitlab-ci.yml、docker文件

1、.gitlab-ci.yml文件的编写
.gitlab-ci.yml是在git的root目录下面的一个脚本文件,用来执行自动化部署的
在这里插入图片描述
这里放个例子

image: docker:stable
variables:
  TAG: root/app:v0.1
  MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository"
cache:
  key: dockerlayer-ci-cache
  paths:
    - .m2/repository
    - /dafeng-official/target/*.jar


stages:
  - package
  - deploy
maven-package:
  image: maven:3.5-jdk-8-alpine
  stage: package
  tags:
    - build_docker
  script:
    - mvn clean package -Dmaven.test.skip=true $MAVEN_OPTS --settings=/root/.m2/settings.xml
  cache:
    key: dockerlayer-ci-cache
    paths:
      - dafeng-official/target/official.jar

  only:
    - main
build-master:
  stage: deploy
  tags:
    - deploy_docker
  cache:
    key: dockerlayer-ci-cache
    paths:
      - .m2/repository/
      - dafeng-official/target/*.jar
  script:
    - cd dafeng-official
    - docker build -t $TAG .
    - docker rm -f ohmy || true
    - docker run -d --name ohmy -p 2200:2200 $TAG
  only:
    - main

这里注意我是用了自己的maven仓库和配置文件,这里要自己配置一下在自己的宿主机上面新建文件夹home->gitlab-runner->.m2 创建如下文件
在这里插入图片描述
2、docker文件的编写
我用来测试的这个项目使用了springboot 多模块的方式编写的
我的dockerfile 写在了子模块的根目录下
在这里插入图片描述
然后我的dockerfile内容为

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/official.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

五、测试使用

然后基本上就是提交代码到dev 合并到main分支上,触发流水线
在这里插入图片描述
显示上面的样式就是完成了

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 GitLab CI 中使用 Docker 时,可以在 .gitlab-ci.yml 文件中使用 chrome。这需要在 Dockerfile 中安装 chrome 浏览器和 chromedriver,并在 .gitlab-ci.yml 文件中配置启动 chrome 和 chromedriver。具体步骤如下: 1. 在 Dockerfile 中安装 chrome 浏览器和 chromedriver,可以使用以下命令: ``` RUN apt-get update && apt-get install -y google-chrome-stable RUN wget https://chromedriver.storage.googleapis.com/78.0.3904.70/chromedriver_linux64.zip RUN unzip chromedriver_linux64.zip -d /usr/bin/ ``` 2. 在 .gitlab-ci.yml 文件中配置启动 chrome 和 chromedriver。 ``` services: - chrome:latest before_script: - export CHROME_BIN=/usr/bin/google-chrome - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start ``` 3. 在你的测试代码中配置使用chrome ``` from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.binary_location = os.environ.get("CHROME_BIN") chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--remote-debugging-port=9222") chrome_options.add_argument("start-maximized") chrome_options.add_argument("disable-infobars") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-browser-side-navigation") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--remote-debugging-port=9222") chrome_options.add_argument("--disable-setuid-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-infobars") chrome_options.add_argument("--disable-extensions") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--disable-gpu-sandbox") chrome_options.add_argument("--disable- ### 回答2: 在gitlab-cidocker环境中使用chrome可以通过以下步骤实现: 1. 首先,在.gitlab-ci.yml文件中定义一个新的job,这个job将用来运行chrome。 ``` yml chrome_test: image: selenium/standalone-chrome script: - # 添加运行chrome的命令 ``` 2. 在上述job中使用selenium/standalone-chrome镜像作为基础镜像。这个镜像已经预装了chrome浏览器。 3. 在script脚本中可以添加需要运行的chrome命令。 ```yml chrome_test: image: selenium/standalone-chrome script: - google-chrome-stable --version - # 添加其他需要运行的chrome命令 ``` 上述脚本中的google-chrome-stable --version是一个示例命令,用于显示chrome浏览器的版本信息。你可以根据需要添加其他需要运行的chrome命令。 4. 确保在.gitlab-ci.yml文件中定义的job在pipeline中被执行。 通过以上步骤,就可以在gitlab-cidocker环境中使用chrome浏览器了。你可以在script脚本中运行各种需要使用chrome的测试或其他命令。注意,由于使用的是selenium/standalone-chrome镜像,因此脚本中的命令需要以google-chrome-stable开头。 ### 回答3: 要在GitLab CI中的Docker容器中使用Chrome,需要按照以下步骤进行配置: 1. 在.gitlab-ci.yml文件中的job中定义Docker镜像,选择一个已包含Chrome的镜像,例如google/chrome。 示例: ``` image: google/chrome jobs: test: script: - chrome --version # 做一些其他的测试操作 ``` 2. 在Docker镜像中安装Chrome,可以通过在Dockerfile中使用apt-get命令或者直接使用chrome的Docker镜像。 Dockerfile示例: ```Dockerfile FROM ubuntu # 安装Chrome RUN apt-get update && apt-get -y install wget gnupg RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - RUN echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list RUN apt-get -y update RUN apt-get install -y google-chrome-stable # 可以进行其他的Docker镜像配置操作 CMD ["/bin/bash"] ``` 3. 在job的脚本中使用Chrome命令,运行相关的测试或操作。 示例: ```shell script: - google-chrome-stable --version - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://your-website.com # 其他的测试或操作命令 ``` 通过以上步骤,你就可以在GitLab CIDocker容器中成功使用Chrome进行相关的测试或操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值