From 2abaa3f27ec9870749a3a6f001922740e26c3830 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 23 Feb 2021 09:44:40 +0100 Subject: Add stats to github actions --- .github/workflows/benchmark.yml | 121 ++++++++++++++++++++++++++++++++++++++ .github/workflows/bundlewatch.yml | 45 -------------- .github/workflows/stats.yml | 90 ++++++++++++++++++++++++++++ .github/workflows/test.yml | 1 + 4 files changed, 212 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/bundlewatch.yml create mode 100644 .github/workflows/stats.yml (limited to '.github') diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000..50a3d0246 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -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 index a829368e8..000000000 --- a/.github/workflows/bundlewatch.yml +++ /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 index 000000000..b5fb6d2a6 --- /dev/null +++ b/.github/workflows/stats.yml @@ -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 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aba652586..f8706d4be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,6 +5,7 @@ on: branches: - develop - master + - ci pull_request: types: [synchronize, opened] schedule: -- cgit v1.2.3