ci: add performance testing (#633) #72
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: Main | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- "**.md" | |
- "img/**" | |
jobs: | |
build: | |
uses: ./.github/workflows/reusable-build.yml | |
secrets: inherit | |
prepare-release: | |
needs: build | |
runs-on: ubuntu-latest | |
outputs: | |
release_created: ${{ steps.release.outputs.release_created }} | |
version: ${{ steps.release.outputs.version }} | |
steps: | |
- uses: google-github-actions/release-please-action@v3 | |
id: release | |
with: | |
release-type: node | |
package-name: sfdx-git-delta | |
token: ${{ secrets.RELEASE_PAT }} | |
release: | |
needs: prepare-release | |
runs-on: ubuntu-latest | |
if: needs.prepare-release.outputs.release_created == 'true' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
registry-url: 'https://registry.npmjs.org' | |
- name: Setup dependencies, cache and install | |
uses: ./.github/actions/install | |
- name: Publish to npm | |
run: yarn npm publish --access public --tag latest-rc | |
env: | |
YARN_NPM_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} | |
test-release: | |
needs: [prepare-release, release] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-latest, windows-latest, ubuntu-latest] | |
node: [16, 18, 20] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
ref: 'e2e/head' | |
fetch-depth: 0 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install sfdx-cli | |
run: npm install -g sfdx-cli | |
- name: Install new plugin version | |
run: echo y | sfdx plugins:install sfdx-git-delta@${{ needs.prepare-release.outputs.version }} | |
- name: Test new plugin version | |
run: sfdx sgd:source:delta --help | |
- name: E2E Tests | |
run: | | |
yarn | |
yarn test:e2e | |
perf: | |
needs: prepare-release | |
runs-on: ubuntu-latest | |
if: needs.prepare-release.outputs.release_created != 'true' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "yarn-cache=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" | |
shell: bash | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.yarn-cache }} | |
key: ${{ runner.os }}-16-yarn-${{ hashFiles('**/yarn.lock') }} | |
- name: Install dependencies | |
run: yarn install --immutable --check-cache | |
- name: Build plugin | |
run: yarn pack | |
- name: Install sfdx-cli | |
run: npm install -g sfdx-cli | |
- name: Install plugin | |
run: | | |
yarn set version classic | |
sfdx plugins:link . | |
sfdx plugins | |
- name: Checkout e2e sources | |
uses: actions/checkout@v3 | |
with: | |
ref: 'e2e/head' | |
fetch-depth: 0 | |
path: ./e2e | |
- name: Run benchmark | |
run: | | |
git config --local core.hooksPath /dev/null | |
git checkout -f main | |
yarn test:perf | |
- name: Store benchmark result | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
name: Benchmark.js Benchmark | |
tool: 'benchmarkjs' | |
output-file-path: ./perf-result.txt | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
auto-push: true | |
alert-threshold: '130%' | |
comment-on-alert: true | |
fail-on-alert: true | |
summary-always: true | |
alert-comment-cc-users: '@scolladon' |