Browse Source

[mod] use github actions instead of travis

fix https://github.com/searx/searx/issues/2279
Alexandre Flament 4 years ago
parent
commit
9c25cd99c4
5 changed files with 114 additions and 92 deletions
  1. 1 10
      .coveragerc
  2. 110 0
      .github/workflows/integration.yml
  3. 0 77
      .travis.yml
  4. 1 1
      requirements.txt
  5. 2 4
      tests/unit/test_standalone_searx.py

+ 1 - 10
.coveragerc

@@ -1,15 +1,6 @@
 [run]
 [run]
 branch = True
 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]
 [report]
 show_missing = True
 show_missing = True

+ 110 - 0
.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

+ 0 - 77
.travis.yml

@@ -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

+ 1 - 1
requirements.txt

@@ -4,7 +4,7 @@ flask-babel==1.0.0
 flask==1.1.2
 flask==1.1.2
 idna==2.10
 idna==2.10
 jinja2==2.11.1
 jinja2==2.11.1
-lxml==4.5.0
+lxml==4.6.1
 pygments==2.1.3
 pygments==2.1.3
 pyopenssl==19.1.0
 pyopenssl==19.1.0
 python-dateutil==2.8.0
 python-dateutil==2.8.0

+ 2 - 4
tests/unit/test_standalone_searx.py

@@ -28,8 +28,7 @@ class StandaloneSearx(SearxTestCase):
 
 
     @classmethod
     @classmethod
     def setUpClass(cls):
     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)
         initialize_engines(engine_list)
 
 
@@ -103,8 +102,7 @@ class StandaloneSearx(SearxTestCase):
         args = sas.parse_argument(['rain', ])
         args = sas.parse_argument(['rain', ])
         search_q = sas.get_search_query(args)
         search_q = sas.get_search_query(args)
         self.assertTrue(search_q)
         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))
                          ['general'], 'all', 0, 1, None, None, None))
 
 
     def test_no_parsed_url(self):
     def test_no_parsed_url(self):