DroneCI 使用SCP插件上传制品
概要: 利用SCP插件完成Drone制品上传
创建时间: 2022.10.16 16:52:48
更新时间: 2022.10.16 17:33:42
插件简介
Drone Plugins - SCP 是一款通过SSH协议,用于上传制品或文件到目标服务器的Drone插件。
特点
- 支持自定义的服务器端口
- 支持密码或者ssh密钥登录
- 支持上传后删除本地文件
- 支持上传超时后失败
警告
所有涉及到密码或密钥的内容,都建议使用 from_secret 的方式从Drone中读入,不要放在git仓库中,十分不安全
通过密码上传
来自官方示例
YAML |
---|
| kind: pipeline
name: default
steps:
- name: scp files
image: appleboy/drone-scp
settings:
host: example.com
username: foo
password: bar
port: 22
target: /var/www/deploy/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}
source: release.tar.gz
|
通过密钥上传
有两种形式
通过密钥字符串
前置工作,在构建配置 Settings -- ORGANIZATION - Secrets
中,点击新建 NEW ORGANIZATION SECRET

然后直接将生成的ssh私钥文件 id_rsa
内容复制粘贴进去即可
如何生成ssh RSA密钥对?
最简单的方法,如果没有其他要求,那么直接执行 ssh-keygen -t RSA -f ./id_rsa -P "" -C "DroneCI"
,生成在当前目录下的 id_rsa
和 id_rsa.pub
就是密钥对文件
YAML |
---|
| kind: pipeline
name: default
steps:
- name: scp files
image: appleboy/drone-scp
settings:
host:
from_secret: my_host
username:
from_secret: my_host_user
key:
from_secret: my_sshkey_string
target: /var/www/deploy/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}
source: release.tar.gz
|
通过密钥文件
前置工作:同样是添加私钥文件内容到 Secrets
中,但稍有不同的是,由于需要通过填入的字符串生成本次构建临时的私钥文件,特别注意需要将 id_rsa
内容的每一个换行替换为字符串 \n
(直接粘贴进去会丢掉换行特征,因此需要转义),类似下面的样子,然后再粘贴到 Secrets
中

由于多了一个讲密钥字符串转成私钥文件的步骤,因此流水线与之对应也要加一个step
YAML |
---|
| kind: pipeline
name: default
steps:
- name: gen sshkey file
image: appleboy/drone-scp
environment:
SSHKEY:
from_secret: my_sshkey_file
commands:
- echo $SSHKEY > ./sshkey
- chmod 600 ./sshkey
- ls -la
- name: scp files
image: appleboy/drone-scp
settings:
host:
from_secret: my_host
username:
from_secret: my_host_user
key_path: ./sshkey
port: 22
target: /root/docker/files/HTTPD/ci-new
source: ./requirements-unittest.txt
|
参考