PeerTube/.github/workflows/test.yml

111 lines
2.9 KiB
YAML
Raw Normal View History

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