在无人机插件中访问无人机的环境变量

access environment variables of drone in drone plugins

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

.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 服务器

我也不知道我的做法对不对。如果我的方法有误,请纠正我。

抱歉我的英语不好。 谢谢

这是不支持的语法。您示例中的 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]