使用 GitLab Runner 在另一台主机上执行命令

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

我是 CI/CD 世界的新手,目前正在学习。 这是我当前的设置:

  • 安装Windows 11
  • 包含一个名为“blog”的项目的文件夹(该文件夹代表开发文件夹)
  • 一个包含名为“blog1”的项目的文件夹(该文件夹代表无法写入的服务器,除非通过
    git pull
  • 一个正在工作的 GitLab Runner
  • gitlab-ci.yml(大部分内容来自gitlab教程)
build-job:
  stage: build
  script:
    - echo "Pulling changes"
    - cd C:\xampp\htdocs\blog1
    - git config --global --add safe.directory C:\xampp\htdocs\blog1
    - git pull origin main

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
  environment: production

该脚本工作正常,因为 GitLab Runner 和目标文件夹位于同一主机上, current setup working fine 但是如果目标文件夹位于不同的主机(假设另一台 Windows PC)上怎么办,如何在运行程序和目标文件夹位于不同主机上的情况下实现相同的功能?

我尝试通过 SSH 重现该功能。

  1. 使用 powershell 连接到 SSH
    ssh username@IPADDRESS
  2. 输入密码
  3. 将目录更改为目标文件夹
  4. git pull 到目标文件夹中

如何在构建脚本中实现它?理想情况下,我不需要 gitlab-ci.yml 文件上有任何密码。

谢谢你

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

这一切似乎有点不对劲:

  1. Runner 执行自己的 git pull。这会将文件放置在类似 的位置,这也是管道的工作目录。 这导致我们:

  2. 使用相对路径进行构建。因此,无论构建在哪个运行器上运行,它仍然会找到您的东西。这也使我们能够:

  3. 使用 Artefacts 这将打包选定的文件并允许它们在构建的不同阶段(例如部署步骤)使用参见此处。如果您手动部署,也可以从 Gitlab 下载它们。

  4. 如果目标计算机未运行...运行程序,您可以在部署期间使用 SSH/SFTP 将文件传输到目标。您不应将 ssh 密码写入 YML。 Gitlab 为此提供了Ci 变量

只有当您有真正的构建步骤时,这一切才完全有意义。 IE。生成新文件的一个。现在您可以直接跳到部署并通过 SFTP 将运行器工作目录中的文件推送到目标。

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