跳转至

DroneCI 使用SCP插件上传制品

概要: 利用SCP插件完成Drone制品上传

创建时间: 2022.10.16 16:52:48

更新时间: 2022.10.16 17:33:42

插件简介

Drone Plugins - SCP 是一款通过SSH协议,用于上传制品或文件到目标服务器的Drone插件。
特点

  1. 支持自定义的服务器端口
  2. 支持密码或者ssh密钥登录
  3. 支持上传后删除本地文件
  4. 支持上传超时后失败

警告

所有涉及到密码或密钥的内容,都建议使用 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
image.png
然后直接将生成的ssh私钥文件 id_rsa 内容复制粘贴进去即可

如何生成ssh RSA密钥对?

最简单的方法,如果没有其他要求,那么直接执行 ssh-keygen -t RSA -f ./id_rsa -P "" -C "DroneCI",生成在当前目录下的 id_rsaid_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
image.png
由于多了一个讲密钥字符串转成私钥文件的步骤,因此流水线与之对应也要加一个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

参考