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