在无人机插件中访问无人机的环境变量
access environment variables of drone in drone plugins
我对无人机完全陌生CI/CD。我在将环境变量传递给无人机插件时遇到问题。我现在所做的是
- 我在我的一台服务器(my.drone.com)中部署了无人机 docker 图像 drone/drone:0.7(服务器和代理都在工作。bitbucket 已成功集成)我关注了这篇文章: configre drone on ubuntu 用于设置。
- 我在无人机管理应用程序中为 CI/CD 激活了我的一个仓库
- 我将
.drone.yml
文件添加到项目
- 我确实在
cloud.docker.com
应用程序中设置了自动图像构建。现在我想将该图像部署到我的其他云服务器 (my.app.com
)。因此,我将 applebody/drone-ssh 添加到 drone.yml 以访问该服务器
- 要将此插件部署到我的服务器,它需要通过 ssh 访问我的服务器 (
my.app.com
)。
- 我可以从
my.drone.com
服务器登录 my.app.com
- 但我不知道插件如何访问 my.app.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
服务器
我也不知道我的做法对不对。如果我的方法有误,请纠正我。
抱歉我的英语不好。 谢谢
这是不支持的语法。您示例中的 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] 描述了如果秘密有不同的名称该怎么办。
进一步阅读:
我对无人机完全陌生CI/CD。我在将环境变量传递给无人机插件时遇到问题。我现在所做的是
- 我在我的一台服务器(my.drone.com)中部署了无人机 docker 图像 drone/drone:0.7(服务器和代理都在工作。bitbucket 已成功集成)我关注了这篇文章: configre drone on ubuntu 用于设置。
- 我在无人机管理应用程序中为 CI/CD 激活了我的一个仓库
- 我将
.drone.yml
文件添加到项目 - 我确实在
cloud.docker.com
应用程序中设置了自动图像构建。现在我想将该图像部署到我的其他云服务器 (my.app.com
)。因此,我将 applebody/drone-ssh 添加到 drone.yml 以访问该服务器 - 要将此插件部署到我的服务器,它需要通过 ssh 访问我的服务器 (
my.app.com
)。 - 我可以从
my.drone.com
服务器登录my.app.com
- 但我不知道插件如何访问 my.app.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
服务器
我也不知道我的做法对不对。如果我的方法有误,请纠正我。
抱歉我的英语不好。 谢谢
这是不支持的语法。您示例中的 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] 描述了如果秘密有不同的名称该怎么办。
进一步阅读: