73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
name: 'SSH Deploy'
|
|
description: 'SSH to remote host and run the deploy script for a given stack'
|
|
inputs:
|
|
deploy_host:
|
|
description: 'Remote host to deploy to'
|
|
required: true
|
|
deploy_user:
|
|
description: 'SSH user on remote host'
|
|
required: true
|
|
deploy_ssh_key:
|
|
description: 'SSH private key for authentication'
|
|
required: true
|
|
deploy_known_hosts:
|
|
description: 'SSH known_hosts entry for the remote host'
|
|
required: true
|
|
stack:
|
|
description: 'Stack name to deploy (e.g. paper-trading)'
|
|
required: true
|
|
deploy_tag:
|
|
description: 'Tag/branch name for notification messages'
|
|
required: false
|
|
default: ''
|
|
ntfy_topic:
|
|
description: 'ntfy topic for deploy success notification'
|
|
required: false
|
|
default: ''
|
|
ntfy_token:
|
|
description: 'ntfy token for deploy success notification'
|
|
required: false
|
|
default: ''
|
|
ntfy_failure_topic:
|
|
description: 'ntfy topic for deploy failure notification (defaults to ntfy_topic)'
|
|
required: false
|
|
default: ''
|
|
ntfy_failure_token:
|
|
description: 'ntfy token for deploy failure notification (defaults to ntfy_token)'
|
|
required: false
|
|
default: ''
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
|
|
- name: Configure SSH & Deploy
|
|
shell: bash
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ inputs.deploy_ssh_key }}" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
echo "${{ inputs.deploy_known_hosts }}" > ~/.ssh/known_hosts
|
|
chmod 600 ~/.ssh/known_hosts
|
|
ssh -i ~/.ssh/deploy_key \
|
|
"${{ inputs.deploy_user }}@${{ inputs.deploy_host }}" \
|
|
"${{ inputs.stack }}"
|
|
|
|
- name: Notify Deploy Success
|
|
if: success() && inputs.ntfy_topic != ''
|
|
uses: https://lab.zlymeda.dynu.net/actions/ntfy-notify@main
|
|
with:
|
|
ntfy_topic: ${{ inputs.ntfy_topic }}
|
|
ntfy_token: ${{ inputs.ntfy_token }}
|
|
status: success
|
|
message: 🚀 ${{ inputs.stack }} deployed${{ inputs.deploy_tag && format(' ({0})', inputs.deploy_tag) || '' }}
|
|
|
|
- name: Notify Deploy Failure
|
|
if: failure()
|
|
uses: https://lab.zlymeda.dynu.net/actions/ntfy-notify@main
|
|
with:
|
|
ntfy_topic: ${{ inputs.ntfy_failure_topic || inputs.ntfy_topic }}
|
|
ntfy_token: ${{ inputs.ntfy_failure_token || inputs.ntfy_token }}
|
|
status: failure
|
|
message: Deploy failed (${{ inputs.stack }})${{ inputs.deploy_tag && format(' ({0})', inputs.deploy_tag) || '' }}
|