我的Docker Run崩溃在我的Gitlab CI的测试阶段

发布于 2025-01-19 15:12:29 字数 2395 浏览 3 评论 0原文

所以我对整个 CI 主题相当陌生,我尝试在管道中的合并请求之后运行测试。除了当我的命令尝试运行容器时出现错误。 这是我的 gitlab-ci 文件

image: docker:18

variables:
  REPO_URL: "registry.gitlab.com/xxxxx/xxxxxxx"
  PROD_SRV: "xxx"
  DEV_SRV: "xxx"

services:
  - docker:dind

stages:
  - build jar
  - build docker image
  - tests
  

maven-build:
  only:
    - work
    - test
  image: maven:3-jdk-8
  stage: build jar
  script: "mvn -Dmaven.test.skip=true package -B"
  artifacts:
    paths:
      - target/*.jar
    expire_in: 7 days

docker build:
  stage: build docker image
  only:
    - work
    - test
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER"  "$CI_REGISTRY" --password-stdin
    - chmod a+x ./mvnw
  script:
    - docker info
    - docker build -t $REPO_URL:$CI_COMMIT_SHA .
    - docker images
    - docker push $REPO_URL:$CI_COMMIT_SHA

  after_script:
    - docker logout registry.gitlab.com 2>/dev/null
    - rm /root/.docker/config.json 2>/dev/null


tests job branch test:
  stage: tests
  only:
    - test
  variables:
    GIT_STRATEGY: none
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER"  "$CI_REGISTRY" --password-stdin
  script:
    - docker pull $REPO_URL:$CI_COMMIT_SHA
    - docker run -t $REPO_URL:$CI_COMMIT_SHA .
    - docker push $REPO_URL:$CI_COMMIT_SHA
  after_script:
    - docker logout registry.gitlab.com 2>/dev/null
    - rm /root/.docker/config.json 2>/dev/null

,这是我的 dockerfile

# syntax=docker/dockerfile:1

FROM openjdk:16-alpine3.13 as base

WORKDIR /amsn-counter

COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN ./mvnw dependency:go-offline
COPY src ./src

FROM base as test
RUN ["./mvnw", "test"]

FROM base as development
CMD ["./mvnw", "spring-boot:run", "-Dspring-boot.run.profiles=mysql", "-Dspring-boot.run.jvmArguments='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000'"]

FROM base as build
RUN  ./mvnw package

FROM openjdk:11-jre-slim as production
EXPOSE 8080

ADD /target/linkedin-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

以及管道中的错误: 以及管道中的错误

如果您需要任何精度,我会很乐意回答,就像我说的,我是新人,所以不要如果文件中或我的描述中有什么奇怪的地方,请毫不犹豫地指出

编辑:我的分支名为 {work}(本地分支)和 {test}

So i am quite new to the whole CI topic and im trying to run tests after my merge request in my pipeline. Except that when my command try to run the container i have an error.
So this is my gitlab-ci file

image: docker:18

variables:
  REPO_URL: "registry.gitlab.com/xxxxx/xxxxxxx"
  PROD_SRV: "xxx"
  DEV_SRV: "xxx"

services:
  - docker:dind

stages:
  - build jar
  - build docker image
  - tests
  

maven-build:
  only:
    - work
    - test
  image: maven:3-jdk-8
  stage: build jar
  script: "mvn -Dmaven.test.skip=true package -B"
  artifacts:
    paths:
      - target/*.jar
    expire_in: 7 days

docker build:
  stage: build docker image
  only:
    - work
    - test
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER"  "$CI_REGISTRY" --password-stdin
    - chmod a+x ./mvnw
  script:
    - docker info
    - docker build -t $REPO_URL:$CI_COMMIT_SHA .
    - docker images
    - docker push $REPO_URL:$CI_COMMIT_SHA

  after_script:
    - docker logout registry.gitlab.com 2>/dev/null
    - rm /root/.docker/config.json 2>/dev/null


tests job branch test:
  stage: tests
  only:
    - test
  variables:
    GIT_STRATEGY: none
  before_script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER"  "$CI_REGISTRY" --password-stdin
  script:
    - docker pull $REPO_URL:$CI_COMMIT_SHA
    - docker run -t $REPO_URL:$CI_COMMIT_SHA .
    - docker push $REPO_URL:$CI_COMMIT_SHA
  after_script:
    - docker logout registry.gitlab.com 2>/dev/null
    - rm /root/.docker/config.json 2>/dev/null

and this is my dockerfile

# syntax=docker/dockerfile:1

FROM openjdk:16-alpine3.13 as base

WORKDIR /amsn-counter

COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN ./mvnw dependency:go-offline
COPY src ./src

FROM base as test
RUN ["./mvnw", "test"]

FROM base as development
CMD ["./mvnw", "spring-boot:run", "-Dspring-boot.run.profiles=mysql", "-Dspring-boot.run.jvmArguments='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000'"]

FROM base as build
RUN  ./mvnw package

FROM openjdk:11-jre-slim as production
EXPOSE 8080

ADD /target/linkedin-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

and the error in the pipeline as well:
and the error in the pipeline as well

If you need any precision i will gladly answer, and like i said im new so don't hesitate to point if something is weird in the files or in my description in general

Edit: My branch are named {work}(local branch) and {test}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我一向站在原地 2025-01-26 15:12:29

运行 docker build 时似乎没有指定目标。试试这个:

script:
  - docker info
  - image_name="$REPO_URL:$CI_COMMIT_SHA"
  - docker build
      --target test
      --tag $image_name
      .
  - docker push $image_name

It looks as if there is no target specified when you are running docker build. Try this:

script:
  - docker info
  - image_name="$REPO_URL:$CI_COMMIT_SHA"
  - docker build
      --target test
      --tag $image_name
      .
  - docker push $image_name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文