# SPDX-FileCopyrightText: 2021 Robin Appelman # SPDX-License-Identifier: MIT on: pull_request: push: branches: - main - master name: CI jobs: checks: name: Nix checks runs-on: nix steps: - uses: actions/checkout@v4 - uses: https://codeberg.org/icewind/attic-action@v1 with: name: link instance: https://cache.icewind.link authToken: "${{ secrets.ATTIC_TOKEN }}" - run: nix flake check --keep-going php-versions: runs-on: nix name: Unit tests - PHP ${{ matrix.php-version }} strategy: fail-fast: false matrix: php-version: - "82" - "83" - "84" services: samba: image: "servercontainers/samba" env: ACCOUNT_test: test UID_test: 1000 SAMBA_VOLUME_CONFIG_test: "[test]; path=/tmp; valid users = test; guest ok = no; read only = no; browseable = yes" steps: - uses: actions/checkout@v4 - uses: https://codeberg.org/icewind/attic-action@v1 with: name: link instance: https://cache.icewind.link authToken: "${{ secrets.ATTIC_TOKEN }}" - name: Composer run: | cp -r $(nix build .#vendor --print-out-paths --no-link)/vendor vendor - name: Config run: | echo '{"host": "samba","user": "test","password": "test","share": "test","root": ""}' > tests/config.json - name: Setup phpunit run: | nix build .#apps.x86_64-linux.phpunit${{ matrix.php-version }}.program - name: PHPUnit Tests - smbclient run: nix run .#phpunit${{ matrix.php-version }} -- tests -c tests/phpunit.xml env: BACKEND: smbclient - name: PHPUnit Tests - libsmbclient run: | mkdir -p /var/lock nix run .#phpunit${{ matrix.php-version }} -- tests -c tests/phpunit.xml env: BACKEND: libsmbclient smb-versions: runs-on: ubuntu-22.04 name: Unit tests - Samba ${{ matrix.server-version }} - smbclient ${{ matrix.client-version }} strategy: fail-fast: false matrix: client-version: - "4.21.4" - "4.20.4" - "4.19.5" - "4.18.1" - "4.17.7" - "4.16.10" - "4.15.13" - "4.14.9" - "4.11.17" server-version: - "latest" - "4.9.4" - "4.8.5" services: samba: image: "servercontainers/samba:${{ matrix.server-version }}" env: ACCOUNT_test: test UID_test: 1000 SAMBA_VOLUME_CONFIG_test: "[test]; path=/tmp; valid users = test; guest ok = no; read only = no; browseable = yes" steps: - name: Setup smbclient env: DEBIAN_FRONTEND: noninteractive run: | sudo apt-get update sudo apt install -y libjansson4 libcap2 libbsd0 libreadline8 libicu70 sudo mkdir -p /etc/samba /var/lib/samba/private echo "[global]\nclient min protocol = SMB2\nclient max protocol = SMB3" | sudo tee /etc/samba/smb.conf sudo wget "https://github.com/icewind1991/smbclient-builder/releases/download/v0.2.0/smbclient-${{ matrix.client-version }}" -O /usr/local/bin/smbclient sudo chmod +x /usr/local/bin/smbclient - uses: actions/checkout@v4 - name: Setup PHP uses: https://github.com/shivammathur/setup-php@v2 with: php-version: 8.2 extensions: apcu, smbclient - name: Composer run: composer install - name: Config run: | echo '{"host": "samba","user": "test","password": "test","share": "test","root": ""}' > tests/config.json - name: PHPUnit Tests uses: https://github.com/nick-invision/retry@v2 with: timeout_minutes: 2 max_attempts: 3 retry_on: timeout command: php ./vendor/bin/phpunit tests -c tests/phpunit.xml env: BACKEND: smbclient alpine-test: runs-on: alpine-latest name: Unit tests (alpine) services: samba: image: "servercontainers/samba" env: ACCOUNT_test: test UID_test: 1000 SAMBA_VOLUME_CONFIG_test: "[test]; path=/tmp; valid users = test; guest ok = no; read only = no; browseable = yes" steps: - uses: actions/checkout@v4 - name: Install dependencies shell: sh run: | apk add bash sudo git coreutils samba-client php composer php-curl php-iconv php-mbstring php-openssl php-zip php-phar php-tokenizer php-dom php-xml php-xmlwriter - name: Composer run: composer install - name: Config run: | echo '{"host": "samba","user": "test","password": "test","share": "test","root": ""}' > tests/config.json - name: PHPUnit Tests - smbclient uses: https://github.com/nick-invision/retry@v2 with: timeout_minutes: 2 max_attempts: 3 retry_on: timeout command: php ./vendor/bin/phpunit tests -c tests/phpunit.xml env: BACKEND: smbclient