2023-11-04 06:38:42 +08:00
name : searxng
2023-11-15 02:36:12 +08:00
#run-name: searxng
2023-11-04 06:38:42 +08:00
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 :
2023-11-09 18:17:53 +08:00
- ".gitea/workflows/searxng.yaml"
2023-11-04 06:38:42 +08:00
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 || \
2023-11-11 18:04:44 +08:00
{ curl -H tags:warning -H prio:high -d "Built and pushed ${REPO_NAME} failed!" https://ntfy.opnxng.com/build ; exit 1; }
2023-11-04 06:38:42 +08:00
# 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)
2023-11-29 06:16:19 +08:00
# LATEST_COMMIT=$(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1)
# Use upstream SearXNG repo
LATEST_COMMIT=$(git ls-remote ${SEARXNG_REPO} | awk '{print $1}' | head -1)
2023-11-04 06:38:42 +08:00
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} .
2024-02-08 09:10:45 +08:00
# UPSTREAM_COMMIT=$(git ls-remote ${REMOTE_REPO} | awk '{print $1}' | head -1)
2023-11-04 06:38:42 +08:00
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 || \
2023-11-11 18:04:44 +08:00
{ curl -H tags:warning -H prio:high -d "Built and pushed ${REPO_NAME} failed!" https://ntfy.opnxng.com/build ; exit 1; }
2023-11-04 06:38:42 +08:00
# 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
2023-11-15 01:18:48 +08:00
fi