Gitlab-CI 发布SpringBoot应用到docker

一、使用gitlab-ci

1.编写springboot应用。

目录结构如下

2.编写Dockerfile文件,我这里写得比较简单

FROM primetoninc/jdk:1.8
MAINTAINER   axiba@qq.com
ADD target/ci-docker.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

3.编写.gitlab-ci.yml文件

variables:
  CI_DOCKER_CONTAINER: "ci-docker"
  CI_DOCKER_IMAGE: "ci-docker-image"
  CI_DOCKER_NAME: "ci-docker"
  CI_DOCKER_PORT: 8080
stages:
  - test
  - build
  - deploy
  - scanner

test:job:
  stage: test
  script:
    - echo "test job start"

build:job:
  image: maven:3.3.9-jdk-8
  stage: build
  script:
    - echo "build job start"
    - mvn clean package -Dmaven.test.skip=true
    - echo "install success"
  artifacts:
    paths:
      - target/ci-docker.jar
    when: on_success
  only:
    - master
  tags:
    - ifun-docker

deploy:job:
  image: docker:latest
  stage: deploy
  script:
    - echo "deploy job start"
    - docker ps -a|grep $CI_DOCKER_CONTAINER &&  docker stop $CI_DOCKER_CONTAINER && docker rm $CI_DOCKER_CONTAINER || echo "not exist"
    - docker images |grep  $CI_DOCKER_IMAGE && docker rmi -f $CI_DOCKER_IMAGE || echo  "not exist"
    - docker build -t $CI_DOCKER_IMAGE  .
    - docker run -d -p 80:$CI_DOCKER_PORT --name=$CI_DOCKER_NAME $CI_DOCKER_IMAGE
  only:
    - master
  tags:
    - ifun-docker

scanner:job:
  stage: scanner
  script:
    - echo "代码扫描"
    - mvn sonar:sonar -Dsonar.projectKey=ci-docker -Dsonar.host.url=http://192.168.80.10:9000 -Dsonar.login=3c4da7f061cae0c07b5f1a73f9e17b42cf0b6512
  only:
    - master
  tags:
    - ifun-docker

简单解释一下,分为了三个阶段,test、build、deploy、scanner

test中简单的打印了一下;build阶段使用maven打包,并将jar包上传到artifacts中;deploy阶段先删除容器,再删除镜像,然后创建镜像,运行容器。scanner阶段是代码扫描阶段,可以不用写。

4.docker 容器运行结果

5.测试请求是否成功。

6.代码扫描结果

二、问题汇总

1.mvn command not found

这是你的gitlab-runner所在的服务器中没有安装maven,需要安装。

2.no main manifest attribute, in app.jar,这是没有指定mainclass,需要在pom.xml中指定

    <build>
        <finalName>ci-docker</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.3.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.it.fun.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

3.Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

这是权限不足,我们gitlab-runner运行的时候默认的是gitlab-runner用户,他是没有docker权限的。

# 添加docker用户组和docker用户,并将用户添加到组中
groupadd -r docker
useradd -g docker -r docker -p 'password here'
# 然后将gitlab-runner添加到docker组中
usermod -aG docker gitlab-runner
# 最后将docker服务停止,切换到docker用户再重新启动服务,gitlab-runner用户就和docker用户组一样有rw权限
service docker stop
su docker
sudo service docker start

4.如果一个job一直pending状态,没有runner来执行,解决方法有两种:

1> 绑定tags

2> 修改任意一个runner,让他可以运行没有绑定tags的任务。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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 CI的Docker容器中成功使用Chrome进行相关的测试或操作了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值