Files
hla_framework_bd/.gitea/workflows/deploy-service.yml
T

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}"