deploy-bot

Deploy Discord bot to slate VM

v1a6ab5f109 steps

Steps

auth

Authenticate with Proxmox

keebDev02.auth
Configuration
apiUrl: https://10.0.0.4:8006
username: root
password: ${{ vault.get("proxmox-vault", "password") }}
realm: pam
node: keeb-dev-02
skipTlsVerify: true
lookup-slate

Lookup slate VM to populate fleet resource

fleet.lookup

← depends on: auth (on succeeded)

Configuration
apiUrl: https://10.0.0.4:8006
ticket: ${{ model.keebDev02.resource.node.node.attributes.ticket }}
csrfToken: ${{ model.keebDev02.resource.node.node.attributes.csrfToken }}
node: keeb-dev-02
skipTlsVerify: true
sync-code

Rsync swamp repo to remote host

swampRepo.syncCode

← depends on: lookup-slate (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root
remoteDir: /opt/proxmox-manager
sync-bot

Rsync bot directory to remote host

swampRepo.syncCode

← depends on: lookup-slate (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root
remoteDir: /opt/proxmox-manager
sync-binary

Copy swamp binary to remote host

swampRepo.syncBinary

← depends on: lookup-slate (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root
remoteDir: /opt/proxmox-manager
sync-secrets

Sync vault secrets to remote

swampRepo.syncSecrets

← depends on: sync-code (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root
remoteDir: /opt/proxmox-manager
build-image

Build Docker image on slate

slateDocker.build

← depends on: sync-code (on succeeded), sync-bot (on succeeded), sync-binary (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root
write-env

Write .env file for the bot container

testVmSsh.exec

← depends on: sync-code (on succeeded)

Configuration
host: ${{ model.fleet.resource.vm[inputs.vmName].attributes.ip }}
user: root
start-bot

Start bot container

slateDocker.run

← depends on: build-image (on succeeded), write-env (on succeeded)

Configuration
sshHost: ${{ model.fleet.resource.vm["slate"].attributes.ip }}
sshUser: root