summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/container.yml183
-rw-r--r--.github/workflows/integration.yml46
2 files changed, 183 insertions, 46 deletions
diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml
new file mode 100644
index 000000000..d232a0737
--- /dev/null
+++ b/.github/workflows/container.yml
@@ -0,0 +1,183 @@
+---
+name: Container
+
+# yamllint disable-line rule:truthy
+on:
+ workflow_dispatch:
+ workflow_run:
+ workflows:
+ - Integration
+ types:
+ - completed
+ branches:
+ - master
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref_name }}
+ cancel-in-progress: false
+
+permissions:
+ contents: read
+ # Organization GHCR
+ packages: read
+
+env:
+ PYTHON_VERSION: "3.13"
+
+jobs:
+ build:
+ if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
+ name: Build (${{ matrix.arch }})
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - arch: amd64
+ os: ubuntu-24.04
+ emulation: false
+ - arch: arm64
+ os: ubuntu-24.04-arm
+ emulation: false
+ - arch: armv7
+ os: ubuntu-24.04-arm
+ emulation: true
+
+ permissions:
+ # Organization GHCR
+ packages: write
+
+ outputs:
+ version_string: ${{ steps.build.outputs.version_string }}
+ version_tag: ${{ steps.build.outputs.version_tag }}
+ docker_tag: ${{ steps.build.outputs.docker_tag }}
+ git_url: ${{ steps.build.outputs.git_url }}
+ git_branch: ${{ steps.build.outputs.git_branch }}
+
+ steps:
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: "${{ env.PYTHON_VERSION }}"
+
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: "false"
+
+ - name: Setup cache Python
+ uses: actions/cache@v4
+ with:
+ key: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-${{ hashFiles('./requirements*.txt') }}"
+ restore-keys: "python-${{ env.PYTHON_VERSION }}-${{ runner.arch }}-"
+ path: "./local/"
+
+ - name: Setup cache container mounts
+ uses: actions/cache@v4
+ with:
+ # yamllint disable-line rule:line-length
+ key: "container-mounts-${{ matrix.arch }}-${{ hashFiles('./container/Dockerfile ./container/legacy/Dockerfile') }}"
+ restore-keys: "container-mounts-${{ matrix.arch }}-"
+ path: |
+ /var/tmp/buildah-cache/
+ /var/tmp/buildah-cache-*/
+
+ - if: ${{ matrix.emulation }}
+ name: Setup QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Login to GHCR
+ uses: docker/login-action@v3
+ with:
+ registry: "ghcr.io"
+ username: "${{ github.repository_owner }}"
+ password: "${{ secrets.GITHUB_TOKEN }}"
+
+ - name: Build
+ id: build
+ env:
+ OVERRIDE_ARCH: "${{ matrix.arch }}"
+ run: make podman.build
+
+ test:
+ name: Test (${{ matrix.arch }})
+ runs-on: ${{ matrix.os }}
+ needs: build
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - arch: amd64
+ os: ubuntu-24.04
+ emulation: false
+ - arch: arm64
+ os: ubuntu-24.04-arm
+ emulation: false
+ - arch: armv7
+ os: ubuntu-24.04-arm
+ emulation: true
+
+ permissions:
+ # Organization GHCR
+ packages: write
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: "false"
+
+ - if: ${{ matrix.emulation }}
+ name: Setup QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Login to GHCR
+ uses: docker/login-action@v3
+ with:
+ registry: "ghcr.io"
+ username: "${{ github.repository_owner }}"
+ password: "${{ secrets.GITHUB_TOKEN }}"
+
+ - name: Test
+ env:
+ OVERRIDE_ARCH: "${{ matrix.arch }}"
+ GIT_URL: "${{ needs.build.outputs.git_url }}"
+ run: make container.test
+
+ release:
+ if: github.repository_owner == 'searxng' && github.ref_name == 'master'
+ name: Release
+ runs-on: ubuntu-24.04-arm
+ needs:
+ - build
+ - test
+
+ steps:
+ - if: env.DOCKERHUB_USERNAME != ''
+ name: Checkout
+ uses: actions/checkout@v4
+ with:
+ persist-credentials: "false"
+
+ - if: env.DOCKERHUB_USERNAME != ''
+ name: Login to GHCR
+ uses: docker/login-action@v3
+ with:
+ registry: "ghcr.io"
+ username: "${{ github.repository_owner }}"
+ password: "${{ secrets.GITHUB_TOKEN }}"
+
+ - if: env.DOCKERHUB_USERNAME != ''
+ name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ registry: "docker.io"
+ username: "${{ env.DOCKERHUB_USERNAME }}"
+ password: "${{ secrets.DOCKERHUB_TOKEN }}"
+
+ - if: env.DOCKERHUB_USERNAME != ''
+ name: Release
+ env:
+ GIT_URL: "${{ needs.build.outputs.git_url }}"
+ DOCKER_TAG: "${{ needs.build.outputs.docker_tag }}"
+ run: make container.push
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index abdaf0c18..b40ae26ab 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -94,49 +94,3 @@ jobs:
- name: Build
run: make themes.all
-
- dockers:
- name: Docker
- if: github.ref == 'refs/heads/master'
- needs:
- - test
- - theme
- env:
- DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
- runs-on: ubuntu-24.04
- steps:
- - name: Checkout
- if: env.DOCKERHUB_USERNAME != null
- uses: actions/checkout@v4
- with:
- # make sure "make docker.push" can get the git history
- fetch-depth: '0'
- - name: Set up Python
- uses: actions/setup-python@v5
- with:
- python-version: '3.12'
- architecture: 'x64'
- - name: Cache Python dependencies
- id: cache-python
- uses: actions/cache@v4
- with:
- path: |
- ./local
- ./.nvm
- ./node_modules
- key: python-ubuntu-20.04-3.12-${{ hashFiles('requirements*.txt', 'setup.py','.nvmrc', 'package.json') }}
- - name: Set up QEMU
- if: env.DOCKERHUB_USERNAME != null
- uses: docker/setup-qemu-action@v1
- - name: Set up Docker Buildx
- if: env.DOCKERHUB_USERNAME != null
- uses: docker/setup-buildx-action@v1
- - name: Login to DockerHub
- if: env.DOCKERHUB_USERNAME != null
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_USERNAME }}
- password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Build and push
- if: env.DOCKERHUB_USERNAME != null
- run: make -e GIT_URL=$(git remote get-url origin) docker.buildx