diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..1847df5 --- /dev/null +++ b/action.yml @@ -0,0 +1,72 @@ +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) || '' }}