From 055ae557440713df3c5d4e7b3e3f071f62ec646c Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 20 Aug 2024 15:16:28 +0200 Subject: [PATCH] .forgejo/workflows/ci.yaml: WIP, preparing for nsupdate --- .forgejo/workflows/ci.yaml | 94 ++++++++++++++------------------------ 1 file changed, 35 insertions(+), 59 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 3838203..026c5de 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -4,67 +4,43 @@ on: - 'main' jobs: - sync: + deploy_script: runs-on: linux_amd64 - steps: - - name: Retrieve and sync files - shell: bash - run: | - git clone ${{ gitea.server_url }}/${{ gitea.repository }} dns - echo "Cloned sucessfully from ${{ gitea.server_url }}/${{ gitea.repository }}" - cd dns - echo "" > /var/cache/bind/.modified - - if [ -z $(git diff-tree --no-commit-id --name-only -r main | grep zone) ]; then - exit 0 - fi - - files=$(git diff-tree --no-commit-id --name-only -r main | grep zone) - - for file in $files - do - domain=$(echo $file | sed "s/.zone//g") - /usr/bin/named-checkzone "$domain" "$file" || ( echo "Error on file $file" && continue; ) - echo "$file" >> /var/cache/bind/.modified - rsync "./$file" /var/cache/bind/ - echo "Move $file to /var/cache/bind" - done - sudo chown bind:bind /var/cache/bind/*.zone - sudo chmod g+rw /var/cache/bind/*.zone - echo "Synced sucessfully" - - - deploiement: - runs-on: linux_amd64 - needs: sync steps: - name: Reload bind shell: bash + environment: + TSIG_KEY: ${TSIG_KEY} # Clé TSIG stockée dans les secrets CI/CD + DNS_SERVER: ${DNS_SERVER} # Adresse du serveur DNS run: | - sudo systemctl reload bind9.service - - name: Check bind - shell: bash - run: | - echo Recherche de zones déployées - cd /var/cache/bind - files=$(cat /var/cache/bind/.modified) - - if [ -z $files ]; then - echo Aucune zone déployée - exit 0 - fi - - for zone_name in $files; do - datetime=$(date --iso-8601=seconds) - echo "Vérification de la zone ${zone_name::-5}..." - - if [[ $zone_name == *":"* ]]; then - echo On ne sait pas vérifier ce type de zone - else - echo Dernière minute... - sudo grep named /var/log/syslog | grep ${datetime::-10} | grep ${zone_name::-5} - sudo grep named /var/log/syslog | grep ${datetime::-9} | grep ${zone_name::-5} | grep loaded || exit 1 - fi - done - - echo "Déploiement terminé !" + git diff HEAD^ HEAD > zone_diff.txt + while IFS= read -r line; do + case "$line" in + "--- "*".zone") + CURRENT_ZONE=$(basename "$line" .zone | sed 's/--- //') + ;; + "+++"*) + ;; + "-"* | "+"*) + if [[ $line == -* ]]; then # Enregistrement supprimé + RECORD=$(echo "$line" | sed 's/^-//') + echo - $RECORD +# echo nsupdate -k $TSIG_KEY <