load("@this//:from-secret.star", "fromSecret") load("@this//:map.star", "map") load("@this//:environment.star", "environment") load("@this//:export.star", "export") def deploy( filename, name, folder, secrets, commands, ): return { "name": "deploy", "image": "appleboy/drone-ssh", "environment": environment(secrets), "settings": { "envs": [x.replace("-", "_") for x in secrets ], "host": fromSecret("ssh-host"), "port": fromSecret("ssh-port"), "username": fromSecret("ssh-root-user"), "password": fromSecret("ssh-root-password"), "script": [ "set -e" ] + map(export, secrets) + [ "docker network prune -f", "cd {folder}".format(folder=folder), "docker stack rm {name}".format(name = name), "sleep 30", "docker stack deploy -c {filename} {name}".format(name= name, filename = filename), ] + commands } }