jobs: build: runs-on: ubuntu-latest steps: - name: Build Jekyll site - name: Generate CSV with MD5 Hashes run: | cd build find . -type f -exec md5sum {} + | sed 's/\.\///' | sort -t $'\t' -k 2 > file_hashes.csv working-directory: ${{ github.workspace }} - name: Upload artifacts deploy: needs: [build] runs-on: ubuntu-latest steps: - name: Fetch file_hashes.csv from S3 id: fetch_file_hashes run: | aws s3 cp s3://${{ inputs.s3-bucket }}/file_hashes.csv prev_file_hashes.csv || touch prev_file_hashes.csv echo "content<<EOF" >> "$GITHUB_OUTPUT" cat prev_file_hashes.csv >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" rm prev_file_hashes.csv - name: Sync to S3 - name: Determine changed files id: changed_files run: | echo "changed_files<<EOF" >> "$GITHUB_OUTPUT" diff <(echo "$S3_FILE_HASHES") file_hashes.csv | grep -E "^[<>]" | sed -E 's/^[<>] [0-9a-f]+[[:space:]]*//' | sort | uniq >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" env: S3_FILE_HASHES: ${{ steps.fetch_file_hashes.outputs.content }} - name: Call IndexNow API for changed file if: inputs.indexnow-api-key && inputs.hostname run: | for FILE in $CHANGED_FILES; do URL="https://${{ inputs.hostname }}/$FILE" REQUEST_URL="https://api.indexnow.org/indexnow?url=$URL&key=${{ inputs.indexnow-api-key }}" echo "Calling IndexNow API for file: $URL" curl -sS "$REQUEST_URL" done shell: bash env: CHANGED_FILES: ${{ steps.changed_files.outputs.changed_files }}