diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0a81e536b..cb734d53cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,17 @@ name: CI on: workflow_dispatch: workflow_call: + inputs: + ref: + description: 'Branch or tag ref to check out' + type: string + required: false + default: 'main' + artifact_name: + description: 'Name of the artifact to upload' + type: string + required: false + default: 'npm-package' pull_request: branches: - '**' @@ -17,6 +28,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref || '' }} - uses: actions/setup-node@v4 with: node-version-file: 'package.json' @@ -44,5 +57,5 @@ jobs: - name: Upload npm package uses: actions/upload-artifact@v3 with: - name: npm-package + name: ${{ inputs.artifact_name || 'npm-package' }} path: preact.tgz diff --git a/.github/workflows/single-bench.yml b/.github/workflows/single-bench.yml new file mode 100644 index 0000000000..667c8b0eef --- /dev/null +++ b/.github/workflows/single-bench.yml @@ -0,0 +1,89 @@ +name: Benchmark Debug + +on: + workflow_dispatch: + inputs: + benchmark: + description: 'Which benchmark to run' + type: choice + options: + - 02_replace1k + - 03_update10k + - 07_create10k + - filter_list + - hydrate1k + - many_updates + - text_update + - todo + required: true + base: + description: 'The branch name, tag, or commit sha of the version of preact to benchmark against.' + type: string + default: main + required: false + trace: + description: 'Whether to capture browser traces for this benchmark run' + type: boolean + default: true + required: false + timeout: + description: 'How many minutes to give the benchmark to run before timing out and failing' + type: number + default: 20 + required: false + +jobs: + build_local: + name: Build local package + uses: ./.github/workflows/ci.yml + + build_base: + name: Build base package + uses: ./.github/workflows/ci.yml + with: + ref: ${{ inputs.base }} + artifact_name: base-npm-package + + prepare: + name: Prepare environment + runs-on: ubuntu-latest + needs: + - build_local + - build_base + timeout-minutes: 5 + steps: + - name: Download locally built preact package + uses: actions/download-artifact@v3 + with: + name: npm-package + - run: mv preact.tgz preact-local.tgz + - name: Clear working directory + run: | + ls -al + rm -rf * + echo "====================" + ls -al + - name: Upload locally built preact package + uses: actions/upload-artifact@v3 + with: + name: bench-environment + path: preact-local.tgz + - name: Download base package + uses: actions/download-artifact@v3 + with: + name: base-npm-package + - run: mv preact.tgz preact-main.tgz + - name: Upload base preact package + uses: actions/upload-artifact@v3 + with: + name: bench-environment + path: preact-main.tgz + + benchmark: + name: Bench ${{ inputs.benchmark}} + uses: ./.github/workflows/run-bench.yml + needs: prepare + with: + benchmark: ${{ inputs.benchmark}} + timeout: ${{ inputs.timeout }} + trace: ${{ inputs.trace }}