Skip to content

perf(store): avoid going over states list every time action is dispatched #1444

perf(store): avoid going over states list every time action is dispatched

perf(store): avoid going over states list every time action is dispatched #1444

Workflow file for this run

# For more information see:
# - https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
# - https://docs.github.com/en/actions/learn-github-actions/contexts#github-context
name: pr-validation
on:
pull_request:
env:
NODE_VERSION: 18.x
BASE_REF: ${{ format('remotes/origin/{0}', github.base_ref) }}
defaults:
run:
shell: bash
concurrency:
group: ${{ github.head_ref }}.${{ github.sha }}.pr-validation
cancel-in-progress: true
jobs:
premerge-build:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup
uses: ./.github/actions/setup
with:
node-version: ${{ env.NODE_VERSION }}
github-ref-name: ${{ github.head_ref }}
github-sha: ${{ github.event.pull_request.head.sha }}
- name: Build NGXS
run: yarn build
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: ngxs-build
path: ./@ngxs
retention-days: 1
# create a preview release of the packages using pkg.pr.new
- name: Continuous Release
run: npx pkg-pr-new publish --compact ./@ngxs/devtools-plugin ./@ngxs/form-plugin ./@ngxs/hmr-plugin ./@ngxs/router-plugin ./@ngxs/storage-plugin ./@ngxs/store ./@ngxs/websocket-plugin
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
premerge-test:
runs-on: ubuntu-latest
needs: premerge-build
strategy:
matrix:
script: [lint, 'test']
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup
uses: ./.github/actions/setup
with:
node-version: ${{ env.NODE_VERSION }}
github-ref-name: ${{ github.head_ref }}
github-sha: ${{ github.event.pull_request.head.sha }}
- name: Run ${{ matrix.script }}
run: yarn nx run-many --target=${{ matrix.script }} --all --configuration=ci --base=${{ env.BASE_REF}} --head=HEAD
- name: Upload coverage results to Code Climate
if: ${{ matrix.script == 'test' }}
run: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > /tmp/cc-test-reporter
chmod +x /tmp/cc-test-reporter
node tools/merge-reports.js --coverageDir=coverage/packages --reporterBinaryPath=/tmp/cc-test-reporter
/tmp/cc-test-reporter upload-coverage -i tmp/codeclimate-final.json
env:
CC_TEST_REPORTER_ID: 3f4c9a9d57ded045e0f9ab5d23e5bbcbf709bb85637bea555f1233e72134b818 # TODO: better store it in the repository secrets. Name the variable: CC_TEST_REPORTER_ID. Then delete this line and uncomment the next one
# CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
premerge-integration-test:
runs-on: ubuntu-latest
needs: premerge-build
strategy:
matrix:
script:
- 'integration:ng16'
- 'integration:ng17'
- 'integration:ng18'
- 'test:types'
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup
uses: ./.github/actions/setup
with:
node-version: ${{ env.NODE_VERSION }}
github-ref-name: ${{ github.head_ref }}
github-sha: ${{ github.event.pull_request.head.sha }}
- name: Run ${{ matrix.script }}
run: yarn ${{ matrix.script }}
- name: Upload an integration test artifact
if: ${{ startsWith( matrix.script, 'integration:' ) }}
uses: ./.github/actions/upload-integration-test-artifact
with:
script: ${{ matrix.script }}
premerge-bundlemon:
if: github.repository_owner == 'ngxs'
runs-on: ubuntu-latest
needs: premerge-integration-test
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup
uses: ./.github/actions/setup
with:
node-version: ${{ env.NODE_VERSION }}
github-ref-name: ${{ github.head_ref }}
github-sha: ${{ github.event.pull_request.head.sha }}
- name: Download integration test artifacts
uses: ./.github/actions/download-integration-test-artifacts
- name: Run BundleMon
run: yarn bundlemon
env:
BUNDLEMON_PROJECT_ID: 62b174ff6619780d8caf79fa
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}