From 995cc89d17614a7eb616ed4cf0006242e00a1d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Fri, 30 Jun 2023 13:38:28 +0200 Subject: [PATCH] feat: publishing workflow --- .changeset/serious-meals-sin.md | 5 +++++ .gitlab-ci.yml | 4 ++-- .gitlab/ci/getVersion.sh | 3 +++ .gitlab/publishing.gitlab-ci.yml | 31 ++++++++++--------------------- .syncpackrc.cjs | 7 +++++++ README.md | 15 +++++++++++---- backend/backend/package.json | 2 +- package.json | 3 ++- 8 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 .changeset/serious-meals-sin.md create mode 100755 .gitlab/ci/getVersion.sh diff --git a/.changeset/serious-meals-sin.md b/.changeset/serious-meals-sin.md new file mode 100644 index 00000000..a26d0415 --- /dev/null +++ b/.changeset/serious-meals-sin.md @@ -0,0 +1,5 @@ +--- +'@openstapps/projectmanagement': patch +--- + +Update release configs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d23b0e3..ae9d43f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,8 +12,8 @@ include: - local: /frontend/app/.gitlab-ci.yml - local: /.gitlab/publishing.gitlab-ci.yml rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - when: never + - if: $CI_COMMIT_TAG + when: always variables: TURBO_CACHE_BYPASS: diff --git a/.gitlab/ci/getVersion.sh b/.gitlab/ci/getVersion.sh new file mode 100755 index 00000000..ffe06f69 --- /dev/null +++ b/.gitlab/ci/getVersion.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +grep -oP '(?<="version": ")[^"]*' "$1" diff --git a/.gitlab/publishing.gitlab-ci.yml b/.gitlab/publishing.gitlab-ci.yml index 2288f48c..64e9cf37 100644 --- a/.gitlab/publishing.gitlab-ci.yml +++ b/.gitlab/publishing.gitlab-ci.yml @@ -1,6 +1,6 @@ deploy: stage: publish - needs: ['build'] + needs: ['build', 'test', 'integration', 'e2e'] script: - pnpm install - pnpm run deploy @@ -8,9 +8,7 @@ deploy: paths: - ./.deploy rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - when: manual - - if: $CI_COMMIT_TAG + - when: on_success publish images: stage: publish @@ -25,14 +23,9 @@ publish images: - /kaniko/executor --context "${CI_PROJECT_DIR}/${DEPLOY_DIR}" --dockerfile "${CI_PROJECT_DIR}/${DEPLOY_DIR}/Dockerfile" - --destination "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${DOCKER_TAG}" + --destination "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:$(./.gitlab/ci/getVersion.sh ${DEPLOY_DIR}/package.json) rules: - - if: $CI_COMMIT_TAG - variables: - DOCKER_TAG: $CI_COMMIT_TAG - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - variables: - DOCKER_TAG: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME + - when: on_success parallel: matrix: - DEPLOY_DIR: backend/database @@ -42,20 +35,17 @@ publish images: - DEPLOY_DIR: .deploy/proxy IMAGE_NAME: proxy -publish: +publish packages: stage: publish needs: ['deploy'] script: - - pnpm install --prefer-offline + - pnpm install - pnpm build - - pnpm changeset version $PUBLISH_TYPE - - pnpm changeset publish + - pnpm publish -r rules: - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - variables: - PUBLISH_TYPE: --snapshot $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME + - when: on_success -pages:docs: +publish docs: stage: publish needs: ['deploy'] script: @@ -66,5 +56,4 @@ pages:docs: paths: - public rules: - - if: $CI_COMMIT_TAG - when: on_success + - when: on_success diff --git a/.syncpackrc.cjs b/.syncpackrc.cjs index b59c41bb..4ac035e1 100644 --- a/.syncpackrc.cjs +++ b/.syncpackrc.cjs @@ -33,6 +33,13 @@ const config = { 'nyc', ], versionGroups: [ + { + label: 'Package version is controlled by changesets', + dependencies: ['**'], + dependencyTypes: ['workspace'], + packages: ['**'], + isIgnored: true, + }, { label: 'ES Mapping Generator Special Dependencies', dependencies: ['typescript', 'typedoc', 'ts-node', '@types/node', 'got'], diff --git a/README.md b/README.md index 0b050051..85a81111 100644 --- a/README.md +++ b/README.md @@ -27,15 +27,22 @@ Refer to the [contribution guide](./CONTRIBUTING.md) After having added all changes using `pnpm changeset` +```shell +pnpm publish-packages +``` + +Internally, this will run + ```shell pnpm changeset version # bump versions +pnpm syncpack:fix +pnpm format:fix # changes to the package.json can cause issues pnpm install # update lockfile and rebuild packages -pnpm build # make sure all packages are built -pnpm publish -r # publish all packages not yet in the registry git add . -git commit -m "v[VERSION]" -git tag -a "v[VERSION]" +git commit -m "refactor: update changelog" +pnpm changeset tags git push --follow-tags +# from here the pipeline will do the publishing ``` ## Remote caching diff --git a/backend/backend/package.json b/backend/backend/package.json index 28ebdb57..63690ebf 100644 --- a/backend/backend/package.json +++ b/backend/backend/package.json @@ -32,7 +32,7 @@ "build:docker": "docker build -t openstapps:backend ../../.deploy/backend", "deploy": "pnpm --prod --filter=@openstapps/backend deploy ../../.deploy/backend", "dev": "tsup --watch --onSuccess \"pnpm run start\"", - "docs": "openapi build-docs ./node_modules/@openstapps/core/lib/openapi.json -o docs/openapi/index.html", + "docs:disabled": "openapi build-docs --file ./node_modules/@openstapps/core/lib/openapi.json --output-dir docs/openapi", "format": "prettier . -c --ignore-path ../../.gitignore", "format:fix": "prettier --write . --ignore-path ../../.gitignore", "lint": "tsc --noEmit && eslint --ext .ts src/", diff --git a/package.json b/package.json index 8006ecae..501a7517 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "format:fix": "dotenv -c -- turbo run format:fix", "lint": "dotenv -c -- turbo run lint", "lint:fix": "dotenv -c -- turbo run lint:fix", - "syncpack": "syncpack list-mismatches && syncpack lint-semver-ranges", + "publish-packages": "pnpm changeset version && pnpm syncpack:fix && pnpm install && git add . && git commit -m \"refactor: update changelog\" && pnpm changeset tags && git push --follow-tags", + "syncpack": "syncpack list-mismatches && syncpack lint-semver-ranges --types dev,peer,prod", "syncpack:fix": "syncpack format && syncpack fix-mismatches", "test": "trap 'node coverage.mjs' EXIT && dotenv -c -- turbo run test --filter=!@openstapps/app", "test:integration": "dotenv -c -- turbo run test:integration",