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, ctx ): return { "name": "deploy {name}".format(name = name), "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) + [ "export DRONE_REPO_LINK=$${{DRONE_GITEA_SERVER}}/{namespace}/{name}".format(name=ctx.repo.name, namespace=ctx.repo.namespace), "export DRONE_COMMIT={commit}".format(commit=ctx.build.commit), "docker network prune -f", "cd {folder}".format(folder=folder), "docker login $${{LOCAL_DOCKER_REGISTRY}} --username client --password '$${{REGISTRY_PASSWORD}}'", "docker stack rm {name}".format(name = name), "sleep 30", "docker stack deploy -c {filename} {name}".format(name= name, filename = filename), ] + commands } }