我是无人机CI / CD的新手。我面临将环境变量传递给无人机插件的问题。我现在做的是
.drone.yml
文件添加到项目cloud.docker.com
app中设置了自动图片构建功能。现在我想将该映像部署到我的其他云服务器(my.app.com
)。所以,我将applebody / drone-ssh添加到drone.yml来访问该服务器my.app.com
)。my.app.com
服务器my.drone.com
my.drone.com
私有ssh密钥传递给插件。但没有锻炼。我的无人机的服务器和代理env文件和.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
服务器
即使我不知道我的方法是否正确。如果我的方法有误,请纠正我。
抱歉我的英语不好。的由于
答案 0 :(得分: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 does not see secret variables when using drone-email plugin