Gitlab CI/CD shell 执行器读取文件/运行 python 脚本

问题描述 投票:0回答:1

我最近接触了 Gitlab CI/CD,目前正在学习如何优化我们的开发的不同方法。

我们正在研究各种嵌入式软件项目(对各种 MCU 进行编程)。

每次我们准备好执行发布时,我们都希望运行自动化的硬件级别测试(切换 GPIO 引脚、向设备发送一些串行命令等)。为此,我们有自己的 Python 工具,并且可以使用命令行运行它。

为了自动化此过程,我设置了一个简单的 Raspberry PI 4(安装了 gitlab-runner,并为我的 gitlab 项目设置了 shell 执行器)。跑步者配置:

concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Raspberry PI TestTool runner"
  url = "https://xxx-gitlab=xxxxxxx.lt/"
  id = 12
  token = "XXXXXXXXXXXXXXXX"
  token_obtained_at = 2024-01-02T07:51:55Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  shell = "bash"

我的管道如下:

# List of stages for jobs, and their order of execution
stages:
  - test

test-job1:
  stage: test
  script:
    - echo "This job tests something"
    - ls -l
    - cd ~
    - ls -l
    - cat Desktop/test.txt

正如您从上面的管道中看到的,我当前要做的就是阅读

test.txt
文档中的文本。

我可以轻松地在 Raspberry PI 上做到这一点:

lukas@raspberrypi:/etc $ cd ~
lukas@raspberrypi:~ $ cat Desktop/test.txt
hello123

但是当尝试运行作业时,它失败了:

Running with gitlab-runner 16.7.0 (102c81ba)
  on Raspberry PI TestTool runner htiDWYJ2, system ID: s_0ae6b2582ae5
Preparing the "shell" executor
00:00
Using Shell (bash) executor...
Preparing environment
00:01
Running on raspberrypi...
Getting source from Git repository
00:01
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in /home/gitlab-runner/builds/htiDWYJ2/0/embeded-programmers/gitchangelog-test/.git/
Checking out 7f12264a as detached HEAD (ref is main)...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:00
$ echo "This job tests something"
This job tests something
$ ls -l
total 120
drwxr-xr-x 8 gitlab-runner gitlab-runner  4096 Jan  2 08:13 build
-rw-r--r-- 1 gitlab-runner gitlab-runner   235 Jan  2 08:13 CMakeLists.txt
drwxr-xr-x 2 gitlab-runner gitlab-runner  4096 Jan  2 08:22 main
-rw-r--r-- 1 gitlab-runner gitlab-runner  2921 Jan  2 08:13 Readme.md
-rw-r--r-- 1 gitlab-runner gitlab-runner     2 Jan  2 08:13 release_notes.md
-rw-r--r-- 1 gitlab-runner gitlab-runner 48870 Jan  2 08:13 sdkconfig
-rw-r--r-- 1 gitlab-runner gitlab-runner     0 Jan  2 08:13 sdkconfig.ci
-rw-r--r-- 1 gitlab-runner gitlab-runner 48870 Jan  2 08:13 sdkconfig.old
-rw-r--r-- 1 gitlab-runner gitlab-runner  1325 Jan  2 08:13 working_ci_scripts.txt
$ cd ~
$ ls -l
total 4
drwxr-xr-x 3 gitlab-runner gitlab-runner 4096 Jan  2 08:13 builds
$ cat Desktop/test.txt
cat: Desktop/test.txt: No such file or directory
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit status 1

也许我完全误解了

shell
执行器的工作原理?我无法通过 CI/CD 管道访问 gitlab-runner (Raspberry PI 4) 上的所有文件吗?事实上,这个运行程序甚至不需要克隆 Gitlab 存储库,因为它不需要构建任何东西。它只需要执行一些脚本并读取位于 Raspberry PI 4 上的一些文件。

如果我想要做的事情无法使用

shell
执行器实现,那么允许通过 CI/CD 管道在 gitlab-runner 上读取文件/执行 python 脚本的替代方法是什么?

gitlab gitlab-ci gitlab-ci-runner
1个回答
0
投票

gitlab-runner 与 lukas 不是同一用户。 lukas ~/ 与 gitlab-runner ~/ 不同 您可以尝试使用 pwd 命令来本地化并在文件系统中查找您的文件。 像去 /user/lukas/Desktop/test.txt 这样的东西应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.