--- # See https://docs.gitlab.com/ee/ci/yaml/README.html variables: CHANGESET_RELEASE_BRANCH: changeset-release/main PNPM_HOME: .pnpm .base_publish: artifacts: paths: - public rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH changes: - 'CHANGELOG.md' exists: - 'CHANGELOG.md' .with_pnpm: image: kucrut/pnpm:18 interruptible: true cache: key: files: - pnpm-lock.yaml paths: - $PNPM_HOME stages: - lint - build - pre-publish - publish - deploy enable_merge: image: alpine:latest interruptible: true stage: lint rules: - if: $CI_MERGE_REQUEST_ID script: echo true lint: extends: .with_pnpm script: pnpm install --silent && pnpm lint stage: lint rules: - if: $CI_MERGE_REQUEST_ID && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CHANGESET_RELEASE_BRANCH changes: - '**/*.cjs' - '**/*.html' - '**/*.js' - '**/*.svelte' - '**/*.ts' - 'package.json' - 'pnpm-lock.yaml' build_merge_request: extends: .with_pnpm stage: build script: - pnpm install --silent - pnpm build rules: - if: $CI_MERGE_REQUEST_ID && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CHANGESET_RELEASE_BRANCH changes: - '.gitlab-ci.yml' - '**/*.cjs' - '**/*.css' - '**/*.html' - '**/*.js' - '**/*.svelte' - '**/*.ts' - 'package.json' - 'pnpm-lock.yaml' create_release_mr: extends: .with_pnpm stage: pre-publish rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH exists: - '.changeset/*.md' changes: - '.changeset/**' - if: $CI_COMMIT_TAG when: never script: | pnpm install --silent pnpx changesets-gitlab variables: INPUT_COMMIT: New version INPUT_TITLE: New version publish_package: stage: publish extends: - .with_pnpm - .base_publish variables: VITE_BASE: '/${CI_PROJECT_NAME}' script: | cat << EOF > "$HOME/.npmrc" //registry.npmjs.org/:_authToken=$NPM_TOKEN EOF pnpm install --silent pnpm build pnpm package pnpm publish --access public --no-git-checks pages: stage: deploy extends: .base_publish script: echo true needs: - job: publish_package artifacts: true