Try adding measurements incrementally to gh-pages #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Performance | |
on: | |
workflow_dispatch: | |
pull_request: # FIXME JUST FOR TESTING | |
branches: | |
- main | |
schedule: | |
- cron: "0 5 * * *" # Runs every day at 5am: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule | |
jobs: | |
prepare: | |
name: Performance benchmark on ubuntu-latest with Node.js 16.x | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Use Node.js "16.x" | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "16.x" | |
registry-url: "https://registry.npmjs.org" | |
- name: Use Python 3.x | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- name: Build | |
shell: bash | |
run: yarn | |
- name: Checkout Theia | |
uses: actions/checkout@v3 | |
with: | |
repository: eclipse-theia/theia | |
path: ./theia | |
- name: Copy webpack config | |
shell: bash | |
run: | | |
cp -f ./configs/theia.production.webpack.config.js ./theia/examples/browser/webpack.config.js | |
- name: Build Theia | |
shell: bash | |
working-directory: ./theia | |
run: | | |
yarn --skip-integrity-check --network-timeout 100000 | |
yarn download:plugins | |
env: | |
NODE_OPTIONS: --max_old_space_size=4096 | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9 | |
- name: Build Browser App (Production) | |
shell: bash | |
working-directory: ./theia/examples/browser | |
run: | | |
yarn -s compile && yarn rebuild && yarn theia build --mode=production | |
env: | |
NODE_OPTIONS: --max_old_space_size=4096 | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9 | |
- name: Cache Build Result | |
uses: actions/cache@v3 | |
id: build-result | |
with: | |
path: ./* | |
key: ${{ github.run_number }} | |
run-test: | |
name: Performance benchmark on ubuntu-latest with Node.js 16.x | |
runs-on: ubuntu-latest | |
needs: [prepare] | |
strategy: | |
matrix: | |
run: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
timeout-minutes: 40 | |
steps: | |
- name: Restore Build Result (#${{ matrix.run }}) | |
uses: actions/cache/restore@v3 | |
id: build-result | |
with: | |
path: ./* | |
key: ${{ github.run_number }} | |
fail-on-cache-miss: true | |
- name: Use Node.js "16.x" | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "16.x" | |
registry-url: "https://registry.npmjs.org" | |
- name: Use Python 3.x | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- name: Get History | |
uses: actions/checkout@v4 | |
with: | |
ref: gh-pages | |
path: gh-pages | |
- name: Run Theia (#${{ matrix.run }}) | |
shell: bash | |
working-directory: ./theia | |
run: yarn browser start:debug & | |
- name: Run Performance Measurement (#${{ matrix.run }}) | |
uses: GabrielBB/xvfb-action@v1 | |
env: | |
RUN_NO: ${{ matrix.run }} | |
with: | |
run: yarn performance | |
- name: Copy Performance Metrics (#${{ matrix.run }}) | |
shell: bash | |
run: cp performance-metrics/* gh-pages/performance | |
- name: Commit New Performance Measurements (#${{ matrix.run }}) | |
uses: actions/checkout@v4 | |
working-directory: ./gh-pages | |
run: | | |
git config --global user.name "GitHub Actions Bot" | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
git add performance/* | |
git commit -m "Add measurements of build ${{ github.run_number }} run #${{ matrix.run }}" | |
git pull origin gh-pages | |
git push origin gh-pages:gh-pages-${{ github.run_number }} | |
generate-report: | |
name: Performance benchmark on ubuntu-latest with Node.js 16.x | |
runs-on: ubuntu-latest | |
needs: [run-test] | |
steps: | |
- name: Restore Build Result | |
uses: actions/cache/restore@v3 | |
id: build-result | |
with: | |
path: ./* | |
key: ${{ github.run_number }} | |
fail-on-cache-miss: true | |
- name: Get History | |
uses: actions/checkout@v4 | |
if: always() && github.ref == 'refs/heads/main' | |
continue-on-error: true | |
with: | |
ref: gh-pages | |
path: gh-pages | |
- name: Prepare Report | |
if: always() && github.ref == 'refs/heads/main' | |
shell: bash | |
run: yarn performance-report | |
- name: Publish Report | |
if: always() && github.ref == 'refs/heads/main' | |
uses: peaceiris/actions-gh-pages@v2 | |
env: | |
PERSONAL_TOKEN: ${{ secrets.TOKEN }} | |
PUBLISH_BRANCH: gh-pages | |
PUBLISH_DIR: public |