feat(moduleless): migrating to standalone modules support #910
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: on-pull-request-or-push | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- development | |
env: | |
NX_BRANCH: ${{ github.event.number }} | |
NX_RUN_GROUP: ${{ github.run_id }} | |
NX_CLOUD_AUTH_TOKEN: ${{ secrets.NX_CLOUD_AUTH_TOKEN }} | |
MOZ_HEALESS: 1 | |
SAUCE_USERNAME_PR: valorkinpr | |
SAUCE_ACCESS_KEY_PR: e0a97bd3-4b74-4408-89bf-cce1b44a8bf1 | |
FIREBASE_CHANNEL: ${{ fromJSON('["", "live"]')[!github.base_ref] }} | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 0 | |
CACHE_NODE_MODULES_PATH: | | |
~/.npm | |
node_modules | |
CACHE_DIST_PATH: dist | |
jobs: | |
# one run | |
one_run: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
# install dependencies | |
install: | |
runs-on: ubuntu-latest | |
needs: one_run | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
id: cache | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm ci | |
if: steps.cache.outputs.cache-hit != 'true' | |
# build ngx-bootstrap | |
build: | |
needs: install | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_DIST_PATH }} | |
key: dist-${{ github.run_id }} | |
- run: | | |
npx nx build ngx-bootstrap --runner=cloud --configuration=production | |
npx nx build --runner=cloud --configuration=production | |
# run unit tests | |
unit_tests_with_coverage: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_DIST_PATH }} | |
key: dist-${{ github.run_id }} | |
- run: npm test -- --runner=cloud --codeCoverage | |
- run: npx codecov ./coverage/ | |
continue-on-error: true | |
# run linting | |
linting: | |
runs-on: ubuntu-latest | |
needs: install | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- run: npm run lint -- --runner=cloud | |
# firebase deploy preview | |
firebase_preview: | |
runs-on: ubuntu-latest | |
needs: build | |
outputs: | |
output_url: ${{ steps.firebase_hosting_preview.outputs.details_url }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_DIST_PATH }} | |
key: dist-${{ github.run_id }} | |
- uses: FirebaseExtended/action-hosting-deploy@v0 | |
continue-on-error: true | |
id: firebase_hosting_preview | |
with: | |
repoToken: '${{ secrets.GITHUB_TOKEN }}' | |
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_NGX_BOOTSTRAP_DEMO }}' | |
projectId: ngx-bootstrap-demo | |
channelId: ${{ env.FIREBASE_CHANNEL }} | |
expires: 7d | |
# run playwright | |
e2e_smoke: | |
name: e2e smoke (${{ matrix.shard }}/${{ strategy.job-total }}) | |
runs-on: ubuntu-latest | |
needs: [install, build, firebase_preview] | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: [1, 2] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_DIST_PATH }} | |
key: dist-${{ github.run_id }} | |
- name: Install playwright browsers | |
run: | | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npx playwright install | |
npx playwright install-deps chromium | |
- name: smoke e2e on firebase | |
if: ${{ needs.firebase_preview.outputs.output_url }} | |
run: PLAYWRIGHT_TEST_BASE_URL="${{ needs.firebase_preview.outputs.output_url }}/ngx-bootstrap/" npx nx run ngx-bootstrap-docs-e2e:e2e --pwProject=chromium-integration --skipServe --shard=${{ matrix.shard }}/${{ strategy.job-total }} | |
- name: smoke e2e local | |
if: ${{ !needs.firebase_preview.outputs.output_url }} | |
run: npx nx run ngx-bootstrap-docs-e2e:e2e --pwProject=chromium-integration --shard=${{ matrix.shard }}/${{ strategy.job-total }} | |
- uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: playwright-report-smoke-${{ matrix.shard }}_${{ strategy.job-total }} | |
path: apps/ngx-bootstrap-docs-e2e/playwright-report | |
retention-days: 14 | |
e2e_full: | |
name: e2e full | |
runs-on: ubuntu-latest | |
needs: [e2e_smoke] | |
strategy: | |
fail-fast: false | |
matrix: | |
shard: [1, 2] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_NODE_MODULES_PATH }} | |
key: node_modules-${{ hashFiles('**/package-lock.json') }} | |
- uses: actions/cache@v3 | |
with: | |
path: ${{ env.CACHE_DIST_PATH }} | |
key: dist-${{ github.run_id }} | |
- name: Install playwright browsers | |
run: | | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npx playwright install | |
npx playwright install-deps chromium | |
- name: full e2e on firebase | |
if: ${{ needs.firebase_preview.outputs.output_url }} | |
continue-on-error: true | |
run: npx nx run ngx-bootstrap-docs-e2e:e2e --pwProject=chromium-full --baseUrl=${{ needs.firebase_preview.outputs.output_url }}/ngx-bootstrap/ --skipServe --shard=${{ matrix.shard }}/${{ strategy.job-total }} | |
- name: full e2e on local | |
if: ${{ !needs.firebase_preview.outputs.output_url }} | |
continue-on-error: true | |
run: npx nx run ngx-bootstrap-docs-e2e:e2e --pwProject=chromium-full --shard=${{ matrix.shard }}/${{ strategy.job-total }} | |
- uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: playwright-report-full-${{ matrix.shard }}_${{ strategy.job-total }} | |
path: apps/ngx-bootstrap-docs-e2e/playwright-report | |
retention-days: 14 |