gpt4 book ai didi

gitlab-runner : Add ssh key when executing locally

转载 作者:行者123 更新时间:2023-12-05 08:11:50 31 4
gpt4 key购买 nike

我正在尝试通过 docker 执行器在本地运行 ci 管道以进行调试,方法是运行:

gitlab-runner exec docker <job_name>

在某个时间点,它需要克隆一个私有(private)的 git 仓库。

我使用的是典型的 recipe由 gitlab 推荐。

variables:
MY_PRIVATE_KEY: <my_private_key>

before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$MY_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

但是,当尝试将 key 添加到代理时:

$ ssh-add <(echo "$MY_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: Running after script...
ERROR: Job failed: exit code 1
FATAL: exit code 1

我确定我的 key 上没有密码...

最佳答案

我不太了解如何在本地调试 git ci。就我个人而言,我并不需要它,如果它是关于 ssh 和它的 key ,那也没有多大帮助,因为 key 的处理方式不同。

注意两件事:

  1. 不要将您的私钥存储在 gitlab 存储库中(作为文件)。不要将它放入 ci 脚本中。使用 gitlab 功能:屏蔽变量:https://docs.gitlab.com/ee/ci/variables
  2. 您可能会在存储私钥时遇到一些问题,因为 gitlab 对变量格式有一定的限制。一种可行的解决方案是将密码设为 base64。查看此问题以了解相关信息:GITLAB CI Error loading key "/dev/fd/63": invalid format ERROR: Job failed: exit code 1

你的 .gitlab.yml 可能看起来像这样。根据您使用的图像,您必须安装 ssh-agent(before_script 部分的第一行)。

deploy:
image: ubuntu:latest
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
script:
- ssh -t user@host "remote command && other command on remote"

$SSH_PRIVATE_KEY 在此脚本中定义,而是作为屏蔽变量定义的。参见 GitLab CI/CD environment variables

关于gitlab-runner : Add ssh key when executing locally,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277160/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com