1

我对无人机 CI/CD 完全陌生。我在将环境变量传递给无人机插件时遇到问题。我到目前为止所做的是

  • 我在我的一台服务器 (my.drone.com) 中部署了无人机 docker imagedrone/drone:0.7 (服务器和代理都在工作。bitbucket 已成功集成)我按照这篇文章:在 ubuntu上配置无人机进行设置。
  • 我在无人机管理应用程序中激活了我的 CI/CD 存储库之一
  • 我将.drone.yml文件添加到项目
  • 我确实在cloud.docker.com应用程序中设置了自动图像构建。现在我想将该图像部署到我的其他云服务器(my.app.com)。因此,我将 applebody/drone-ssh 添加到了drone.yml 以访问该服务器
  • 要将此插件部署到我的服务器,它需要my.app.com通过 ssh 访问我的服务器 ( )。
  • 我可以my.app.commy.drone.com服务器登录
  • 但我不知道插件如何访问 my.app.com,我试图通过环境变量将我的my.drone.com 私有 ssh 密钥传递给插件。但是没有锻炼。我的无人机的服务器和代理环境文件.drone.yml如下:

.drone.yml

pipeline: ssh: image: appleboy/drone-ssh host: my.app.com user: root key: $PLUGIN_SSH_KEY script: - ls - cd apps - docker pull drprasad/todo-app - docker rm -f todo - docker run -p 8080:8080 -d --name 'todo' drprasad/todo-app notify: image: plugins/slack webhook: https://hooks.slack.com/services/token channel: test username: drone-is-flying

代理环境文件

DRONE_SECRET=my_drone_secret_key
DRONE_SERVER=ws://drone-server:8000/ws/broker
PLUGIN_SSH_KEY="-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzMW5gU9I071UdnBDANbvuprd+1QwBEXWUq0gvi44ECUDZhzL
...............................................................
...............................................................
-----END RSA PRIVATE KEY-----"

服务器环境

DRONE_SECRET=my_drone_secret_key
DRONE_HOST=my.drone.com:8082
DRONE_OPEN=true
DRONE_BITBUCKET=true
DRONE_BITBUCKET_CLIENT=my_bitbucket_client_token
DRONE_BITBUCKET_SECRET=my_bitbucket_secret_key
PLUGIN_SSH_KEY="-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzMW5gU9I071UdnBDANbvuprd+1QwBEXWUq0gvi44ECUDZhzL
...............................................................
...............................................................
-----END RSA PRIVATE KEY-----"

如何将PLUGIN_SSH_KEY变量(从代理或服务器 env 文件)传递给无人机插件?这样它就可以访问我的my.app.com服务器

即使我不知道我的方法是否正确。如果我的方法有误,请纠正我。

对不起,我的英语不好。谢谢

4

1 回答 1

2

这是不支持的语法。您的示例中的key值是 Go 字符串文字,因此无法评估 bash 表达式。

key: $PLUGIN_SSH_KEY

如果您想将敏感参数(例如密钥)传递给您的构建,您可以使用无人机秘密存储 [1] 来实现。您可以使用命令行实用程序或在用户界面中上传机密。

然后,您可以将这些秘密传递给插件。请参阅官方文档 [1] 以获得更深入的解释。下面是一个简短的示例,说明语法的外观:

pipeline:
  image: appleboy/drone-ssh
  host: my.app.com
  user: root
  secrets: [ SSH_KEY ]

请注意,插件需要将密钥命名为 SSH_KEY。官方文档 [1] 描述了如果秘密有不同的名称该怎么办。

进一步阅读:

[1] http://docs.drone.io/manage-secrets/
[2] Drone CI 在使用drone-email 插件时看不到秘密变量

于 2017-09-21T19:24:24.227 回答