Skip to content

Merge pull request #378 from nextcloud/unscannable #290

Merge pull request #378 from nextcloud/unscannable

Merge pull request #378 from nextcloud/unscannable #290

Workflow file for this run

# SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Scanner
on:
pull_request:
push:
branches:
- master
- stable*
permissions:
contents: read
env:
APP_NAME: files_antivirus
jobs:
matrix:
runs-on: ubuntu-latest
outputs:
php-max: ${{ steps.versions.outputs.php-max-list }}
server-max: ${{ steps.versions.outputs.branches-max-list }}
steps:
- name: Checkout app
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Get version matrix
id: versions
uses: icewind1991/nextcloud-version-matrix@c2bf575a3516752db5ce2915499d3f694885e2c7 # master
icap-clamav:
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:
php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }}
server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
databases: ['sqlite']
transport: ['plain', 'tls']
name: icap-clamav-${{ matrix.transport }}
services:
clam:
image: ghcr.io/icewind1991/icap-clamav-service-tls
ports:
- 1344:1344
steps:
- name: Checkout server
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable --force ${{ env.APP_NAME }}
./occ config:system:set allow_local_remote_servers --type boolean --value true
- name: PHPUnit reqmod
working-directory: apps/${{ env.APP_NAME }}
env:
ICAP_HOST: localhost
ICAP_PORT: ${{ matrix.transport == 'tls' && '1345' || '1344' }}
ICAP_TRANSPORT: ${{ matrix.transport }}
ICAP_REQUEST: avscan
ICAP_HEADER: X-Infection-Found
ICAP_MODE: reqmod
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml tests/Scanner/ICAPTest.php
- name: PHPUnit respmod
working-directory: apps/${{ env.APP_NAME }}
env:
ICAP_HOST: localhost
ICAP_PORT: ${{ matrix.transport == 'tls' && '1345' || '1344' }}
ICAP_TRANSPORT: ${{ matrix.transport }}
ICAP_REQUEST: avscan
ICAP_HEADER: X-Infection-Found
ICAP_MODE: respmod
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml tests/Scanner/ICAPTest.php
icap-kaspersky:
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:
php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }}
server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
databases: ['sqlite']
name: icap-kaspersky
services:
kaspersky:
image: ghcr.io/icewind1991/kaspersky-cap:latest
credentials:
username: icewind1991
password: ${{ secrets.ghcr_password }}
ports:
- 1344:1344
steps:
- name: Checkout server
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable --force ${{ env.APP_NAME }}
./occ config:system:set allow_local_remote_servers --type boolean --value true
- name: PHPUnit
working-directory: apps/${{ env.APP_NAME }}
env:
ICAP_HOST: localhost
ICAP_PORT: 1344
ICAP_REQUEST: req
ICAP_HEADER: X-Virus-ID
ICAP_MODE: reqmod
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml tests/Scanner/ICAPTest.php
kaspersky:
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:
php-versions: ${{ fromJson(needs.matrix.outputs.php-max) }}
server-versions: ${{ fromJson(needs.matrix.outputs.server-max) }}
databases: ['sqlite']
name: kaspersky
services:
kaspersky:
image: ghcr.io/icewind1991/kaspersky:latest
credentials:
username: icewind1991
password: ${{ secrets.ghcr_password }}
ports:
- 1234:80
steps:
- name: Checkout server
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
submodules: true
repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Checkout app
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
with:
path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
with:
php-version: ${{ matrix.php-versions }}
tools: phpunit
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
./occ app:enable --force ${{ env.APP_NAME }}
./occ config:system:set allow_local_remote_servers --type boolean --value true
- name: PHPUnit
working-directory: apps/${{ env.APP_NAME }}
env:
KASPERSKY_HOST: localhost
KASPERSKY_PORT: 1234
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml tests/Scanner/ExternalKasperskyTest.php
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [kaspersky, icap-kaspersky, icap-clamav]
if: always()
name: phpunit-scanner-summary
steps:
- name: Summary status
run: if ${{ needs.kaspersky.result != 'success' }} || ${{ needs.icap-kaspersky.result != 'success' }} || ${{ needs.icap-clamav.result != 'success' }}; then exit 1; fi