]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Add stats to github actions
authorChocobozzz <me@florianbigard.com>
Tue, 23 Feb 2021 08:44:40 +0000 (09:44 +0100)
committerChocobozzz <me@florianbigard.com>
Tue, 23 Feb 2021 10:02:35 +0000 (11:02 +0100)
.github/workflows/benchmark.yml [new file with mode: 0644]
.github/workflows/bundlewatch.yml [deleted file]
.github/workflows/stats.yml [new file with mode: 0644]
.github/workflows/test.yml

diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
new file mode 100644 (file)
index 0000000..50a3d02
--- /dev/null
@@ -0,0 +1,121 @@
+name: Benchmark
+
+on:
+  push:
+    branches:
+      - ci
+  schedule:
+    - cron: '0 4 * * *'
+
+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
+      NODE_PENDING_JOB_WAIT: 500
+
+    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: 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: Run benchmark
+        run: |
+          node dist/scripts/benchmark.js benchmark.json
+
+      - name: Display result
+        run: |
+          cat benchmark.json build-time.json
+
+      - name: Upload benchmark result
+        env:
+          STATS_DEPLOYEMENT_KNOWN_HOSTS: ${{ secrets.STATS_DEPLOYEMENT_KNOWN_HOSTS }}
+          STATS_DEPLOYEMENT_KEY: ${{ secrets.STATS_DEPLOYEMENT_KEY }}
+          STATS_DEPLOYEMENT_USER: ${{ secrets.STATS_DEPLOYEMENT_USER }}
+          STATS_DEPLOYEMENT_HOST: ${{ secrets.STATS_DEPLOYEMENT_HOST }}
+        run: |
+          mkdir -p ~/.ssh
+          chmod 700  ~/.ssh
+          if [ ! -z ${STATS_DEPLOYEMENT_KNOWN_HOSTS+x} ]; then
+            echo "Adding ssh key to known hosts"
+            echo -e "${STATS_DEPLOYEMENT_KNOWN_HOSTS}" > ~/.ssh/known_hosts;
+          fi
+
+          eval `ssh-agent -s`
+
+          if [ ! -z ${STATS_DEPLOYEMENT_KEY+x} ]; then
+            echo "Adding ssh reployement key"
+            ssh-add <(echo "${STATS_DEPLOYEMENT_KEY}");
+          fi
+
+          if [ ! -z ${STATS_DEPLOYEMENT_KEY+x} ]; then
+            echo "Uploading files"
+            scp benchmark.json build-time.json ${STATS_DEPLOYEMENT_USER}@${STATS_DEPLOYEMENT_HOST}:../../web/peertube-stats;
+          fi
diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml
deleted file mode 100644 (file)
index a829368..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-name: "Bundlewatch Github Action"
-
-on:
-  push:
-    branches:
-    - develop
-  pull_request:
-    types: [synchronize, opened]
-
-jobs:
-
-  bundlewatch:
-    runs-on: ubuntu-latest
-
-    env:
-      CI_BRANCH_BASE: develop
-
-    steps:
-      - uses: actions/checkout@v2
-
-      - name: Use Node.js
-        uses: actions/setup-node@v1
-        with:
-          node-version: '12.x'
-
-      - name: Cache Node.js modules
-        uses: actions/cache@v2
-        with:
-          path: |
-            **/node_modules
-            ~/fixtures
-          key: ${{ runner.OS }}-node-${{ hashFiles('**/yarn.lock') }}
-          restore-keys: |
-            ${{ runner.OS }}-node-
-            ${{ runner.OS }}-
-
-      - name: Install dependencies
-        run: yarn install --frozen-lockfile
-
-      - name: Angular bundlewatch
-        uses: jackyef/bundlewatch-gh-action@master
-        with:
-          build-script: npm run build -- --analyze-bundle
-          branch-base: develop
-          bundlewatch-github-token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
diff --git a/.github/workflows/stats.yml b/.github/workflows/stats.yml
new file mode 100644 (file)
index 0000000..b5fb6d2
--- /dev/null
@@ -0,0 +1,90 @@
+name: "Stats"
+
+on:
+  push:
+    branches:
+    - develop
+    - ci
+  pull_request:
+    types: [synchronize, opened]
+
+jobs:
+
+  stats:
+    runs-on: ubuntu-latest
+
+    env:
+      CI_BRANCH_BASE: develop
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Use Node.js
+        uses: actions/setup-node@v1
+        with:
+          node-version: '12.x'
+
+      - 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: Install dependencies
+        run: yarn install --frozen-lockfile
+
+      - name: Angular bundlewatch
+        uses: jackyef/bundlewatch-gh-action@master
+        with:
+          build-script: npm run build -- --analyze-bundle
+          branch-base: develop
+          bundlewatch-github-token: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
+
+      - name: PeerTube client stats
+        if: github.event_name != 'pull_request'
+        run: |
+          node dist/scripts/client-build-stats.js > client-build-stats.json
+
+      - name: PeerTube code stats
+        if: github.event_name != 'pull_request'
+        run: |
+          wget "https://github.com/boyter/scc/releases/download/v3.0.0/scc-3.0.0-x86_64-unknown-linux.zip"
+          unzip "scc-3.0.0-x86_64-unknown-linux.zip"
+          ./scc --format=json --exclude-dir .git,node_modules,client/node_modules,client/dist,dist,yarn.lock,client/yarn.lock,client/src/locale,test1,test2,test3,client/src/assets/images,config,storage,server/tests/fixtures,support/openapi,.idea,.vscode,docker-volume,ffmpeg-3,ffmpeg-4 > ./scc.json
+
+      - name: Display stats
+        if: github.event_name != 'pull_request'
+        run: |
+          cat client-build-stats.json
+          cat scc.json
+
+      - name: Upload stats
+        if: github.event_name != 'pull_request'
+        env:
+          STATS_DEPLOYEMENT_KNOWN_HOSTS: ${{ secrets.STATS_DEPLOYEMENT_KNOWN_HOSTS }}
+          STATS_DEPLOYEMENT_KEY: ${{ secrets.STATS_DEPLOYEMENT_KEY }}
+          STATS_DEPLOYEMENT_USER: ${{ secrets.STATS_DEPLOYEMENT_USER }}
+          STATS_DEPLOYEMENT_HOST: ${{ secrets.STATS_DEPLOYEMENT_HOST }}
+        run: |
+          mkdir -p ~/.ssh
+          chmod 700  ~/.ssh
+          if [ ! -z ${STATS_DEPLOYEMENT_KNOWN_HOSTS+x} ]; then
+            echo "Adding ssh key to known hosts"
+            echo -e "${STATS_DEPLOYEMENT_KNOWN_HOSTS}" > ~/.ssh/known_hosts;
+          fi
+
+          eval `ssh-agent -s`
+
+          if [ ! -z ${STATS_DEPLOYEMENT_KEY+x} ]; then
+            echo "Adding ssh reployement key"
+            ssh-add <(echo "${STATS_DEPLOYEMENT_KEY}");
+          fi
+
+          if [ ! -z ${STATS_DEPLOYEMENT_KEY+x} ]; then
+            echo "Uploading files"
+            scp client-build-stats.json scc.json ${STATS_DEPLOYEMENT_USER}@${STATS_DEPLOYEMENT_HOST}:../../web/peertube-stats;
+          fi
index aba65258699be271d1a363250367fee9512397a1..f8706d4bef172f73c97c729a313209097b2b4c4e 100644 (file)
@@ -5,6 +5,7 @@ on:
     branches:
       - develop
       - master
+      - ci
   pull_request:
     types: [synchronize, opened]
   schedule: