Fixing service generation step in Renovate PR deploy flow.
Renovate / renovate (push) Successful in 9m18s
Renovate / renovate (push) Successful in 9m18s
This commit is contained in:
@@ -10,7 +10,7 @@ on:
|
|||||||
- "**/docker-compose.yml"
|
- "**/docker-compose.yml"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
HC_VAULT_VERSION: "1.20.4"
|
HC_VAULT_VERSION: "1.18.0"
|
||||||
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
|
VAULT_ADDR: ${{ secrets.TREZ_VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_GITEA_TOKEN }}
|
||||||
|
|
||||||
@@ -52,32 +52,33 @@ jobs:
|
|||||||
id: services
|
id: services
|
||||||
run: |
|
run: |
|
||||||
git fetch origin ${{ github.event.pull_request.base.ref }}
|
git fetch origin ${{ github.event.pull_request.base.ref }}
|
||||||
git show origin/main:docker-compose.yml > docker-compose-main.yml || touch docker-compose-main.yml
|
|
||||||
cp docker-compose.yml docker-compose-head.yml
|
|
||||||
|
|
||||||
echo "Getting services from main and ${{ github.ref_name }}"
|
# Extract image refs (service -> image) from base and head
|
||||||
yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt
|
yq -r '.services | to_entries[] | "\(.key)=\(.value.image // "")"' docker-compose.yml \
|
||||||
yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt
|
| sort > services_head.txt
|
||||||
|
|
||||||
echo "Creating list of modified services..."
|
git show origin/${{ github.event.pull_request.base.ref }}:docker-compose.yml \
|
||||||
|
| yq -r '.services | to_entries[] | "\(.key)=\(.value.image // "")"' \
|
||||||
|
| sort > services_main.txt
|
||||||
|
|
||||||
|
echo "Comparing images between base and head..."
|
||||||
touch service_changes.txt
|
touch service_changes.txt
|
||||||
|
|
||||||
comm -13 services_main.txt services_head.txt | while read service; do
|
while IFS== read -r svc img; do
|
||||||
echo "$service: added" >> service_changes.txt
|
base_img=$(grep "^$svc=" services_main.txt | cut -d= -f2- || true)
|
||||||
done
|
if [ "$img" != "$base_img" ]; then
|
||||||
|
echo "$svc" >> service_changes.txt
|
||||||
comm -12 services_main.txt services_head.txt | while read service; do
|
|
||||||
yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml
|
|
||||||
yq ".services[\"$service\"]" docker-compose-head.yml > tmp_head.yml
|
|
||||||
if ! diff -q tmp_main.yml tmp_head.yml > /dev/null; then
|
|
||||||
echo "$service: modified" >> service_changes.txt
|
|
||||||
fi
|
fi
|
||||||
done
|
done < services_head.txt
|
||||||
|
|
||||||
echo "Detected service changes:"
|
echo "Detected service changes:"
|
||||||
cat service_changes.txt
|
cat service_changes.txt || true
|
||||||
|
|
||||||
|
mod_svcs=$(sort -u service_changes.txt)
|
||||||
|
if [ -z "$mod_svcs" ]; then
|
||||||
|
echo "::warning::No service image changes detected. Skipping selective deployment."
|
||||||
|
fi
|
||||||
|
|
||||||
mod_svcs=$(cut -d':' -f1 service_changes.txt | sort | uniq)
|
|
||||||
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
|
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
|
||||||
echo "$mod_svcs" >> "$GITHUB_OUTPUT"
|
echo "$mod_svcs" >> "$GITHUB_OUTPUT"
|
||||||
echo "EOF" >> "$GITHUB_OUTPUT"
|
echo "EOF" >> "$GITHUB_OUTPUT"
|
||||||
|
|||||||
Reference in New Issue
Block a user