PeerTube/.github/workflows/test.yml

112 lines
3.0 KiB
YAML
Raw Normal View History

2020-07-30 08:46:11 +02:00
name: Test Suite
on:
push:
pull_request:
2020-08-06 09:47:35 +02:00
types: [synchronize, opened]
schedule:
2020-07-31 09:13:13 +02:00
- cron: '0 3 * * 1-5'
2020-07-30 08:46:11 +02:00
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
2020-07-30 16:25:00 +02:00
ldap:
2021-01-04 11:38:33 +01:00
image: chocobozzz/docker-test-openldap
2020-07-30 16:25:00 +02:00
ports:
2021-01-04 11:38:33 +01:00
- 10389:10389
2020-07-30 16:25:00 +02:00
2020-07-30 08:46:11 +02:00
strategy:
fail-fast: false
2020-07-30 08:46:11 +02:00
matrix:
2021-06-17 10:43:34 +02:00
test_suite: [ client, api-1, api-2, api-3, api-4, cli-plugin, lint, external-plugins ]
2020-07-30 08:46:11 +02:00
env:
PGUSER: peertube
PGHOST: localhost
2021-05-07 14:48:39 +02:00
NODE_PENDING_JOB_WAIT: 250
2020-07-30 08:46:11 +02:00
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Setup system dependencies
run: |
2020-07-30 14:44:08 +02:00
sudo apt-get install postgresql-client-common redis-tools parallel
2020-11-06 16:43:43 +01:00
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
2020-07-30 08:46:11 +02:00
mkdir -p $HOME/bin
cp ffmpeg-*/{ffmpeg,ffprobe} $HOME/bin
2020-11-10 08:50:49 +01:00
echo "$HOME/bin" >> $GITHUB_PATH
2020-07-30 08:46:11 +02:00
- name: Cache Node.js modules
uses: actions/cache@v2
with:
path: |
**/node_modules
2020-07-30 08:46:11 +02:00
key: ${{ runner.OS }}-node-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
2020-08-24 16:37:47 +02:00
- 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 }}-
2020-07-30 08:46:11 +02:00
- name: Install dependencies
run: yarn install --frozen-lockfile
2020-07-30 16:58:32 +02:00
- name: Set env test variable (schedule)
if: github.event_name != 'schedule'
2020-07-30 16:58:32 +02:00
run: |
2020-11-10 08:50:49 +01:00
echo "DISABLE_HTTP_IMPORT_TESTS=true" >> $GITHUB_ENV
2020-07-30 08:46:11 +02:00
- name: Run Test
2020-07-31 09:13:13 +02:00
# external-plugins tests only run on schedule
if: github.event_name == 'schedule' || matrix.test_suite != 'external-plugins'
2021-02-18 14:44:12 +01:00
run: npm run ci -- ${{ matrix.test_suite }}
2020-07-30 08:46:11 +02:00
2020-12-10 16:08:26 +01:00
- name: Display errors
2021-01-04 10:52:27 +01:00
if: ${{ always() }}
2020-11-30 09:16:41 +01:00
run: |
( \
test -f dist/scripts/parse-log.js && \
cat *-ci.log | uniq -c && \
NODE_ENV=test node dist/scripts/parse-log.js -l error -f artifacts/*.log \
) || \
2020-12-10 16:38:12 +01:00
echo "parse-log.js script does not exist, skipping."
2020-11-30 09:16:41 +01:00
2020-07-30 08:46:11 +02:00
- name: Upload logs
uses: actions/upload-artifact@v2
if: failure()
with:
name: test-storages-${{ matrix.test_suite }}
2020-12-10 11:24:17 +01:00
path: artifacts
retention-days: 7