Add reusable workflow for setting up SSH agent
This commit is contained in:
parent
132f8f4d7d
commit
4ae840d3c9
3 changed files with 108 additions and 16 deletions
42
.github/actions/ssh/action.yml
vendored
Normal file
42
.github/actions/ssh/action.yml
vendored
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
name: SSH setup
|
||||||
|
description: Set up the SSH agent
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
config:
|
||||||
|
description: The SSH configuration
|
||||||
|
required: true
|
||||||
|
key:
|
||||||
|
description: The private SSH key
|
||||||
|
required: true
|
||||||
|
known-hosts:
|
||||||
|
description: The list of known hosts
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Configure SSH
|
||||||
|
shell: sh
|
||||||
|
env:
|
||||||
|
CONFIG: ${{ inputs.config }}
|
||||||
|
KNOWN_HOSTS: ${{ inputs.known-hosts }}
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
echo "${CONFIG}" > ~/.ssh/config
|
||||||
|
echo "${KNOWN_HOSTS}" > ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
- name: Start SSH agent
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
SOCKET: /tmp/ssh-agent.sock
|
||||||
|
run: |
|
||||||
|
echo "SSH_AUTH_SOCK=${SOCKET}" >> $GITHUB_ENV
|
||||||
|
ssh-agent -a ${SOCKET} > /dev/null
|
||||||
|
|
||||||
|
- name: Add SSH key
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
KEY: ${{ inputs.key }}
|
||||||
|
run: |
|
||||||
|
ssh-add - <<< "${KEY}"
|
30
.github/workflows/stage.yml
vendored
30
.github/workflows/stage.yml
vendored
|
@ -1,10 +1,6 @@
|
||||||
name: Deploy (Staging)
|
name: Deploy (Staging)
|
||||||
|
|
||||||
on:
|
on: workflow_dispatch
|
||||||
workflow_dispatch
|
|
||||||
|
|
||||||
env:
|
|
||||||
SSH_AUTH_SOCK: /tmp/ssh-agent.sock
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stage:
|
stage:
|
||||||
|
@ -17,6 +13,13 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up SSH agent
|
||||||
|
uses: ./.github/actions/ssh
|
||||||
|
with:
|
||||||
|
config: ${{ vars.SSH_CONFIG }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
known-hosts: ${{ vars.SSH_KNOWN_HOSTS }}
|
||||||
|
|
||||||
- name: Set up Java
|
- name: Set up Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
|
@ -29,22 +32,17 @@ jobs:
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew installDist
|
run: ./gradlew installDist
|
||||||
|
|
||||||
- name: Set up SSH agent
|
|
||||||
run: |
|
|
||||||
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
|
|
||||||
ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}"
|
|
||||||
mkdir -p ~/.ssh
|
|
||||||
echo '${{ vars.SSH_CONFIG }}' > ~/.ssh/config
|
|
||||||
echo '${{ vars.KNOWN_HOSTS }}' > ~/.ssh/known_hosts
|
|
||||||
|
|
||||||
- name: Publish to staging server
|
- name: Publish to staging server
|
||||||
run: |
|
run: |
|
||||||
rsync build/install/helma/ antville.dev:/ \
|
rsync ./build/install/helma/ antville.dev:./ \
|
||||||
--verbose --archive --delete --compress \
|
--verbose --archive --delete --compress \
|
||||||
--filter 'protect /lib/ext' \
|
--filter '+ /bin' \
|
||||||
|
--filter '+ /extras' \
|
||||||
--filter '+ /launcher.jar' \
|
--filter '+ /launcher.jar' \
|
||||||
|
--filter '- /lib/ext' \
|
||||||
--filter '+ /lib' \
|
--filter '+ /lib' \
|
||||||
--filter '- /*' \
|
--filter '+ /modules' \
|
||||||
|
--filter '- /*'
|
||||||
|
|
||||||
- name: Restart Helma
|
- name: Restart Helma
|
||||||
run: ssh antville.dev restart
|
run: ssh antville.dev restart
|
||||||
|
|
52
src/dist/extras/deploy.sh
vendored
Normal file
52
src/dist/extras/deploy.sh
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Use this script as forced command of an authorized SSH key:
|
||||||
|
# command="/home/helma/extras/deploy.sh" ssh-ed25519 AAAAC3NzaC…
|
||||||
|
|
||||||
|
case "$SSH_ORIGINAL_COMMAND" in
|
||||||
|
ping)
|
||||||
|
echo pong
|
||||||
|
;;
|
||||||
|
|
||||||
|
deploy-helma)
|
||||||
|
rsync ./ p3k.org:./ \
|
||||||
|
--archive --compress --delete --verbose \
|
||||||
|
--filter '+ /bin' \
|
||||||
|
--filter '+ /extras' \
|
||||||
|
--filter '+ /launcher.jar' \
|
||||||
|
--filter '- /lib/ext' \
|
||||||
|
--filter '+ /lib' \
|
||||||
|
--filter '+ /modules' \
|
||||||
|
--filter '- /*'
|
||||||
|
;;
|
||||||
|
|
||||||
|
deploy-antville)
|
||||||
|
rsync ./apps/antville/ p3k.org:./apps/antville/ \
|
||||||
|
--archive --compress --delete --verbose \
|
||||||
|
--filter '+ /claustra' \
|
||||||
|
--filter '+ /code' \
|
||||||
|
--filter '+ /compat' \
|
||||||
|
--filter '+ /i18n' \
|
||||||
|
--filter '+ /lib' \
|
||||||
|
--filter '- /*'
|
||||||
|
rsync ./apps/antville/static/helma/ p3k.org:/var/www/weblogs.at/ \
|
||||||
|
--archive --compress --verbose \
|
||||||
|
--filter '+ /fonts' \
|
||||||
|
--filter '+ /formica.html' \
|
||||||
|
--filter '+ /img' \
|
||||||
|
--filter '+ /scripts' \
|
||||||
|
--filter '+ /styles' \
|
||||||
|
--filter '- /*'
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart)
|
||||||
|
printf 'Restarting Helma… '
|
||||||
|
sudo /bin/systemctl restart helma
|
||||||
|
printf '%s\n' 'done.'
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# Allow any rsync command but restrict it to the installation directory
|
||||||
|
rrsync -wo /home/helma
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Add table
Reference in a new issue