This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
name: Deploy and restart modified services
|
||||
# TODO: take care of .venv building when required (i.e when uv.lock changed)
|
||||
|
||||
on:
|
||||
push:
|
||||
# TODO: if someone tags 'prod' to a (broken) feature branch
|
||||
# this still triggers (and deploys to prod).
|
||||
branches:
|
||||
- main
|
||||
tags:
|
||||
- 'prod'
|
||||
- 'v*'
|
||||
paths:
|
||||
- 'services/**'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: hla-dev
|
||||
|
||||
env:
|
||||
# commit tagged ? yes->prod : no->dev
|
||||
AGEBD_ENV: ${{ github.ref_type == 'tag' && 'prod' || 'dev' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # needed for git diff tracking
|
||||
|
||||
# TODO: (when) do we need to restart the master service or reinstall/restart the master ioc?
|
||||
|
||||
- name: Run Ansible Orchestrator
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# Disable pipefail temporarily or add an '|| true' fallback so grep doesn't kill the script
|
||||
set +e
|
||||
CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }})
|
||||
set -e
|
||||
|
||||
# 1. Parse changed directory names into space-separated string (e.g. "master other-service")
|
||||
CHANGED_SVC=$(echo "$CHANGED_FILES" | awk -F/ '$1=="services" {print $2}' | sort -u | xargs)
|
||||
|
||||
echo "Detected changed services: '$CHANGED_SVC'"
|
||||
|
||||
# Safely halt the execution if there is nothing to pass to Ansible
|
||||
if [ -z "$CHANGED_SVC" ]; then
|
||||
echo "No services changed in this commit range. Skipping deployment smoothly."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 3. Fire the playbook passing variables down
|
||||
ansible-playbook ansible/deploy-and-restart-modified-services.yml -e "changed_services_raw='$CHANGED_SVC' agebd_env='$AGEBD_ENV'"
|
||||
@@ -1,73 +0,0 @@
|
||||
# name: Deploy, build and restart MASTER
|
||||
|
||||
# on:
|
||||
# push:
|
||||
# # TODO: if someone tags 'prod' to a (broken) feature branch
|
||||
# # this still triggers (and deploys to prod).
|
||||
# branches:
|
||||
# - main
|
||||
# tags:
|
||||
# - 'prod'
|
||||
# - 'v*'
|
||||
# # paths:
|
||||
# # - 'services/**'
|
||||
|
||||
# jobs:
|
||||
# deploy:
|
||||
# runs-on: hla-dev
|
||||
|
||||
# env:
|
||||
# # commit tagged ? yes->prod : no->dev
|
||||
# AGEBD_ENV: ${{ github.ref_type == 'tag' && 'prod' || 'dev' }}
|
||||
# SVC_CURRRENT_DIR: /sls/bd/hla/${{ github.ref_type == 'tag' && 'prod' || 'dev' }}/services/000-master/current
|
||||
|
||||
# steps:
|
||||
# - name: Checkout repository
|
||||
# uses: actions/checkout@v4
|
||||
# with:
|
||||
# fetch-depth: 0 # needed for git diff tracking
|
||||
|
||||
# - name: Copy files and replace {{ agebd_env }} with dev or prod
|
||||
# run: |
|
||||
# mkdir -p ${SVC_CURRRENT_DIR}
|
||||
# cp -r 000-master/* ${SVC_CURRRENT_DIR}
|
||||
# sed -i 's/{{ agebd_env }}/${AGEBD_ENV}/g' ${SVC_CURRRENT_DIR}/systemd/AGEBD-SERVICE-MASTER.service
|
||||
|
||||
# - name: Create Python venv
|
||||
# run: |
|
||||
# cd ${SVC_CURRRENT_DIR}/app
|
||||
# uv venv --allow-existing --system-site-packages .venv
|
||||
# uv sync
|
||||
|
||||
# - name: Restart Service
|
||||
# run: |
|
||||
# export XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||
# systemctl --user daemon-reload
|
||||
# systemctl --user enable --force ${SVC_CURRRENT_DIR}/systemd/AGEBD-SERVICE-MASTER.service
|
||||
# systemctl --user restart AGEBD-SERVICE-MASTER.service
|
||||
|
||||
# - name: Run Ansible Orchestrator
|
||||
# run: |
|
||||
# set -x
|
||||
|
||||
# # Disable pipefail temporarily or add an '|| true' fallback so grep doesn't kill the script
|
||||
# set +e
|
||||
# CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }})
|
||||
# set -e
|
||||
|
||||
# # 1. Parse changed directory names into space-separated string (e.g. "000-master 001-secondary")
|
||||
# CHANGED_SVC=$(echo "$CHANGED_FILES" | awk -F/ '$1=="services" {print $2}' | sort -u | xargs)
|
||||
|
||||
# echo "Detected changed services: '$CHANGED_SVC'"
|
||||
|
||||
# # Safely halt the execution if there is nothing to pass to Ansible
|
||||
# if [ -z "$CHANGED_SVC" ]; then
|
||||
# echo "No services changed in this commit range. Skipping deployment smoothly."
|
||||
# exit 0
|
||||
# fi
|
||||
|
||||
# # 2. Figure out the destination target environment
|
||||
# ENV_TARGET="${{ github.ref_type == 'tag' && 'prod' || 'dev' }}"
|
||||
|
||||
# # 3. Fire the playbook passing variables down
|
||||
# ansible-playbook ansible/deploy-service.yml -e "changed_services_raw='$CHANGED_SVC' agebd_env='$ENV_TARGET'"
|
||||
@@ -20,6 +20,7 @@ export EPICS_CA_ADDR_LIST='sls-cagw.psi.ch:5062 129.129.146.88'
|
||||
# activate conda environment
|
||||
. /opt/gfa/python-3.10/latest/bin/activate
|
||||
|
||||
# TODO: building the .venv should be done in CICD (only when uv.lock changes)
|
||||
pip install uv
|
||||
# to run `uv ...`
|
||||
PATH="${HOME}/.local/bin:${PATH}"
|
||||
|
||||
Reference in New Issue
Block a user