Skip to content

Merge pull request #7196 from QwikDev/v2-textarea-null-value #17086

Merge pull request #7196 from QwikDev/v2-textarea-null-value

Merge pull request #7196 from QwikDev/v2-textarea-null-value #17086

Workflow file for this run

# Build and test everything
#
# First it builds the packages and stores them in artifacts/cache.
# Meanwhile it lints the code.
# Then it runs the unit tests with the artifacts, as well as builds the docs and insights
# Once it all works, it does a release
#
# NOTE: only use pnpm run scripts for build commands
# This way we're sure that dev and CI environments are consistent
name: Qwik CI
# TODO fix e2e tests hanging and not cancelling
# # We only need one instance of the workflow running at a time, per branch
# concurrency:
# group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
# cancel-in-progress: true
on:
pull_request:
push:
branches:
- main
- upcoming
- next
- vercelserverless
- 'build/**'
workflow_dispatch:
inputs:
disttag:
description: 'Publish "@qwik.dev/core" to NPM using this dist-tag, push the git-tag to the repo and create a GitHub release. The "latest" and "next" dist-tags will use the version number already committed in package.json.'
required: true
type: choice
default: 'dev'
options:
- dev
- next
- latest
env:
# Disable incremental build, speeds up CI
CARGO_INCREMENTAL: 0
jobs:
changes:
name: Setup
runs-on: ubuntu-latest
outputs:
hash-qwik: ${{ steps.cache-qwik.outputs.cache-primary-key }}
hash-rust: ${{ steps.cache-rust.outputs.cache-primary-key }}
hash-others: ${{ steps.cache-others.outputs.cache-primary-key }}
hash-docs: ${{ steps.cache-docs.outputs.cache-primary-key }}
hash-insights: ${{ steps.cache-insights.outputs.cache-primary-key }}
hash-unit: ${{ steps.cache-unit.outputs.cache-primary-key }}
hash-e2e: ${{ steps.cache-e2e.outputs.cache-primary-key }}
build-qwik: ${{ steps.cache-qwik.outputs.cache-hit != 'true' }}
build-rust: ${{ steps.cache-rust.outputs.cache-hit != 'true' }}
build-others: ${{ steps.cache-others.outputs.cache-hit != 'true' }}
build-docs: ${{ steps.cache-docs.outputs.cache-hit != 'true' }}
build-insights: ${{ steps.cache-insights.outputs.cache-hit != 'true' }}
build-unit: ${{ steps.cache-unit.outputs.cache-hit != 'true' }}
build-e2e: ${{ steps.cache-e2e.outputs.cache-hit != 'true' }}
disttag: ${{ steps.set_dist_tag.outputs.disttag }}
steps:
- name: Branch
run: echo "${{ github.ref }}"
- name: NPM Dist Tag from input
run: echo "${{ github.event.inputs.disttag }}"
- name: Github event
run: echo event_name=${{ github.event_name }}
- name: Checkout
uses: actions/checkout@v4
- name: Set Dist Tag
id: set_dist_tag
if: |
github.ref == 'refs/heads/build/v2' && (
github.event_name == 'push' ||
github.event_name == 'workflow_dispatch'
)
run: |
if [ ${{ github.event_name }} == 'workflow_dispatch' ]; then
disttag="${{ github.event.inputs.disttag }}"
echo "Overriding disttag with input: $disttag"
echo "disttag=${disttag}" >> $GITHUB_OUTPUT
exit 0
fi
is_release=false
commit_id=${{ github.sha }}
owner=${{ github.repository_owner }}
repo=${{ github.event.repository.name }}
removed_files=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/$owner/$repo/commits/$commit_id" | jq -r '.files[] | select(.status == "removed") | .filename')
echo "Removed files: $removed_files"
md_file_removed=false
for file in $removed_files; do
if [[ $file == .changeset/*.md ]]; then
md_file_removed=true
break
fi
done
if [ $md_file_removed = true ]; then
if ! ls .changeset/*.md > /dev/null 2>&1; then
is_release=true
fi
fi
echo "is_release: $is_release"
if [ "$is_release" = true ]; then
disttag='latest'
else
disttag="${{github.event.inputs.disttag}}"
fi
echo "disttag: $disttag"
echo "disttag=${disttag}" >> $GITHUB_OUTPUT
- run: jq .scripts package.json > scripts.json
- name: 'check cache: qwik'
id: cache-qwik
uses: actions/cache/restore@v4
with:
lookup-only: true
path: packages/qwik/dist
# Note that this includes the package.json of qwik
key: ${{ hashfiles('.github/workflows/ci.yml', 'pnpm-lock.yaml', 'scripts.json', 'scripts/**/*', 'packages/qwik/**/*', '!**/*.unit.*', '!**/*.rs') }}
- run: 'echo ${{ steps.cache-qwik.outputs.cache-primary-key }} > qwik-key.txt'
- name: 'check cache: rust'
id: cache-rust
uses: actions/cache/restore@v4
with:
lookup-only: true
path: packages/qwik/bindings
key: ${{ hashfiles('Makefile', 'rust-toolchain', '**/Cargo.toml', '**/Cargo.lock', '**/*.rs') }}
- run: 'echo ${{ steps.cache-rust.outputs.cache-primary-key }} > rust-key.txt'
- name: 'check cache: others'
id: cache-others
uses: actions/cache/restore@v4
with:
lookup-only: true
path: |
packages/qwik-router/lib
packages/qwik-react/lib
packages/eslint-plugin-qwik/dist
packages/create-qwik/dist
# note that all inputs need to be listed here, including qwik, for correct cache invalidation
key: ${{ hashfiles('qwik-key.txt', 'rust-key.txt', 'packages/qwik-router/**/*', 'packages/qwik-react/**/*', 'packages/eslint-plugin-qwik/**/*', 'packages/create-qwik/**/*', '!**/*.unit.*') }}
- run: 'echo ${{ steps.cache-others.outputs.cache-primary-key }} > others-key.txt'
- name: 'check cache: docs'
id: cache-docs
uses: actions/cache/restore@v4
with:
lookup-only: true
path: docs-build-completed.txt
key: ${{ hashfiles('others-key.txt', 'packages/docs/**/*') }}
- name: 'check cache: insights'
id: cache-insights
uses: actions/cache/restore@v4
with:
lookup-only: true
path: |
packages/insights/dist
packages/insights/.netlify
key: ${{ hashfiles('others-key.txt', 'packages/qwik-insights/**/*') }}
- name: 'check cache: unit tests'
id: cache-unit
uses: actions/cache/restore@v4
with:
lookup-only: true
path: unit-tests-completed.txt
key: ${{ hashfiles('others-key.txt', 'packages/**/*.unit.*') }}
- name: 'check cache: e2e tests'
id: cache-e2e
uses: actions/cache/restore@v4
with:
lookup-only: true
path: e2e-tests-completed.txt
key: ${{ hashfiles('others-key.txt', 'starters/**/*') }}
############ BUILD Qwik ############
build-qwik:
if: needs.changes.outputs.build-qwik == 'true'
name: Build Qwik
needs: changes
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- name: Install NPM Dependencies
run: |
corepack enable
# Ensure that the qwik binary gets made
mkdir -p packages/qwik/bindings/
pnpm install --frozen-lockfile
- name: 'build: qwik'
run: pnpm build --qwik --set-dist-tag="${{ needs.changes.outputs.disttag }}"
- name: Print Qwik Dist Build
continue-on-error: true
run: tree -a packages/qwik/dist/
- name: Save qwik cache
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-qwik }}
path: packages/qwik/dist
- name: Save artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-qwik-no-optimizer
include-hidden-files: true
path: packages/qwik/dist/
if-no-files-found: error
############ BUILD PLATFORM BINDINGS ############
build-bindings:
if: needs.changes.outputs.build-rust == 'true'
strategy:
matrix:
settings:
- host: ubuntu-latest
target: x86_64-unknown-linux-gnu
wasm: true
# the last x86 macos available as a standard runner
- host: macos-13
target: x86_64-apple-darwin
- host: macos-latest
target: aarch64-apple-darwin
- host: windows-latest
target: x86_64-pc-windows-msvc
name: Build optimizer ${{ matrix.settings.target }}
runs-on: ${{ matrix.settings.host }}
needs: changes
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: pnpm install
- if: matrix.settings.wasm
run: pnpm install wasm-pack
- name: Lint check
if: matrix.settings.wasm
run: pnpm lint.rust
- name: Unit tests
if: matrix.settings.wasm
run: pnpm test.rust
- name: Build Platform Binding
run: pnpm build --platform-binding
- name: Build Wasm Binding
if: matrix.settings.wasm
run: pnpm build --wasm
- name: Print Packages Dist Build
continue-on-error: true
run: ls -lR packages/qwik/bindings/
- name: Upload Platform Binding Artifact
uses: actions/upload-artifact@v4
with:
name: artifact-bindings-${{ matrix.settings.target }}
include-hidden-files: true
path: packages/qwik/bindings/
if-no-files-found: error
############ BUILD PACKAGE ############
combined-qwik:
name: Bundle Qwik
if: always()
runs-on: ubuntu-latest
needs:
- build-qwik
- build-bindings
- changes
steps:
- name: Verify builds
if: |
!(
(needs.build-qwik.result == 'success' || needs.build-qwik.result == 'skipped') &&
(needs.build-bindings.result == 'success' || needs.build-bindings.result == 'skipped')
)
run: exit 1
- name: Restore artifacts
if: needs.changes.outputs.build-rust == 'true'
uses: actions/download-artifact@v4
- name: Restore Qwik from cache
uses: actions/cache/restore@v4
with:
path: packages/qwik/dist
key: ${{ needs.changes.outputs.hash-qwik }}
- name: Restore Rust from cache
if: needs.changes.outputs.build-rust != 'true'
uses: actions/cache/restore@v4
with:
path: packages/qwik/bindings
key: ${{ needs.changes.outputs.hash-rust }}
- name: Move Rust Artifacts
if: needs.changes.outputs.build-rust == 'true'
run: |
mkdir -p packages/qwik/bindings
mv artifact-bindings-*/* packages/qwik/bindings
- name: Save rust cache
if: needs.changes.outputs.build-rust == 'true'
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-rust }}
path: packages/qwik/bindings
- name: Upload Qwik artifact
uses: actions/upload-artifact@v4
with:
name: artifact-qwik
include-hidden-files: true
path: |
packages/qwik/bindings
packages/qwik/dist
if-no-files-found: error
build-other-packages:
name: Build Other Packages
needs:
- changes
- combined-qwik
if: always()
runs-on: ubuntu-latest
steps:
- name: Verify combined-qwik
if: needs.combined-qwik.result != 'success'
run: exit 1
- name: Checkout
if: needs.changes.outputs.build-others == 'true'
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
if: needs.changes.outputs.build-others == 'true'
- name: Setup Node
if: needs.changes.outputs.build-others == 'true'
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- name: Restore Qwik artifact
uses: actions/download-artifact@v4
with:
name: artifact-qwik
path: packages/qwik/
- name: Install NPM Dependencies
if: needs.changes.outputs.build-others == 'true'
run: corepack pnpm install
- name: 'build: qwik-router & others'
if: needs.changes.outputs.build-others == 'true'
run: pnpm build --tsc --api --qwikrouter --cli --qwikreact --eslint --set-dist-tag="${{ needs.changes.outputs.disttag }}"
- name: Save others cache
if: needs.changes.outputs.build-others == 'true'
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-others }}
path: |
packages/qwik-router/lib
packages/qwik-react/lib
packages/eslint-plugin-qwik/dist
packages/create-qwik/dist
- name: 'restore: qwik-router & others'
if: needs.changes.outputs.build-others != 'true'
uses: actions/cache/restore@v4
with:
path: |
packages/qwik-router/lib
packages/qwik-react/lib
packages/eslint-plugin-qwik/dist
packages/create-qwik/dist
key: ${{ needs.changes.outputs.hash-others }}
- name: Print QwikRouter Lib Build
run: tree -a packages/qwik-router/lib/
- name: Upload QwikRouter Build Artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-qwikrouter
include-hidden-files: true
path: packages/qwik-router/lib/
if-no-files-found: error
- name: Print qwik-react Lib Build
run: tree -a packages/qwik-react/lib/
- name: Upload qwik-react Build Artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-qwikreact
include-hidden-files: true
path: |
packages/qwik-react/lib/
packages/qwik-react/package.json
if-no-files-found: error
- name: Print Create Qwik CLI Dist Build
run: tree -a packages/create-qwik/dist/
- name: Upload Create Qwik CLI Build Artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-create-qwik
include-hidden-files: true
path: packages/create-qwik/dist/
if-no-files-found: error
- name: Print Eslint rules Dist Build
run: tree -a packages/eslint-plugin-qwik/dist/
- name: Upload Eslint rules Build Artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-eslint-plugin-qwik
include-hidden-files: true
path: packages/eslint-plugin-qwik/dist/
if-no-files-found: error
############ BUILD INSIGHTS ############
build-insights:
if: always() && needs.changes.outputs.build-insights == 'true'
name: Build Insights
needs:
- changes
- build-other-packages
runs-on: ubuntu-latest
steps:
- name: Verify build-other-packages
if: needs.build-other-packages.result != 'success'
run: exit 1
- name: Checkout
uses: actions/checkout@v4
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack pnpm install --frozen-lockfile
- name: Build Qwik Insights
run: pnpm run build.packages.insights
- name: Save Insights Cache
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-insights }}
path: |
packages/insights/dist
packages/insights/.netlify
############ BUILD DOCS ############
build-docs:
if: always() && needs.changes.outputs.build-docs == 'true'
name: Build Docs
needs:
- changes
- build-other-packages
runs-on: ubuntu-latest
steps:
- name: Verify build-other-packages
if: needs.build-other-packages.result != 'success'
run: exit 1
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
mv artifact-qwikreact/lib packages/qwik-react/lib
- run: corepack pnpm install --frozen-lockfile
- name: Build Qwik Docs
run: pnpm run build.packages.docs && echo ok > docs-build-completed.txt
- name: Save Docs Artifacts
uses: actions/upload-artifact@v4
with:
name: artifact-docs
include-hidden-files: true
path: |
packages/docs/dist
packages/docs/server
- name: Save Docs Cache
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-docs }}
path: docs-build-completed.txt
############ UNIT TEST ############
test-unit:
name: Unit Tests
if: always() && needs.changes.outputs.build-unit == 'true'
runs-on: ubuntu-latest
needs:
- changes
- build-other-packages
steps:
- name: Verify build-other-packages
if: needs.build-other-packages.result != 'success'
run: exit 1
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack enable
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
- run: pnpm install --frozen-lockfile
- name: Unit Tests
run: pnpm run test.unit && echo ok > unit-tests-completed.txt
- name: Save unit tests cache
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-unit }}
path: unit-tests-completed.txt
############ E2E TEST ############
test-e2e:
# Sometimes the tests just hang
timeout-minutes: 20
name: E2E Tests
if: always() && needs.changes.outputs.build-e2e == 'true'
needs:
- build-other-packages
- changes
- test-unit
strategy:
matrix:
settings:
- host: ubuntu-latest
browser: chromium
# too slow and flaky. Perhaps better in v2?
# - host: ubuntu-latest
# browser: firefox
- host: macos-latest
browser: webkit
- host: windows-latest
browser: chromium
runs-on: ${{ matrix.settings.host }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack enable
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
- run: pnpm install --frozen-lockfile
- name: Install Playwright
run: npx playwright install ${{ matrix.settings.browser }} --with-deps
- name: Playwright E2E Tests
run: pnpm run test.e2e.${{ matrix.settings.browser }} --timeout 60000 --retries 7 --workers 1
# RE-ENABBLE THIS AFTER qwik.dev/ packages are published
# - name: Validate Create Qwik Cli
# if: matrix.settings.host != 'windows-latest'
# run: pnpm cli.validate
############ E2E CLI TEST ############
test-cli-e2e:
name: E2E CLI Tests
if: always() && needs.changes.outputs.build-e2e == 'true'
needs:
- build-other-packages
- changes
- test-unit
strategy:
matrix:
settings:
- host: ubuntu-latest
- host: macos-latest
- host: windows-latest
runs-on: ${{ matrix.settings.host }}
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack enable
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
- run: pnpm install --frozen-lockfile
- name: CLI E2E Tests
run: pnpm run test.e2e.cli
########### LINT PACKAGES ############
lint-package:
name: Lint Package
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack enable
- run: pnpm install --frozen-lockfile
- name: SyncPack Check
if: always()
run: pnpm run lint.syncpack
- name: Prettier Check
if: always()
run: pnpm run lint.prettier
- name: Build ESLint
if: always()
run: pnpm build --eslint
- name: ESLint Check
if: always()
run: pnpm run lint.eslint
############ RELEASE ############
release:
name: Release
runs-on: ubuntu-latest
needs:
- changes
- test-unit
- test-e2e
# test-unit runs when any packages changes, so we have to release
# on "upcoming", we always check if we have something to release
# don't run on forks
if: |
always() &&
github.repository == 'QwikDev/qwik' && (
github.ref == 'refs/heads/build/v2' ||
needs.test-unit.result == 'success'
)
steps:
- name: Verify test-e2e
if: needs.test-e2e.result != 'skipped'
run: |
if [ "${{ needs.test-e2e.result }}" != success ] ; then
exit 1
else
echo ok > e2e-tests-completed.txt
fi
- name: Save e2e tests cache
if: needs.test-e2e.result != 'skipped'
uses: actions/cache/save@v4
with:
key: ${{ needs.changes.outputs.hash-e2e }}
path: e2e-tests-completed.txt
- name: Checkout
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'pnpm'
registry-url: https://registry.npmjs.org/
- run: corepack enable
- name: Download Build Artifacts
uses: actions/download-artifact@v4
- name: Move Distribution Artifacts
run: |
mv artifact-qwik/* packages/qwik/
mkdir -p packages/qwik-router/lib/
mv artifact-qwikrouter/* packages/qwik-router/lib/
mkdir -p packages/create-qwik/dist/
mv artifact-create-qwik/* packages/create-qwik/dist/
mkdir -p packages/eslint-plugin-qwik/dist/
mv artifact-eslint-plugin-qwik/* packages/eslint-plugin-qwik/dist/
mv artifact-qwikreact/lib packages/qwik-react/lib
rm -rf artifact-*
- run: pnpm install --frozen-lockfile
# Do this before other release steps to avoid
# publishing temporary files
- name: Create Release Pull Request or Publish to npm
if: github.ref == 'refs/heads/build/v2'
id: changesets
uses: changesets/action@v1
with:
publish: pnpm release
title: V2 Version Packages
branch: build/v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# Delete this after V2 is released
- name: Tag with latest
if: steps.changesets.outputs.published == 'true'
run: |
if [ -f "$HOME/.npmrc" ]; then
echo "Found existing user .npmrc file"
if grep -qi "^[[:space:]]*//registry.npmjs.org/:[_-]authToken=" "$HOME/.npmrc"; then
echo "Found existing auth token for the npm registry in the user .npmrc file"
else
echo "Didn't find existing auth token for the npm registry in the user .npmrc file, creating one"
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> "$HOME/.npmrc"
fi
else
echo "No user .npmrc file found, creating one"
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > "$HOME/.npmrc"
fi
npm dist-tag add @qwik.dev/core@${{ fromJSON(steps.changesets.outputs.publishedPackages)[0].version }} latest
npm dist-tag add @qwik.dev/router@${{ fromJSON(steps.changesets.outputs.publishedPackages)[0].version }} latest
npm dist-tag add @qwik.dev/react@${{ fromJSON(steps.changesets.outputs.publishedPackages)[0].version }} latest
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Fixup package.json files
run: pnpm run release.fixup-package-json
- name: Commit Build Artifacts
if: github.event_name == 'push'
env:
QWIK_API_TOKEN_GITHUB: ${{ secrets.QWIK_API_TOKEN_GITHUB }}
run: pnpm run qwik-push-build-repos
- name: Publish packages for testing
if: github.event_name != 'workflow_dispatch'
# TODO: bring back --compact in the package.json release.pkg-pr-new script after first npm public of V2 alpha
run: pnpm release.pkg-pr-new
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
############ TRIGGER QWIKCITY E2E TEST ############
trigger-qwikrouter-e2e:
name: Trigger Qwik City E2E
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/upcoming'
needs:
- changes
- release
steps:
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.QWIK_API_TOKEN_GITHUB }}
repository: QwikDev/qwik-city-e2e
event-type: main-updated
############ Everything is fine ############
requirements-passed:
name: All requirements are met
runs-on: ubuntu-latest
needs:
- test-unit
- test-e2e
- lint-package
- build-docs
- build-insights
if: always()
steps:
- name: check status
if: |
!(
(needs.test-unit.result == 'success' || needs.test-unit.result == 'skipped') &&
(needs.test-e2e.result == 'success' || needs.test-e2e.result == 'skipped') &&
(needs.lint-package.result == 'success' || needs.lint-package.result == 'skipped') &&
(needs.build-docs.result == 'success' || needs.build-docs.result == 'skipped') &&
(needs.build-insights.result == 'success' || needs.build-insights.result == 'skipped')
)
run: exit 1