name: searxng run-name: searxng env: REMOTE_REPO: https://paulgo.dev/infra/paulgoio/searxng.git SEARXNG_REPO: https://github.com/searxng/searxng.git BUILD_PLATFORM: linux/arm64 on: schedule: - cron: "0 0 * * *" # at midnight push: paths: - ".gitea/workflows/searxng.yaml" jobs: build-searxng-base: runs-on: runner container: image: docker:cli env: REPO_NAME: searxng-base steps: - name: Install packages run: apk --no-cache add curl git jq - name: Check latest upstream commit run: | STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) LATEST_COMMIT=$(git ls-remote --heads ${REMOTE_REPO} | grep "refs/heads/base" | awk '{print $1}') # use base branch echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" echo "LATEST_COMMIT=${LATEST_COMMIT}" >> "$GITHUB_ENV" echo "Stored Commit: ${STORED_COMMIT}" echo "Latest Commit: ${LATEST_COMMIT}" - name: Build and push Docker image run: | if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then echo "Found a new commit, building new image" # Install Docker Buildx BUILDX_VERSION=$(wget -q -O- https://api.github.com/repos/docker/buildx/releases/latest | jq -r '.name') wget -O /usr/bin/docker-buildx https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.linux-arm64 chmod +x /usr/bin/docker-buildx # Create and use Docker Buildx builder docker-buildx create --use --name buildx # Login to Package Registry echo "${{ secrets.TOKEN }}" | docker login git.opnxng.com -u ${{ gitea.repository_owner }} --password-stdin # Build and push Docker image mkdir temp cd temp git clone ${REMOTE_REPO} . git checkout base # Use base branch to build the base image docker-buildx build \ --platform ${BUILD_PLATFORM} \ -t git.opnxng.com/${{ gitea.repository_owner }}/searxng:base \ -f ./Dockerfile \ --push . && \ curl -H prio:low -d "Built and pushed ${REPO_NAME}" https://ntfy.opnxng.com/build || \ { curl -H tags:warning -H prio:high -d "Built and pushed ${REPO_NAME} failed!" https://ntfy.opnxng.com/build ; exit 1; } # Remove Docker Buildx builder docker-buildx rm buildx else echo "No new commit, skipped build" fi - name: Update stored commit run: | if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote --heads ${REMOTE_REPO} | grep "refs/heads/base" | awk '{print $1}') "https://nt.opnxng.com/${REPO_NAME}" # use base branch STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" else curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote --heads ${REMOTE_REPO} | grep "refs/heads/base" | awk '{print $1}') "https://nt.opnxng.com/${REPO_NAME}" # use base branch STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" exit 0 # Continue to next step no matter what fi #---------------------------------------------------------------------------------------------------- build-searxng: runs-on: runner container: image: docker:cli env: REPO_NAME: searxng steps: - name: Install packages run: apk --no-cache add curl git jq - name: Check latest upstream commit run: | STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) LATEST_COMMIT=$(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" echo "LATEST_COMMIT=${LATEST_COMMIT}" >> "$GITHUB_ENV" echo "Stored Commit: ${STORED_COMMIT}" echo "Latest Commit: ${LATEST_COMMIT}" - name: Build and push Docker image run: | if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then echo "Found a new commit, building new image" # Install Docker Buildx BUILDX_VERSION=$(wget -q -O- https://api.github.com/repos/docker/buildx/releases/latest | jq -r '.name') wget -O /usr/bin/docker-buildx https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.linux-arm64 chmod +x /usr/bin/docker-buildx # Create and use Docker Buildx builder docker-buildx create --use --name buildx # Login to Package Registry echo "${{ secrets.TOKEN }}" | docker login git.opnxng.com -u ${{ gitea.repository_owner }} --password-stdin # Build and push Docker image mkdir temp cd temp git clone ${REMOTE_REPO} . UPSTREAM_COMMIT=$(git ls-remote ${SEARXNG_REPO} | awk '{print $1}' | head -1) sed -i "s/UPSTREAM_COMMIT=.*/UPSTREAM_COMMIT=$UPSTREAM_COMMIT/" Dockerfile sed -i 's/FROM registry.paulgo.dev\/infra\/paulgoio\/searxng:base/FROM git.opnxng.com\/opnxng\/searxng:base/' Dockerfile # use git.opnxng.com/opnxng/searxng:base docker-buildx build \ --platform ${BUILD_PLATFORM} \ -t git.opnxng.com/${{ gitea.repository_owner }}/${REPO_NAME}:latest \ -f ./Dockerfile \ --push . && \ curl -H prio:low -d "Built and pushed ${REPO_NAME}" https://ntfy.opnxng.com/build || \ { curl -H tags:warning -H prio:high -d "Built and pushed ${REPO_NAME} failed!" https://ntfy.opnxng.com/build ; exit 1; } # Remove Docker Buildx builder docker-buildx rm buildx else echo "No new commit, skipped build" fi - name: Update stored commit run: | if [ "$STORED_COMMIT" != "$LATEST_COMMIT" ]; then curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) "https://nt.opnxng.com/${REPO_NAME}" STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" else curl -H "Authorization: Bearer ${{ secrets.NT }}" -d $(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1) "https://nt.opnxng.com/${REPO_NAME}" STORED_COMMIT=$(curl -H "Authorization: Bearer ${{ secrets.NT }}" -s "https://nt.opnxng.com/${REPO_NAME}/raw?poll=1" | tail -n 1) echo "STORED_COMMIT=${STORED_COMMIT}" >> "$GITHUB_ENV" exit 1 fi