drone-deploy/README.md
2020-04-13 18:49:01 +02:00

1.9 KiB

Drone Deployment Plugin

Quickstart 🚀

kind: pipeline
name: default

steps:
  
  - name: build
    image: node:11-alpine
    pull: always
    commands:
      - npm i
      - npm run build:prod

  - name: deploy
    image: cupcakearmy/drone-deploy
    pull: always
    settings:
      host: example.org
      user: root
      key:
        from_secret: ssh_key
      # or with a password
      # password: S3cr37Sh1zzl3
      port: 69
      target: /my/web/root/project
      sources:
        # To copy all the files
        # - . 
        - ./public
        - ./docker-compose.yml
        - ./docker-compose.prod.yml
      commands:
        - docker-compose -f docker-compose.yml -f docker-compose.prod.yml down
        - docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
    when:
      event: push
      branch: master

Details 📒

The plugins creates a tarball compressing all the files included inside of sources. Then the compressed tarball gets uploaded, extracted and deleted, leaving only the files specified by sources inside of the target folder. Afterwards all the commands inside of commands will get executed at the target directory.

Mapping remote environment variables 🗺

Sometimes it's usefull to have a remote env with a secret. Here is how.

kind: pipeline
name: default

steps:

  # build...

  - name: deploy
    image: cupcakearmy/drone-deploy
    pull: always
    settings:
      # host, user, port, key, when, target ...

      myvar: 'Something'
      somesecret:
        from_secret: mysecret
      envs:
        - myvar
        - somesecret
      commands:
        - echo $MYENV # Outputs: Something
        - echo $SOMESECRET # Outputs: Whatever is saved in drone as `mysecret`
Note

If you don't want to specify single variables just use envs: all and all the parameters inside of settings will be available.

All the vars will be automagically be uppercased.