“无法找到包 git"运行 GitLab CI/CD 管道时 [英] "Unable to locate package git" when running GitLab CI/CD pipeline

查看:34
本文介绍了“无法找到包 git"运行 GitLab CI/CD 管道时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下 .gitlab-ci.yml 文件设置 GitLab CI/CD 管道:

I am trying to set up a GitLab CI/CD pipeline with this following .gitlab-ci.yml file:

stages:
  - test

image: "ros:foxy-ros-base-focal"

before_script:
  - apt-get -y update && apt-get install -y 
    git wget qt5-default 
    python3-osrf-pycommon 
    python3-catkin-tools 
    python3-rosdep 
    python3-vcstool 
    python3-pip 
    python3-colcon-common-extensions 
    apt-utils
  - rm -rf /var/lib/apt/lists/*
  - /bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash; colcon build"
  - echo "source /root/dev_ws/install/setup.bash" >> /opt/ros/${ROS_DISTRO}/setup.bash

test_a:
  stage: test
  script:
    - pip3 install pytest
    - python -m pytest test_utils.py -vv -s

我从 ROS2 Foxy Base Focal Docker 映像开始.然而,尽管运行了 apt-get update,我仍然找不到很多包,包括 git 以及其他几个 ROS2 包.完整日志在这里:

I am starting from the ROS2 Foxy Base Focal Docker image. However, despite running apt-get update, I still can't find many of the packages, including git as well as several other ROS2 packages. Full log here:

Running with gitlab-runner 13.8.0 (775dd39d)
  on docker-auto-scale fa6cab46
Preparing the "docker+machine" executor
00:27
Using Docker executor with image ros:foxy-ros-base-focal ...
Pulling docker image ros:foxy-ros-base-focal ...
Using docker image sha256:59cf2af10ce4181bf4effbc683375f5e201bfe072c808c75fb3ee903b98265b9 for ros:foxy-ros-base-focal with digest ros@sha256:4f924ff4fdee6b7c999ad6bc013741bdf8430466c7a27842ac6255255ce9ae66 ...
Preparing environment
00:02
Running on runner-fa6cab46-project-23977848-concurrent-0 via runner-fa6cab46-srm-1611897044-53c1946d...
Getting source from Git repository
00:02
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/imda_dsl/vama-2/scene-understanding/scene-understanding-manager/.git/
Created fresh repository.
Checking out fc385931 as dev...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:05
$ apt-get -y update && apt-get install -y  git wget qt5-default  python3-osrf-pycommon  python3-catkin-tools  python3-rosdep  python3-vcstool  python3-pip  python3-colcon-common-extensions  apt-utils
Get:1 http://packages.ros.org/ros2/ubuntu focal InRelease [4670 B]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Get:4 http://packages.ros.org/ros2/ubuntu focal/main amd64 Packages [451 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [161 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
Get:10 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [598 kB]
Get:11 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [659 kB]
Get:12 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [13.3 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:14 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1003 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [21.1 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [194 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [920 kB]
Get:19 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [4301 B]
Fetched 17.4 MB in 2s (7001 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package  git
E: Unable to locate package  python3-osrf-pycommon
E: Unable to locate package  python3-catkin-tools
E: Unable to locate package  python3-rosdep
E: Unable to locate package  python3-vcstool
E: Unable to locate package  python3-pip
E: Unable to locate package  python3-colcon-common-extensions
E: Unable to locate package  apt-utils
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1

推荐答案

在你的 .gitlab-ci.yml 中安装包甚至运行更新命令通常违反 CI/CD 容器的最佳实践因为每个运行的作业都必须做同样的事情,当你运行更多的管道时会花费很多时间.如果您找不到包含所需软件包的现有 Docker 映像(例如,python3 和 git),您可以创建自己的映像.如果您需要扩展作业中的映像,ros:foxy-ros-base-focal,请创建一个 Dockerfile 文件,其中包含以下内容:

Installing packages or even running update commands in your .gitlab-ci.yml is generally against best practices for a CI/CD container because each and every job that runs will have to do the same thing, costing a lot of time as you run more pipelines. If you can't find an existing Docker image that has the packages you need (so as an example, python3 and git), you can create your own images. If you need to extend the image from your job, ros:foxy-ros-base-focal, create a Dockerfile file with the following contents:

FROM ros:foxy-ros-base-focal
MAINTAINER your name "your email"
RUN apt-get update -yqq
RUN apt-get install -yqq git

您也可以在那里安装/配置您需要做的任何其他事情,然后在您完成构建映像后:

You can install/configure whatever else you need to do in there too, then when you're done build the image:

docker build/path/to/dir-with-dockerfile -t tagname:version

构建完成后,您可以使用 docker images 验证标签是否正确,然后您可以将其推送到注册表(docker hub、gitlab 的注册表(如果已启用)、私有注册表等):

Once the build is done you can verify the tag is correct with docker images, then you can push it to a registry (docker hub, gitlab's registry if enabled, private registry, etc) with:

docker login my.hub.example.com

docker push my.hub.example.com/tagname:version

然后在您的 .gitlab-ci.yml 文件中,您可以在工作中使用 tagname:version 图像:

Then in your .gitlab-ci.yml file, you can use the tagname:version image in your jobs:

stages:
  - test

image: "tagname:version"
...

如果您必须通过身份验证才能使用您的注册表,则必须在此处查看文档 https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-an-image-from-a-private-container-registry,在管道中使用 docker 镜像的一般文档在这里:https://docs.gitlab.com/ee/ci/docker/using_docker_images.html

If you have to auth to use your registry, you'll have to review the docs here https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#define-an-image-from-a-private-container-registry, and the general docs for using docker images in your pipelines is here: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html

这篇关于“无法找到包 git"运行 GitLab CI/CD 管道时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆