kind: pipeline
type: docker
name: test-pipeline

# 关闭自动设置Git镜像
# 此处可以不设置,将获取最新的git镜像
clone:
  disable: true

steps:
  # 设置Git镜像版本,下载仓库文件
  # 如果上面没有设置clone,此处需要删除(如果不删除,在pipeline中将多一个clone,pipeline会出错)
  - name: clone
    image: drone/git:1.2.1

  # 构建和编译Java项目
  - name: test-build
    image: maven:3.8.4
    volumes:
      # Maven缓存目录
      - name: mvn-cache
        path: /root/.m2

    # 在Docker容器内执行的命令
    commands:
      - mvn clean install

  # 发布项目
  - name: test-deploy
    image: appleboy/drone-ssh:1.6.4
    settings:
      # 部署主机的IP
      host: 192.168.108.200
      # 部署主机的登录账号,需从Drone中获取密钥名ssh_user的值,创建方式见下面
      username:
        from_secret: ssh_user
      # 部署主机的登录密码,需从Drone中获取密钥名ssh_pwd的值,创建方式见下面
      password:
        from_secret: ssh_pwd
      # 端口号
      port: 22
      # 设置超时
      command_timeout: 10m
      # 编写脚本,可根据具体情况编写
      script:
        # 进入宿主机的“/home/app”目录(注意:先在宿主机上创建app目录)
        - cd /home/app
        # 删除jar包,我测试的工程名是test
        # - rm -rf test.0.0.1-SNAPSHOT.jar
        # 将编译后的jar包复制到"/home/app"下
        - cp /home/mvn/.m2/repository/com/example/test/0.0.1-SNAPSHOT/test-0.0.1-SNAPSHOT.jar .
        # 执行"/home/app"下的脚本(注意:需要在“/home/app”目录下创建start.sh文件)
        # - sh start.sh

# 挂载宿主机目录,对应"test-build"的Maven容器的目录
volumes:
  - name: mvn-cache
    host:
      path: /home/mvn/.m2

# 对应Gogs仓库分支
trigger:
  branch:
    - master