64 lines
2.3 KiB
YAML
64 lines
2.3 KiB
YAML
name: Service Deployer
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
service_name:
|
|
required: true
|
|
type: string
|
|
description: "Target service name lower (e.g. master)"
|
|
environment:
|
|
required: true
|
|
type: string
|
|
# default: "dev"
|
|
description: "Target deployment environment: 'dev' or 'prod'"
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Resolve service name parameters
|
|
id: vars
|
|
run: |
|
|
SERVICE_NAME="${{ inputs.service_name }}"
|
|
SERVICE_NAME_LOWER=$(echo "$SERVICE_NAME" | tr '[:upper:]' '[:lower:]')
|
|
SERVICE_NAME_UPPER=$(echo "$SERVICE_NAME" | tr '[:lower:]' '[:upper:]')
|
|
|
|
echo "service_name_lower=$SERVICE_NAME_LOWER" >> $GITHUB_OUTPUT
|
|
echo "service_name_upper=$SERVICE_NAME_UPPER" >> $GITHUB_OUTPUT
|
|
echo "systemd_unit_name=AGEBD-SERVICE-${SERVICE_NAME_UPPER}.service" >> $GITHUB_OUTPUT
|
|
echo "service_dir=/sls/bd/hla/${{ inputs.environment }}/services/${SERVICE_NAME_LOWER}/current" >> $GITHUB_OUTPUT
|
|
|
|
- name: Ensure service directory exists
|
|
run: |
|
|
mkdir -p ${{ steps.vars.outputs.service_dir }}
|
|
|
|
- name: Sync service deployment files
|
|
run: |
|
|
rsync -avz --delete --exclude='.venv' \
|
|
./services/${{ steps.vars.outputs.service_name_lower }}/current/ \
|
|
${{ steps.vars.outputs.service_dir }}/
|
|
|
|
- name: Substitute environment variables & setup systemd service
|
|
run: |
|
|
SERVICE_DIR="${{ steps.vars.outputs.service_dir }}"
|
|
SYSTEMD_UNIT_NAME="${{ steps.vars.outputs.systemd_unit_name }}"
|
|
AGEBD_ENV="${{ inputs.environment }}"
|
|
|
|
SYSTEMD_UNIT_FILE_PATH="${SERVICE_DIR}/systemd/${SYSTEMD_UNIT_NAME}"
|
|
if [ -f "\$SYSTEMD_UNIT_FILE_PATH" ]; then
|
|
sed -i "s/{{ *agebd_env *}}/${AGEBD_ENV}/g" "\$SYSTEMD_UNIT_FILE_PATH"
|
|
fi
|
|
|
|
mkdir -p ~/.config/systemd/user
|
|
ln -sf "\$SYSTEMD_UNIT_FILE_PATH" "~/.config/systemd/user/${SYSTEMD_UNIT_NAME}"
|
|
|
|
export XDG_RUNTIME_DIR="/run/user/\$(id -u)"
|
|
systemctl --user daemon-reload
|
|
systemctl --user enable "${SYSTEMD_UNIT_NAME}"
|
|
systemctl --user restart "${SYSTEMD_UNIT_NAME}"
|