summaryrefslogtreecommitdiff
path: root/manage
diff options
context:
space:
mode:
authorIvan Gabaldon <igabaldon@inetol.net>2025-05-11 18:12:51 +0200
committerGitHub <noreply@github.com>2025-05-11 18:12:51 +0200
commitd16854e67a5bf2f640aabf119c9b50f5a1a3f24f (patch)
tree3c60e7f7fced18e5ff79f60e41968ab8e5dd2c88 /manage
parent1b787ed35e9c51e335c42faee1f76695780ba4cb (diff)
[mod] rework container deployment (#4764)
container.yml will run after integration.yml COMPLETES successfully and in master branch. Style changes, cleanup and improved integration with CI by leveraging the use of shared cache between all workflows. * Podman is now supported to build the container images (Docker also received a refactor, merging both build and buildx) * Container images are being built by Buildah instead of Docker BuildKit. * Container images are tested before release. * Splitting "modern" (amd64 & arm64) and "legacy" (armv7) arches on different Dockerfiles allowing future optimizations.
Diffstat (limited to 'manage')
-rwxr-xr-xmanage91
1 files changed, 4 insertions, 87 deletions
diff --git a/manage b/manage
index 61bc68b74..ee2a29281 100755
--- a/manage
+++ b/manage
@@ -11,6 +11,9 @@ source "$(dirname "${BASH_SOURCE[0]}")/utils/lib.sh"
# shellcheck source=utils/lib.sh
source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_nvm.sh"
+# shellcheck source=utils/lib_sxng_container.sh
+source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_container.sh"
+
# shellcheck source=utils/lib_sxng_data.sh
source "$(dirname "${BASH_SOURCE[0]}")/utils/lib_sxng_data.sh"
@@ -77,9 +80,6 @@ docs.:
gh-pages : deploy on gh-pages branch
prebuild : build reST include files (./${DOCS_BUILD}/includes)
clean : clean documentation build
-docker.:
- build : build docker image
- push : build and push docker image
gecko.driver:
download & install geckodriver if not already installed (required for
robot_tests)
@@ -101,6 +101,7 @@ EOF
go.help
node.help
weblate.help
+ container.help
data.help
test.help
themes.help
@@ -136,90 +137,6 @@ webapp.run() {
SEARXNG_DEBUG=1 pyenv.cmd python -m searx.webapp
}
-docker.push() {
- docker.build push
-}
-
-docker.buildx() {
- docker.build buildx
-}
-
-# shellcheck disable=SC2119
-docker.build() {
- pyenv.install
-
- local SEARXNG_GIT_VERSION
- local VERSION_GITCOMMIT
- local GITHUB_USER
- local SEARXNG_IMAGE_NAME
- local BUILD
-
- build_msg DOCKER build
- # run installation in a subprocess and activate pyenv
-
- # See https://www.shellcheck.net/wiki/SC1001 and others ..
- # shellcheck disable=SC2031,SC2230,SC2002,SC2236,SC2143,SC1001
- ( set -e
- pyenv.activate
-
- # Check if it is a git repository
- if [ ! -d .git ]; then
- die 1 "This is not Git repository"
- fi
- if [ ! -x "$(which git)" ]; then
- die 1 "git is not installed"
- fi
-
- if ! git remote get-url origin 2> /dev/null; then
- die 1 "there is no remote origin"
- fi
-
- # This is a git repository
- git update-index -q --refresh
- python -m searx.version freeze
- eval "$(python -m searx.version)"
-
- # Get the last git commit id
- VERSION_GITCOMMIT=$(echo "$VERSION_TAG" | cut -d+ -f2)
- build_msg DOCKER "Last commit : $VERSION_GITCOMMIT"
-
- # define the docker image name
- GITHUB_USER=$(echo "${GIT_URL}" | sed 's/.*github\.com\/\([^\/]*\).*/\1/')
- SEARXNG_IMAGE_NAME="${SEARXNG_IMAGE_NAME:-${GITHUB_USER:-searxng}/searxng}"
-
- BUILD="build"
- if [ "$1" = "buildx" ]; then
- # buildx includes the push option
- CACHE_TAG="${SEARXNG_IMAGE_NAME}:latest-build-cache"
- BUILD="buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 --push --cache-from=type=registry,ref=$CACHE_TAG --cache-to=type=registry,ref=$CACHE_TAG,mode=max"
- shift
- fi
- build_msg DOCKER "Build command: ${BUILD}"
-
- # build Docker image
- build_msg DOCKER "Building image ${SEARXNG_IMAGE_NAME}:${SEARXNG_GIT_VERSION}"
- # shellcheck disable=SC2086
- docker $BUILD \
- --build-arg BASE_IMAGE="${DEPENDENCIES_IMAGE_NAME}" \
- --build-arg GIT_URL="${GIT_URL}" \
- --build-arg SEARXNG_DOCKER_TAG="${DOCKER_TAG}" \
- --build-arg SEARXNG_GIT_VERSION="${VERSION_STRING}" \
- --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \
- --build-arg LABEL_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
- --build-arg LABEL_VCS_REF="$(git rev-parse HEAD)" \
- --build-arg LABEL_VCS_URL="${GIT_URL}" \
- --build-arg TIMESTAMP_SETTINGS="$(git log -1 --format="%cd" --date=unix -- searx/settings.yml)" \
- --build-arg TIMESTAMP_UWSGI="$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini)" \
- -t "${SEARXNG_IMAGE_NAME}:latest" -t "${SEARXNG_IMAGE_NAME}:${DOCKER_TAG}" .
-
- if [ "$1" = "push" ]; then
- docker push "${SEARXNG_IMAGE_NAME}:latest"
- docker push "${SEARXNG_IMAGE_NAME}:${DOCKER_TAG}"
- fi
- )
- dump_return $?
-}
-
# shellcheck disable=SC2119
gecko.driver() {
pyenv.install