我正在尝试添加 bitbucket 管道以将我的角度应用程序部署到我们的一台服务器。
我在服务器上配置了 SSH,我可以在 Bitbucket 中的已知主机下获取主机的指纹
下面是我的 YAML 文件。
image: node:14
pipelines:
branches:
master:
- step:
name: Building Test angular application
caches:
- node
script:
- echo "npm install in progress.."
- npm install
- echo "Installing angular/cli..."
- npm install -g @angular/cli
- echo "Starting the Build process.."
- ng build
artifacts:
- dist/** # Save build for next steps
- step:
name: "Deployment"
script:
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: '/c/testscp/'
LOCAL_PATH: 'dist/*'
SSH_KEY: $MY_SSH_KEY
第一步运行良好,没有任何问题,我可以看到 dist 文件夹被添加到工件中,但是第二步失败并出现以下错误。
scp -rp -i /opt/atlassian/pipelines/agent/ssh/id_rsa_tmp dist/TestPipelineApplication <<USER>>@<<SERVERIP>>:/c/testscp/
Warning: Identity file /opt/atlassian/pipelines/agent/ssh/id_rsa_tmp not accessible: No such file or directory.
Load key "/root/.ssh/pipelines_id": invalid format
Permission denied, please try again.
Permission denied, please try again.
<<USER>>@<<SERVERIP>>: Permission denied (publickey,password,keyboard-interactive).
我以前从未配置过管道,所以我不完全确定我在这里缺少什么。
另外,我查看了以下文档,但没有运气
https://bitbucket.org/atlassian/scp-deploy/src/1.0.1/README.md
非常感谢任何帮助或建议。
我知道这个问题已经很老了,但我希望当我将相同的错误消息复制到 Google 时,这可以帮助任何与我处于相同位置的人:
我遇到了完全相同的问题,不幸的是,由于有关管道及其配置的文档非常混乱,这需要大量的试验和错误。
首先要做的事情之一就是简化 YAML 脚本:
- step:
name: Deployment
script:
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: $USER
SERVER: $SERVER
REMOTE_PATH: '/c/testscp/'
LOCAL_PATH: 'dist/*'
您不需要在 YAML 本身中链接 SSH,而是在存储库的设置中链接。
为此,您需要在 存储库设置/管道/SSH 密钥
中生成 SSH 密钥对这是我感到非常困惑的地方,因为我试图使用我生成的相同密钥对来访问我的主机,事实证明这很难配置。我发现 Manuel Bosi here 写了一篇非常有用的文章,这篇文章非常容易理解,基本上让我知道了拥有密钥对和识别我的主机服务器的存储库。
下一步是将生成的公钥复制到主机服务器上。
所有 SSH 密钥(无论如何在 Linux 上)都存储在文件 ~/.ssh/authorized_keys 中。该文件的格式化方式是,每一行都是不同的关键规范,空行和以 # 开头的行将被忽略并被视为注释。您可以在此处阅读有关完整格式选项的更多信息。
因此,只需将 Bitbucket 中的公钥复制到该文件的新行即可,瞧! SCP 管道已通过身份验证,秩序已恢复。
对我来说,这是我 CI/CD 之旅的开始,我对测试和部署可以实现的潜在自动化感到非常兴奋。
希望这有帮助!