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 - uses: webfactory/ssh-agent@v0.5.3 with: ssh-private-key: | ${{ secrets.PRIMARY_REPO_KEY }} - 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 # ============================================================== echo "Fetching searx instances..." 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 cat searx-tmp.json | jq . 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 # ============================================================== git add services.json git commit -m '[CI] Auto update instances' || exit 0 git push