name: Test Suite on: push: branches: - develop - master pull_request: types: [synchronize, opened] schedule: - cron: '0 3 * * 1-5' jobs: test: runs-on: ubuntu-latest services: redis: image: redis ports: - 6379:6379 postgres: image: postgres:9.6 ports: - 5432:5432 env: POSTGRES_USER: peertube POSTGRES_HOST_AUTH_METHOD: trust ldap: image: rroemhild/test-openldap ports: - 389:389 strategy: fail-fast: false matrix: test_suite: [ misc, api-1, api-2, api-3, api-4, cli, lint, external-plugins ] env: PGUSER: peertube PGHOST: localhost NODE_PENDING_JOB_WAIT: 2000 steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '12.x' - name: Setup system dependencies run: | sudo apt-get install postgresql-client-common redis-tools parallel wget --quiet --no-check-certificate "https://download.cpy.re/ffmpeg/ffmpeg-release-4.3.1-64bit-static.tar.xz" tar xf ffmpeg-release-4.3.1-64bit-static.tar.xz mkdir -p $HOME/bin cp ffmpeg-*/{ffmpeg,ffprobe} $HOME/bin echo "$HOME/bin" >> $GITHUB_PATH - name: Cache Node.js modules uses: actions/cache@v2 with: path: | **/node_modules key: ${{ runner.OS }}-node-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.OS }}-node- ${{ runner.OS }}- - name: Cache fixtures uses: actions/cache@v2 with: path: | fixtures key: ${{ runner.OS }}-fixtures-${{ matrix.test_suite }}-${{ hashFiles('fixtures/*') }} restore-keys: | ${{ runner.OS }}-fixtures-${{ matrix.test_suite }}- ${{ runner.OS }}-fixtures- ${{ runner.OS }}- - name: Install dependencies run: yarn install --frozen-lockfile - name: Set env test variable (schedule) if: github.event_name != 'schedule' run: | echo "DISABLE_HTTP_IMPORT_TESTS=true" >> $GITHUB_ENV - name: Run Test # external-plugins tests only run on schedule if: github.event_name == 'schedule' || matrix.test_suite != 'external-plugins' run: NODE_PENDING_JOB_WAIT=2000 npm run ci -- ${{ matrix.test_suite }} - name: Display errors if: ${{ always() }} run: | (test -f dist/scripts/parse-log.js && NODE_ENV=test node dist/scripts/parse-log.js -l error -f artifacts/*.log) || \ echo "parse-log.js script does not exist, skipping." - name: Upload logs uses: actions/upload-artifact@v2 if: failure() with: name: test-storages-${{ matrix.test_suite }} path: artifacts retention-days: 7