简体   繁体   English

如何为docker shell gitlab runner安装maven

[英]How to install maven for a docker shell gitlab runner

(Please note i'm a total beginner in all Docker and CI in general) (请注意我在所有Docker和CI中都是初学者)

I am trying to set up a simple CI environment with GitLab. 我正在尝试使用GitLab设置一个简单的CI环境。 I'm using a local GitLab runner which is configured to build and test in Docker. 我正在使用一个本地GitLab运行器,它配置为在Docker中构建和测试。 In registering the runner I chose the 'shell' option. 在注册跑步者时,我选择了'shell'选项。 This installation succeeded. 这个安装成功了。

After pushing my code I got an email saying 'build failed'. 推送我的代码后,我收到一封电子邮件,说“构建失败”。 In the build log I found the following: 在构建日志中,我发现了以下内容:

  on desktop-docker-runner cDD_yf4V
Using Shell executor...
Running on b567d1ba4654...
DEPRECATION: this GitLab server doesn't support refspecs, gitlab-runner 12.0 will no longer work with this version of GitLab
Fetching changes...
Checking out fd20ca86 as dev...
Skipping object checkout, Git LFS is not installed.

Skipping Git submodules setup
Checking cache for default...
Runtime platform                                    arch=amd64 os=linux pid=722 revision=1f513601 version=11.10.1
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted. 
Successfully extracted cache
$ mvn $MAVEN_CLI_OPTS test-compile
bash: line 74: mvn: command not found
ERROR: Job failed: exit status 1

How can I add Maven to resolve this? 如何添加Maven来解决这个问题?

(EDIT: added gitlab-ci.yml file) (编辑:添加了gitlab-ci.yml文件)

# Build JAVA applications using Apache Maven (http://maven.apache.org)
# For docker image tags see https://hub.docker.com/_/maven/
#
# For general lifecycle information see https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
#
# This template will build and test your projects as well as create the documentation.
#
# * Caches downloaded dependencies and plugins between invocation.
# * Verify but don't deploy merge requests.
# * Deploy built artifacts from master branch only.
# * Shows how to use multiple jobs in test stage for verifying functionality
#   with multiple JDKs.
# * Uses site:stage to collect the documentation for multi-module projects.
# * Publishes the documentation for `master` branch.

variables:
  # This will suppress any download for dependencies and plugins or upload messages which would clutter the console log.
  # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used
  # when running from the command line.
  # `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins.
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"

# Cache downloaded dependencies and plugins between builds.
# To keep cache across branches add 'key: "$CI_JOB_NAME"'
cache:
  paths:
    - .m2/repository

# This will only validate and compile stuff and run e.g. maven-enforcer-plugin.
# Because some enforcer rules might check dependency convergence and class duplications
# we use `test-compile` here instead of `validate`, so the correct classpath is picked up.
.validate: &validate
  stage: build
  script:
    - 'mvn $MAVEN_CLI_OPTS test-compile'

# For merge requests do not `deploy` but only run `verify`.
# See https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
.verify: &verify
  stage: test
  script:
    - 'mvn $MAVEN_CLI_OPTS verify site site:stage'
  except:
    - master

# Validate merge requests using JDK7
validate:jdk7:
  <<: *validate
  image: maven:3.3.9-jdk-7

# Validate merge requests using JDK8
validate:jdk8:
  <<: *validate
  image: maven:3.3.9-jdk-8

# Verify merge requests using JDK7
verify:jdk7:
  <<: *verify
  image: maven:3.3.9-jdk-7

# Verify merge requests using JDK8
verify:jdk8:
  <<: *verify
  image: maven:3.3.9-jdk-8

# For `master` branch run `mvn deploy` automatically.
# Here you need to decide whether you want to use JDK7 or 8.
# To get this working you need to define a volume while configuring your gitlab-ci-multi-runner.
# Mount your `settings.xml` as `/root/.m2/settings.xml` which holds your secrets.
# See https://maven.apache.org/settings.html
deploy:jdk8:
  # Use stage test here, so the pages job may later pickup the created site.
  stage: test
  script:
    - 'mvn $MAVEN_CLI_OPTS deploy site site:stage'
  only:
    - master
  # Archive up the built documentation site.
  artifacts:
    paths:
    - target/staging
  image: maven:3.3.9-jdk-8

pages:
  image: busybox:latest
  stage: deploy
  script:
    # Because Maven appends the artifactId automatically to the staging path if you did define a parent pom,
    # you might need to use `mv target/staging/YOUR_ARTIFACT_ID public` instead.
    - mv target/staging public
  dependencies:
    - deploy:jdk8
  artifacts:
    paths:
    - public
  only:
    - master

I'm using a local GitLab runner which is configured to build and test in Docker. 我正在使用一个本地GitLab运行器,它配置为在Docker中构建和测试。 In registering the runner I chose the 'shell' option 在注册跑步者时,我选择了'shell'选项

From the sounds of it, you have registered the gitlab-runner incorrectly for the mode you are after. 从它的声音,你已经错误地注册了gitlab-runner的模式。 You said you want to use a runner to build and test in Docker, however you have registered the runner in shell mode. 你说你想在Docker中使用跑步者来构建和测试,但是你已经在shell模式下注册了跑步者。

To use the runner in Docker, follow the instructions set in the documentation . 要在Docker中使用跑步者,请按照文档中的说明进行操作 Make sure to set the runner executor to Docker when registering . 确保在注册时将runner执行器设置为Docker。

You'd also ideally remove the shell runner you have created. 您还可以理想地删除您创建的shell运行器。

If you have issues registering the runner, see this answer , which may also help with setting up your environment. 如果您在注册跑步者时遇到问题,请参阅此答案 ,这可能也有助于您设置环境。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM