name: Deploy DNS Configuration on: push: branches: [ main ] jobs: deploy: runs-on: self-hosted # Используем self-hosted runner на шлюзе env: DEBUG: 1 DEBUG_LOG: /tmp/generate-configs.debug.log # ==== Конфигурация проекта ==== INPUT_FILE: domains.txt # Временные конфиги (куда пишутся generate-configs.sh) IPSET_CONF: /tmp/91-ipset-bbrkn.conf RESOLVE_CONF: /tmp/92-resolve-bbrkn.conf # DNS-сервер для резолвинга DNS_SERVER: 10.100.1.2 # Адрес сервиса Chromium API_URL: http://10.100.1.2:3000/domains?domain= # Директория конфигов на шлюзе TARGET_DIR: /opt/appdata/pihole/etc/dnsmasq.d # Имя контейнера Pi-hole DOCKER_CONTAINER: pihole IGNORE_PARTS: "doubleclick yandex mail.ru bigsv.ru mts.ru rambler.ru yadro.ru aif.ru vkvideo.ru tns-counter.ru st.vk.com vk.com" steps: - name: Checkout repository uses: actions/checkout@v3 - name: Validate domains file run: | if [ ! -f domains.txt ]; then echo "Error: domains.txt not found" exit 1 fi # Проверка синтаксиса доменов grep -v '^#' domains.txt | grep -v '^$' | while read domain; do if ! echo "$domain" | grep -qE '^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$'; then echo "Error: Invalid domain format: $domain" exit 1 fi done - name: Prepare Makefile run: | chmod +x scripts/generate-configs.sh chmod +x scripts/deploy-to-gateway.sh - name: Run workflow (clean → all) run: | make clean make all - name: Upload configs as artifacts uses: actions/upload-artifact@v3 with: name: dnsmasq-configs path: | ${{ env.IPSET_CONF }} ${{ env.RESOLVE_CONF }} ${{ env.DEBUG_LOG }}