farside/.github/workflows/update-instances.yml

69 lines
2.5 KiB
YAML
Raw Normal View History

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