diff options
Diffstat (limited to '.github/workflows/update-instances.yml')
| -rw-r--r-- | .github/workflows/update-instances.yml | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/.github/workflows/update-instances.yml b/.github/workflows/update-instances.yml new file mode 100644 index 0000000..d16bddd --- /dev/null +++ b/.github/workflows/update-instances.yml @@ -0,0 +1,68 @@ +on: + schedule: + - cron: '0 0 * * *' + +jobs: + update-instances: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: sudo apt-get install -y jq + - name: Fetch instances + run: | + function apply_update() { + mv services-tmp.json services.json + rm -f *-tmp.json + + # Ensure no trailing slashes for any instance + sed -i '' 's/\/"/"/g' services.json + } + + # ============================================================== + # Git config + # ============================================================== + git config --global user.name github-actions + git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com + git remote set-url origin git@github.com:benbusby/farside.git + git checkout main + + # ============================================================== + # Searx update + # ============================================================== + curl -s https://searx.space/data/instances.json | \ + jq '[ + .instances | + to_entries[] | + select(.value.network_type == "normal") | + select(.value.version | . != null) | + select(.value.version | startswith("1.0.0")) | + select(.value.network.asn_privacy == 0) | + select(.value.http.error == null) | + select(.value.tls.grade == "A+" or .value.tls.grade == "A") | + select(.value.http.grade == "A+" or .value.http.grade == "A") | + select(.value.html.grade == "V" or .value.html.grade == "F") | + .key + ] | sort' > searx-tmp.json + + jq --slurpfile searx searx-tmp.json \ + '( .[] | select(.type == "searx") ) + .instances |= $searx[0]' services.json > services-tmp.json + + apply_update + + # ============================================================== + # TODO: Update instances for other services + # ============================================================== + + # ============================================================== + # Push changes + # ============================================================== + if [[ $(git diff-index --quiet HEAD) ]]; then + echo "No updates" + else + git add services.json + git commit -m '[CI] Auto update instances' + git push + fi |
