123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- name: Test
- permissions: {}
- on:
- push:
- 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:10
- ports:
- - 5432:5432
- env:
- POSTGRES_USER: peertube
- POSTGRES_HOST_AUTH_METHOD: trust
- ldap:
- image: chocobozzz/docker-test-openldap
- ports:
- - 10389:10389
- s3ninja:
- image: chocobozzz/s3-ninja
- ports:
- - 9444:9000
- strategy:
- fail-fast: false
- matrix:
- test_suite: [ types-package, client, api-1, api-2, api-3, api-4, api-5, transcription, cli-plugin, lint, external-plugins ]
- env:
- PGUSER: peertube
- PGHOST: localhost
- NODE_PENDING_JOB_WAIT: 250
- ENABLE_OBJECT_STORAGE_TESTS: true
- # Github runner IPs are blocked by youtube
- DISABLE_HTTP_YOUTUBE_IMPORT_TESTS: true
- ENABLE_FFMPEG_THUMBNAIL_PIXEL_COMPARISON_TESTS: true
- OBJECT_STORAGE_SCALEWAY_KEY_ID: ${{ secrets.OBJECT_STORAGE_SCALEWAY_KEY_ID }}
- OBJECT_STORAGE_SCALEWAY_ACCESS_KEY: ${{ secrets.OBJECT_STORAGE_SCALEWAY_ACCESS_KEY }}
- YOUTUBE_DL_DOWNLOAD_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- YOUTUBE_DL_PROXY: ${{ secrets.YOUTUBE_DL_PROXY }}
- steps:
- - uses: actions/checkout@v4
- - uses: './.github/actions/reusable-prepare-peertube-build'
- with:
- node-version: '18.x'
- - uses: './.github/actions/reusable-prepare-peertube-run'
- - name: Cache fixtures
- uses: actions/cache@v4
- 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: Cache PeerTube pip directory
- uses: actions/cache@v4
- with:
- path: |
- ~/.cache/pip
- key: ${{ runner.OS }}-${{ matrix.test_suite }}-pip-v1
- - name: Cache Hugging Face models
- uses: actions/cache@v4
- with:
- path: |
- ~/.cache/huggingface
- key: ${{ runner.OS }}-${{ matrix.test_suite }}-hugging-face-v1
- - 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'
- env:
- AKISMET_KEY: ${{ secrets.AKISMET_KEY }}
- run: 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@v4
- if: failure()
- with:
- name: test-storages-${{ matrix.test_suite }}
- path: artifacts
- retention-days: 7
|