0
0
mirror of https://github.com/TrianguloY/UrlChecker.git synced 2024-09-20 04:12:14 +02:00
UrlChecker/.github/workflows/assets-updater.yml
Pablo Ortigosa 86a649cdc0
Update assets-updater.yml
Automatically add label
2022-10-25 20:39:12 +01:00

114 lines
3.3 KiB
YAML

# This action updates assets files
name: Assets updater
on:
# weekly
schedule:
- cron: '0 0 * * SUN'
# manually
workflow_dispatch:
permissions:
contents: write # need to update branches
pull-requests: write # need to create PRs
jobs:
update:
runs-on: ubuntu-latest
strategy:
matrix:
include:
# ClearURL database
- fileName: "data.minify.json"
fileFolder: "./app/src/main/assets/"
fileUrl: "https://rules2.clearurls.xyz/data.minify.json"
hashUrl: "https://rules2.clearurls.xyz/rules.minify.hash"
# - fileName: "..."
# fileFolder: "..."
# fileUrl: "..."
# hashUrl: "..."
steps:
- name: Checkout master
uses: actions/checkout@v3
with:
fetch-depth: 0 # need to fetch other branches
- name: Git config
run: |
git config user.name 'github-actions'
git config user.email 'github-actions@github.com'
- name: Run script
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# inputs
FILE_NAME="${{ matrix.fileName }}"
FILE_FOLDER="${{ matrix.fileFolder }}"
FILE_URL="${{ matrix.fileUrl }}"
HASH_URL="${{ matrix.hashUrl }}"
# dynamic inputs
BRANCH="actions/assets/$FILE_NAME"
FILE_PATH="$FILE_FOLDER$FILE_NAME"
# checkout branch (create if doesn't exist)
git checkout "$BRANCH" || git checkout -b "$BRANCH"
# get current hash
OLD_HASH=$(sha256sum "$FILE_PATH" | cut -d' ' -f1)
echo "Current hash: $OLD_HASH"
# get remote hash
REMOTE_HASH=$(curl "$HASH_URL")
echo "Remote hash: $REMOTE_HASH"
# compare hashes
if [ "$REMOTE_HASH" = "$OLD_HASH" ]; then
echo "Up-to date"
exit 0
fi
# download new file
curl "$FILE_URL" -o "$FILE_PATH"
# get new hash
NEW_HASH=$(sha256sum "$FILE_PATH" | cut -d' ' -f1)
echo "New hash: $NEW_HASH"
# check downloaded hash
if [ "$REMOTE_HASH" != "$NEW_HASH" ]; then
echo "[ERROR] Downloaded file hash doesn't match, aborted."
exit 1
fi
# create and push commit with the new file
# at this point we know the new file is different from the last because hashes are different (old==remote!=new)
git add "$FILE_PATH"
git commit -m "
[action] Updated $FILE_NAME
Url: $FILE_URL
Hash url: $HASH_URL
Old hash: $OLD_HASH
New hash: $NEW_HASH"
git push --set-upstream origin "$BRANCH"
# create pr if doesn't exists
if [ "$(gh pr list --head "$BRANCH" --json number --jq length)" = "0" ]; then
echo "Creating PR..."
gh pr create --label 'action' --title "updated $FILE_NAME" --body "File $FILE_PATH was updated
This is an automatic PR run from a [github action](../actions/workflows/assets-updater.yml)"
else
echo "PR already exists"
fi