From 9c25cd99c4b2bbeeb96f0a4efc3b2c21b06e1881 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Mon, 16 Nov 2020 15:01:34 +0100 Subject: [PATCH] [mod] use github actions instead of travis fix https://github.com/searx/searx/issues/2279 --- .coveragerc | 11 +-- .github/workflows/integration.yml | 110 ++++++++++++++++++++++++++++ .travis.yml | 77 ------------------- requirements.txt | 2 +- tests/unit/test_standalone_searx.py | 6 +- 5 files changed, 114 insertions(+), 92 deletions(-) create mode 100644 .github/workflows/integration.yml delete mode 100644 .travis.yml diff --git a/.coveragerc b/.coveragerc index 4f50efc40..8540bec3c 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,15 +1,6 @@ [run] branch = True -source = - searx/engines - searx/__init__.py - searx/autocomplete.py - searx/https_rewrite.py - searx/languages.py - searx/search.py - searx/testing.py - searx/utils.py - searx/webapp.py +source = searx [report] show_missing = True diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml new file mode 100644 index 000000000..c61385a09 --- /dev/null +++ b/.github/workflows/integration.yml @@ -0,0 +1,110 @@ +name: Integration + +on: [push, pull_request] + +jobs: + python: + name: Python ${{ matrix.python-version }} + runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest] + python-version: [3.5, 3.6, 3.7, 3.8] + steps: + - name: Checkout πŸ›ŽοΈ + uses: actions/checkout@v2 + - name: Install Ubuntu packages 🧰 + run: | + sudo ./utils/searx.sh install packages + sudo apt install firefox + - name: Set up Python 🧰 + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + architecture: 'x64' + - name: Install Python dependencies 🧰 + run: | + make V=1 install + make V=1 gecko.driver + - name: Run tests πŸ—οΈ + run: make V=1 test + - name: Test coverage πŸ—ΊοΈ + run: make V=1 test.coverage + - name: Store coverage result πŸ—ΊοΈ + uses: actions/upload-artifact@v2 + with: + name: coverage-${{ matrix.python-version }} + path: coverage/ + retention-days: 60 + + themes: + name: Themes + runs-on: ubuntu-latest + steps: + - name: Checkout πŸ›ŽοΈ + uses: actions/checkout@v2 + - name: Install Ubuntu packages 🧰 + run: sudo ./utils/searx.sh install packages + - name: Install node dependencies 🧰 + run: make V=1 node.env + - name: Build themes πŸ—οΈ + run: make V=1 themes + + documentation: + name: Documentation + runs-on: ubuntu-latest + steps: + - name: Checkout πŸ›ŽοΈ + uses: actions/checkout@v2 + with: + persist-credentials: false + - name: Install Ubuntu packages 🧰 + run: sudo ./utils/searx.sh install buildhost + - name: Set up Python 🧰 + uses: actions/setup-python@v2 + with: + python-version: '3.9' + architecture: 'x64' + - name: Build documentation πŸ—οΈ + run: SEARX_DEBUG=1 make V=1 travis-gh-pages + - name: Deploy πŸš€ + if: github.ref == 'ref/head/master' + uses: JamesIves/github-pages-deploy-action@e774cc50ed6e8e667bca6a331d2a3ba80c79debc + with: + GITHUB_TOKEN: ${{ github.token }} + BRANCH: gh-pages + FOLDER: gh-pages + CLEAN: true # Automatically remove deleted files from the deploy branch + + dockers: + name: Docker + if: github.ref == 'ref/head/master' + needs: + - python + - themes + - documentation + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + runs-on: ubuntu-latest + steps: + - name: Checkout πŸ›ŽοΈ + if: env.DOCKERHUB_USERNAME != null + uses: actions/checkout@v2 + with: + # make sure "make docker.push" can get the git history + fetch-depth: '0' + - 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.push diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 951f292b2..000000000 --- a/.travis.yml +++ /dev/null @@ -1,77 +0,0 @@ -os: linux -dist: bionic -language: python -cache: - - directories: - - $HOME/.cache/pip -addons: - firefox: "latest" - -install: - - env - - which python; python --version - - make V=1 install - - make V=1 gecko.driver - - make V=1 node.env - - make V=1 travis.codecov -script: - - make V=1 themes - - make V=1 test -after_success: - - make V=1 test.coverage - - codecov - -stages: - - test - - name: documentation - if: env(GITHUB_TOKEN) IS present - - name: docker - if: branch = master AND type != pull_request AND env(DOCKER_USERNAME) IS present - -jobs: - include: - - python: "3.5" - - python: "3.6" - - python: "3.7" - - python: "3.8" - - stage: documentation - python: "3.8" - addons: [] - before_install: - - sudo ./utils/searx.sh install buildhost - install: true - script: - - SEARX_DEBUG=1 make travis-gh-pages - after_success: true - deploy: - provider: pages - edge: false - token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable - strategy: git - skip_cleanup: true - keep_history: true - local_dir: gh-pages - target_branch: gh-pages - on: - branch: master - - stage: docker - python: "3.8" - git: - depth: false - services: - - docker - addons: [] - before_install: true - install: true - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - make -e GIT_URL=$(git remote get-url origin) docker.push - after_success: true - -notifications: - irc: - channels: - - "irc.freenode.org#searx" - template: - - "%{repository}/#%{build_number}/%{branch} (%{author}): %{message} %{build_url}" - on_success: change diff --git a/requirements.txt b/requirements.txt index a3350d2d2..51a4fff72 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ flask-babel==1.0.0 flask==1.1.2 idna==2.10 jinja2==2.11.1 -lxml==4.5.0 +lxml==4.6.1 pygments==2.1.3 pyopenssl==19.1.0 python-dateutil==2.8.0 diff --git a/tests/unit/test_standalone_searx.py b/tests/unit/test_standalone_searx.py index 40d43e4e7..74e31369f 100644 --- a/tests/unit/test_standalone_searx.py +++ b/tests/unit/test_standalone_searx.py @@ -28,8 +28,7 @@ class StandaloneSearx(SearxTestCase): @classmethod def setUpClass(cls): - engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'}, - {'engine': 'dummy', 'name': 'engine2', 'shortcut': 'e2'}] + engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'}] initialize_engines(engine_list) @@ -103,8 +102,7 @@ class StandaloneSearx(SearxTestCase): args = sas.parse_argument(['rain', ]) search_q = sas.get_search_query(args) self.assertTrue(search_q) - self.assertEqual(search_q, SearchQuery('rain', [EngineRef('engine1', 'general', False), - EngineRef('engine2', 'general', False)], + self.assertEqual(search_q, SearchQuery('rain', [EngineRef('engine1', 'general', False)], ['general'], 'all', 0, 1, None, None, None)) def test_no_parsed_url(self):