aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/benchmark.yml
blob: f02b88a4215f9e71ee5b0e50951f67107e3a4a77 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: Benchmark

on:
  push:
    branches:
      - ci
  schedule:
    - cron: '0 */12 * * *'

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

    env:
      PGUSER: peertube
      PGHOST: localhost

    steps:
      - uses: actions/checkout@v2

      - uses: './.github/actions/reusable-prepare-peertube-build'
        with:
          node-version: '12.x'

      - uses: './.github/actions/reusable-prepare-peertube-run'

      - name: Build
        run: |
          startClient=`date +%s`
          npm run build:client
          endClient=`date +%s`
          clientBuildTime=$((endClient-startClient))

          startServer=`date +%s`
          npm run build:server
          endServer=`date +%s`
          serverBuildTime=$((endServer-startServer))

          echo '{"clientBuildTime":'$clientBuildTime',"serverBuildTime":'$serverBuildTime'}'> build-time.json

      - name: Startup
        run: |
          npm run clean:server:test

          startCold=`date +%s%3N`
          NODE_APP_INSTANCE=1 NODE_ENV=test node dist/server --benchmark-startup
          endCold=`date +%s%3N`
          coldStartupTime=$(echo "scale=2; ($endCold-$startCold)/1000" | bc)

          startHot=`date +%s%3N`
          NODE_APP_INSTANCE=1 NODE_ENV=test node dist/server --benchmark-startup
          endHot=`date +%s%3N`
          hotStartupTime=$(echo "scale=2; ($endHot-$startHot)/1000" | bc)

          echo '{"coldStartupTime":'$coldStartupTime',"hotStartupTime":'$hotStartupTime'}'> startup-time.json

      - name: Run benchmark
        run: |
          node dist/scripts/benchmark.js benchmark.json

      - name: Display result
        run: |
          cat benchmark.json build-time.json startup-time.json

      - name: Upload benchmark result
        uses: './.github/actions/reusable-deploy.yml'
        with:
          source: benchmark.json build-time.json startup-time.json
          destination: peertube-stats
          knownHosts: ${{ secrets.STATS_DEPLOYEMENT_KNOWN_HOSTS }}
          deployKey: ${{ secrets.STATS_DEPLOYEMENT_KEY }}
          deployUser: ${{ secrets.STATS_DEPLOYEMENT_USER }}
          deployHost: ${{ secrets.STATS_DEPLOYEMENT_HOST }}