我是 CI/CD 世界的新手,目前正在学习。 这是我当前的设置:
git pull
)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 和目标文件夹位于同一主机上, 但是如果目标文件夹位于不同的主机(假设另一台 Windows PC)上怎么办,如何在运行程序和目标文件夹位于不同主机上的情况下实现相同的功能?
我尝试通过 SSH 重现该功能。
ssh username@IPADDRESS
如何在构建脚本中实现它?理想情况下,我不需要 gitlab-ci.yml 文件上有任何密码。
谢谢你
会
这一切似乎有点不对劲:
Runner 执行自己的 git pull。这会将文件放置在类似
使用相对路径进行构建。因此,无论构建在哪个运行器上运行,它仍然会找到您的东西。这也使我们能够:
使用 Artefacts 这将打包选定的文件并允许它们在构建的不同阶段(例如部署步骤)使用参见此处。如果您手动部署,也可以从 Gitlab 下载它们。
如果目标计算机未运行...运行程序,您可以在部署期间使用 SSH/SFTP 将文件传输到目标。您不应将 ssh 密码写入 YML。 Gitlab 为此提供了Ci 变量。
只有当您有真正的构建步骤时,这一切才完全有意义。 IE。生成新文件的一个。现在您可以直接跳到部署并通过 SFTP 将运行器工作目录中的文件推送到目标。