首页 > 解决方案 > 完成Gitlab流程删除容器

问题描述

我为在 redhat8 上运行的 GitLab(免费版)创建了一个客户 Podman 运行器。我有带有 2 个模块(客户端和服务器)的节点程序,我试图让客户端部分运行,这意味着创建图像并在 pod 中运行容器(lm-dev)图像和容器的创建以成功结束GitLab CI/CD。

GitLab 日志显示映像的构建已完成,并且 podman run 和其他命令都运行成功,但在完成该过程后,没有容器,也没有应该创建的 pod!我不明白为什么容器不知何故消失了,或者根本没有创建 mybe,尽管 GitLab 显示该过程是成功的。我的期望是在 lm-dev pod 中看到 lm-client-dev 容器。

在完成管道之前,创建的唯一容器是以下内容,这些容器在完成作业时会被删除:

root@mail ~]# podman ps -a
CONTAINER ID  IMAGE                                                                              
COMMAND               CREATED         STATUS                     PORTS       NAMES
20becf621320  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64- 
8925d9a0  gitlab-runner-bui...  2 minutes ago   Exited (0) 2 minutes ago               runner- 
xvb7r9ea-project-23-concurrent-0-7c8467ce3ac6d0a3-predefined-0
9d179591b645  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64- 
8925d9a0  gitlab-runner-bui...  2 minutes ago   Exited (0) 2 minutes ago               runner- 
xvb7r9ea-project-23-concurrent-0-7c8467ce3ac6d0a3-predefined-1
bb265fceb3e8  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64- 
8925d9a0  gitlab-runner-bui...  2 minutes ago   Exited (0) 2 minutes ago               runner- 
xvb7r9ea-project-23-concurrent-0-7c8467ce3ac6d0a3-predefined-2
9681b6701bf2  quay.io/podman/stable:latest                                                       
sh -c if [ -x /us...  2 minutes ago   Exited (0) 10 seconds ago              runner-xvb7r9ea- 
project-23-concurrent-0-7c8467ce3ac6d0a3-build-3
9c9f447ae78c  registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64- 
8925d9a0  
gitlab-runner-bui...  10 seconds ago  Up 9 seconds ago     

我的跑步者在服务器上创建如下:

gitlab-runner register --non-interactive 
--name "sdx-runner" --url "https://gitlab.mycompany.com/" 
--registration-token "jghfcZXXqZB-xJ-hfgL" --executor 
docker --docker-privileged=true --env "DOCKER_HOST=unix:///var/run/podman/podman.sock" 
--docker-image alpine:latest --docker-volumes 
"/run/podman/podman.sock:/var/run/podman/podman.sock" --tag-list "sdx-runner-pod"

我的 yml(这里省略了构建和测试):

stages:
- deploy

variables:
  GIT_SUBMODULE_STRATEGY: recursive

cache:
  paths:
    - client/node_modules/
    - server/node_modules/

 deploy:
   image: "podman"
   stage: deploy
   script:
    - cd client
    - podman build -t lm-client-dev .
    #- podman pod create --name lm-dev --publish 8443:80
    #- podman pod start lm-dev
    #- podman run -p 4250:80 -d lm-client-dev --pod=lm-dev
    - podman run -dt --pod new:lm-dev -p 4250:3000 lm-client-dev top
  tags:
    - sdx-runner-pod

我的 gitlab 跑步者:

[root@mail ~]# gitlab-runner -v
Version:      14.1.0
Git revision: 8925d9a0
Git branch:   14-1-stable
GO version:   go1.13.8
Built:        2021-07-20T11:43:26+0000
OS/Arch:      linux/amd64

我尝试构建和运行的客户端 Dockerfile,以便我可以从本地计算机连接到它:

FROM docker.io/library/node:16.6.1

WORKDIR /app

COPY package*.json ./
RUN npm install -g npm@7.20.6
COPY  . ./
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start"]

标签: gitlabgitlab-cigitlab-ci-runnerpodman

解决方案


我从 Docker in shell 更改了我的跑步者,可以实现我所需要的。


推荐阅读