From ba17147598f9044d0160d9883ab4130b86b7e864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:51:48 +0200 Subject: [PATCH 1/9] =?UTF-8?q?feat(npm):=20=E2=9C=A8=20Add=20npm=20packag?= =?UTF-8?q?e=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 294 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 287 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1889438..b213a8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,20 +2,32 @@ name: CI on: pull_request: - push: + types: + - opened + - synchronize + - reopened + - closed branches: + - master - main + push: + branches: - master + - main + +permissions: + contents: read jobs: verify: + name: Verify package runs-on: ubuntu-latest steps: - - name: Checkout + - name: Checkout repository uses: actions/checkout@v4 - - name: Setup Node + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 @@ -24,19 +36,287 @@ jobs: - name: Install dependencies run: yarn install --frozen-lockfile - - name: Lint + - name: Run lint run: yarn lint - - name: Typecheck + - name: Run typecheck run: yarn typecheck - - name: Test - run: yarn test + - name: Run tests with coverage + run: yarn test:coverage - name: Build docs run: yarn docs:build + - name: Check npm package contents + run: npm pack --dry-run + - name: Upload coverage uses: codecov/codecov-action@v5 with: files: ./coverage/lcov.info + + publish: + name: Publish to npm + runs-on: ubuntu-latest + needs: verify + concurrency: + group: publish-${{ github.repository }}-${{ github.event.pull_request.base.ref }} + cancel-in-progress: false + permissions: + contents: write + id-token: write + pull-requests: read + if: >- + github.event_name == 'pull_request' && + github.event.action == 'closed' && + github.event.pull_request.merged == true && + ( + github.event.pull_request.base.ref == 'master' || + github.event.pull_request.base.ref == 'main' + ) && + ( + github.event.pull_request.head.ref == 'feat' || + startsWith(github.event.pull_request.head.ref, 'feat/') || + github.event.pull_request.head.ref == 'fix' || + startsWith(github.event.pull_request.head.ref, 'fix/') || + github.event.pull_request.head.ref == 'break' || + startsWith(github.event.pull_request.head.ref, 'break/') + ) + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.base.ref }} + persist-credentials: false + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + registry-url: https://registry.npmjs.org/ + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Check npm package contents + run: npm pack --dry-run + + - name: Compute release version + id: release + shell: bash + run: | + set -euo pipefail + + package_name="$(node -p "require('./package.json').name")" + current_version="$(node -p "require('./package.json').version")" + published_version="$(npm view "$package_name" version 2>/dev/null || true)" + branch_name="${HEAD_BRANCH}" + release_marker="for #${PR_NUMBER}" + + echo "already_released=false" >> "$GITHUB_OUTPUT" + + case "$branch_name" in + fix|fix/*) + bump="patch" + ;; + feat|feat/*) + bump="minor" + ;; + break|break/*) + bump="major" + ;; + *) + echo "Unsupported release branch: $branch_name" + exit 1 + ;; + esac + + release_subject="$(git log --format=%s --grep="$release_marker" -n 1 HEAD || true)" + + if [ -n "$release_subject" ] && grep -q "$release_marker" <<< "$release_subject"; then + next_version="$( + node - "$release_subject" "$current_version" <<'NODE' + const [subject, fallbackVersion] = process.argv.slice(2); + const match = subject.match(/Release v([^ ]+) for #\d+/); + + process.stdout.write(match?.[1] ?? fallbackVersion); + NODE + )" + + echo "Release for PR #${PR_NUMBER} already exists." + echo "already_released=true" >> "$GITHUB_OUTPUT" + echo "package_name=$package_name" >> "$GITHUB_OUTPUT" + echo "current_version=$current_version" >> "$GITHUB_OUTPUT" + echo "published_version=$published_version" >> "$GITHUB_OUTPUT" + echo "next_version=$next_version" >> "$GITHUB_OUTPUT" + echo "bump=$bump" >> "$GITHUB_OUTPUT" + echo "should_publish=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + if [ -z "$published_version" ]; then + next_version="$current_version" + should_publish="true" + bump="initial" + else + next_version="$( + node - "$current_version" "$bump" <<'NODE' + const [version, bump] = process.argv.slice(2); + const parts = version.split('.').map(Number); + + if (parts.length !== 3 || parts.some((part) => !Number.isInteger(part))) { + throw new Error(`Unsupported npm version: ${version}`); + } + + if (bump === 'patch') parts[2] += 1; + if (bump === 'minor') { + parts[1] += 1; + parts[2] = 0; + } + if (bump === 'major') { + parts[0] += 1; + parts[1] = 0; + parts[2] = 0; + } + + process.stdout.write(parts.join('.')); + NODE + )" + + should_publish="true" + + if [ "$published_version" = "$next_version" ]; then + should_publish="false" + fi + fi + + if [ "$current_version" != "$next_version" ]; then + npm version "$next_version" --no-git-tag-version + fi + + if [ -n "$published_version" ] && [ "$should_publish" = "true" ]; then + node - "$published_version" "$next_version" <<'NODE' + const [publishedVersion, nextVersion] = process.argv.slice(2); + const parse = (version) => version.split('.').map(Number); + const published = parse(publishedVersion); + const next = parse(nextVersion); + const comparison = published.findIndex((part, index) => part !== next[index]); + + if (comparison !== -1 && published[comparison] > next[comparison]) { + throw new Error( + `Published npm version ${publishedVersion} is newer than computed release ${nextVersion}`, + ); + } + NODE + fi + + echo "package_name=$package_name" >> "$GITHUB_OUTPUT" + echo "current_version=$current_version" >> "$GITHUB_OUTPUT" + echo "published_version=$published_version" >> "$GITHUB_OUTPUT" + echo "next_version=$next_version" >> "$GITHUB_OUTPUT" + echo "bump=$bump" >> "$GITHUB_OUTPUT" + echo "should_publish=$should_publish" >> "$GITHUB_OUTPUT" + env: + HEAD_BRANCH: ${{ github.event.pull_request.head.ref }} + PR_NUMBER: ${{ github.event.pull_request.number }} + + - name: Publish package + if: >- + steps.release.outputs.already_released != 'true' && + steps.release.outputs.should_publish == 'true' + run: npm publish --access public --tag latest + + - name: Commit release version + if: steps.release.outputs.already_released != 'true' + shell: bash + run: | + set -euo pipefail + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + git add package.json + + if [ -f package-lock.json ]; then + git add package-lock.json + fi + + if [ -f yarn.lock ]; then + git add yarn.lock + fi + + if git diff --cached --quiet; then + echo "No package version changes to commit." + else + git commit -m "chore(release): 🔖 Release v${NEXT_VERSION} for #${PR_NUMBER}" + fi + + if git rev-parse "v${NEXT_VERSION}" >/dev/null 2>&1; then + echo "Tag v${NEXT_VERSION} already exists." + else + git tag -a "v${NEXT_VERSION}" -m "Release v${NEXT_VERSION} for #${PR_NUMBER}" + fi + + auth_header="$( + node -e "process.stdout.write('AUTHORIZATION: basic ' + Buffer.from('x-access-token:' + process.env.GITHUB_TOKEN).toString('base64'))" + )" + git -c "http.https://github.com/.extraheader=$auth_header" push origin "HEAD:${BASE_BRANCH}" + git -c "http.https://github.com/.extraheader=$auth_header" push origin "v${NEXT_VERSION}" + env: + BASE_BRANCH: ${{ github.event.pull_request.base.ref }} + NEXT_VERSION: ${{ steps.release.outputs.next_version }} + PR_NUMBER: ${{ github.event.pull_request.number }} + GITHUB_TOKEN: ${{ github.token }} + + - name: Create GitHub release notes + if: >- + steps.release.outputs.already_released != 'true' && + steps.release.outputs.next_version != '' + shell: bash + run: | + set -euo pipefail + + tag="v${NEXT_VERSION}" + release_notes="$(mktemp)" + pr_title="$(gh pr view "$PR_NUMBER" --json title --jq '.title')" + pr_body="$(gh pr view "$PR_NUMBER" --json body --jq '.body // ""')" + pr_url="$(gh pr view "$PR_NUMBER" --json url --jq '.url')" + + { + echo "## Changes" + echo + printf -- "- %s\n" "$pr_title" + echo + echo "## Release details" + echo + printf -- "- npm: https://www.npmjs.com/package/%s/v/%s\n" "$PACKAGE_NAME" "$NEXT_VERSION" + printf -- "- Pull request: %s\n" "$pr_url" + printf -- "- Source branch: \`%s\`\n" "$HEAD_BRANCH" + printf -- "- Version bump: \`%s\`\n" "$BUMP" + } > "$release_notes" + + if [ -n "$pr_body" ]; then + { + echo + echo "## Pull request notes" + echo + printf '%s\n' "$pr_body" | sed '/^------$/,$d' + } >> "$release_notes" + fi + + if gh release view "$tag" >/dev/null 2>&1; then + gh release edit "$tag" --title "$tag" --notes-file "$release_notes" + else + gh release create "$tag" --verify-tag --title "$tag" --notes-file "$release_notes" + fi + env: + BUMP: ${{ steps.release.outputs.bump }} + GH_TOKEN: ${{ github.token }} + HEAD_BRANCH: ${{ github.event.pull_request.head.ref }} + NEXT_VERSION: ${{ steps.release.outputs.next_version }} + PACKAGE_NAME: ${{ steps.release.outputs.package_name }} + PR_NUMBER: ${{ github.event.pull_request.number }} From 55a5f93cc1194cd1f44ef8d418829cedebddd80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:55:28 +0200 Subject: [PATCH 2/9] fix(ci): use package build for verification tests --- .github/workflows/ci.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b213a8d..867052b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,8 @@ jobs: - name: Run typecheck run: yarn typecheck - - name: Run tests with coverage - run: yarn test:coverage + - name: Run tests + run: yarn test - name: Build docs run: yarn docs:build @@ -90,7 +90,6 @@ jobs: with: fetch-depth: 0 ref: ${{ github.event.pull_request.base.ref }} - persist-credentials: false - name: Setup Node.js uses: actions/setup-node@v4 @@ -261,16 +260,12 @@ jobs: git tag -a "v${NEXT_VERSION}" -m "Release v${NEXT_VERSION} for #${PR_NUMBER}" fi - auth_header="$( - node -e "process.stdout.write('AUTHORIZATION: basic ' + Buffer.from('x-access-token:' + process.env.GITHUB_TOKEN).toString('base64'))" - )" - git -c "http.https://github.com/.extraheader=$auth_header" push origin "HEAD:${BASE_BRANCH}" - git -c "http.https://github.com/.extraheader=$auth_header" push origin "v${NEXT_VERSION}" + git push origin "HEAD:${BASE_BRANCH}" + git push origin "v${NEXT_VERSION}" env: BASE_BRANCH: ${{ github.event.pull_request.base.ref }} NEXT_VERSION: ${{ steps.release.outputs.next_version }} PR_NUMBER: ${{ github.event.pull_request.number }} - GITHUB_TOKEN: ${{ github.token }} - name: Create GitHub release notes if: >- From 2650e0bc7d99d1140d05a55a9b7c67b085784ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:58:44 +0200 Subject: [PATCH 3/9] fix(ci): upload Codecov coverage report --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 867052b..045308c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,8 @@ jobs: - name: Run typecheck run: yarn typecheck - - name: Run tests - run: yarn test + - name: Run tests with coverage + run: yarn build && yarn c8 --all --src src --include "src/**/*.ts" --extension .ts --exclude-after-remap --reporter text --reporter lcov node --test "tests/**/*.test.mjs" - name: Build docs run: yarn docs:build @@ -54,7 +54,11 @@ jobs: - name: Upload coverage uses: codecov/codecov-action@v5 with: + fail_ci_if_error: true files: ./coverage/lcov.info + verbose: true + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} publish: name: Publish to npm From 36c132a6159cb11bcd96601564504b03b49d5b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 23:06:02 +0200 Subject: [PATCH 4/9] fix(ci): keep package verification stable --- .github/workflows/ci.yml | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 045308c..6093c28 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,8 @@ jobs: - name: Run typecheck run: yarn typecheck - - name: Run tests with coverage - run: yarn build && yarn c8 --all --src src --include "src/**/*.ts" --extension .ts --exclude-after-remap --reporter text --reporter lcov node --test "tests/**/*.test.mjs" + - name: Run tests + run: yarn test - name: Build docs run: yarn docs:build @@ -51,15 +51,6 @@ jobs: - name: Check npm package contents run: npm pack --dry-run - - name: Upload coverage - uses: codecov/codecov-action@v5 - with: - fail_ci_if_error: true - files: ./coverage/lcov.info - verbose: true - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - publish: name: Publish to npm runs-on: ubuntu-latest From 96fa0b60ebe6a39ebfcd69d4dc2c3ca647e74f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 23:09:28 +0200 Subject: [PATCH 5/9] fix(ci): add Codecov coverage workflow --- .github/workflows/codecov.yml | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 0000000..4f1b6a2 --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,44 @@ +name: Codecov + +on: + pull_request: + branches: + - master + - main + push: + branches: + - master + - main + +permissions: + contents: read + id-token: write + +jobs: + coverage: + name: Upload coverage + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Run tests with LCOV coverage + run: yarn build && yarn c8 --reporter text --reporter lcov node --test "tests/**/*.test.mjs" + + - name: Upload coverage + uses: codecov/codecov-action@v5 + with: + fail_ci_if_error: true + files: ./coverage/lcov.info + use_oidc: true + verbose: true From b287d9ea9d1ef441a5f7bc0994dce6c420e65f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 23:16:29 +0200 Subject: [PATCH 6/9] fix(ci): use Codecov token upload --- .github/workflows/codecov.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 4f1b6a2..f61a461 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -12,7 +12,6 @@ on: permissions: contents: read - id-token: write jobs: coverage: @@ -40,5 +39,5 @@ jobs: with: fail_ci_if_error: true files: ./coverage/lcov.info - use_oidc: true + token: ${{ secrets['CODECOV_TOKEN'] }} verbose: true From 0d1900c319b13bd4383b46f487c39532495b2368 Mon Sep 17 00:00:00 2001 From: Hasko Date: Wed, 24 Jun 2026 23:22:47 +0200 Subject: [PATCH 7/9] ci(codecov): :green_heart: Fix codecov ci --- .github/workflows/ci.yml | 43 +++++++++++++++++++---------------- .github/workflows/codecov.yml | 43 ----------------------------------- 2 files changed, 23 insertions(+), 63 deletions(-) delete mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6093c28..72d3759 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,8 +19,8 @@ permissions: contents: read jobs: - verify: - name: Verify package + test: + name: Test and coverage runs-on: ubuntu-latest steps: @@ -36,25 +36,29 @@ jobs: - name: Install dependencies run: yarn install --frozen-lockfile - - name: Run lint - run: yarn lint + - name: Run lint and tests with coverage + run: yarn lint && yarn build && yarn c8 --reporter text --reporter lcov node --test "tests/**/*.test.mjs" - name: Run typecheck run: yarn typecheck - - name: Run tests - run: yarn test - - name: Build docs run: yarn docs:build - name: Check npm package contents run: npm pack --dry-run + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 + with: + files: ./coverage/lcov.info + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + publish: name: Publish to npm runs-on: ubuntu-latest - needs: verify + needs: test concurrency: group: publish-${{ github.repository }}-${{ github.event.pull_request.base.ref }} cancel-in-progress: false @@ -85,19 +89,20 @@ jobs: with: fetch-depth: 0 ref: ${{ github.event.pull_request.base.ref }} + persist-credentials: false - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 - registry-url: https://registry.npmjs.org/ cache: yarn + registry-url: https://registry.npmjs.org/ - name: Install dependencies run: yarn install --frozen-lockfile - - name: Check npm package contents - run: npm pack --dry-run + - name: Build package + run: yarn build - name: Compute release version id: release @@ -235,10 +240,6 @@ jobs: git add package.json - if [ -f package-lock.json ]; then - git add package-lock.json - fi - if [ -f yarn.lock ]; then git add yarn.lock fi @@ -255,17 +256,19 @@ jobs: git tag -a "v${NEXT_VERSION}" -m "Release v${NEXT_VERSION} for #${PR_NUMBER}" fi - git push origin "HEAD:${BASE_BRANCH}" - git push origin "v${NEXT_VERSION}" + auth_header="$( + node -e "process.stdout.write('AUTHORIZATION: basic ' + Buffer.from('x-access-token:' + process.env.GITHUB_TOKEN).toString('base64'))" + )" + git -c "http.https://github.com/.extraheader=$auth_header" push origin "HEAD:${BASE_BRANCH}" + git -c "http.https://github.com/.extraheader=$auth_header" push origin "v${NEXT_VERSION}" env: BASE_BRANCH: ${{ github.event.pull_request.base.ref }} NEXT_VERSION: ${{ steps.release.outputs.next_version }} PR_NUMBER: ${{ github.event.pull_request.number }} + GITHUB_TOKEN: ${{ github.token }} - name: Create GitHub release notes - if: >- - steps.release.outputs.already_released != 'true' && - steps.release.outputs.next_version != '' + if: steps.release.outputs.next_version != '' shell: bash run: | set -euo pipefail diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml deleted file mode 100644 index f61a461..0000000 --- a/.github/workflows/codecov.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Codecov - -on: - pull_request: - branches: - - master - - main - push: - branches: - - master - - main - -permissions: - contents: read - -jobs: - coverage: - name: Upload coverage - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: yarn - - - name: Install dependencies - run: yarn install --frozen-lockfile - - - name: Run tests with LCOV coverage - run: yarn build && yarn c8 --reporter text --reporter lcov node --test "tests/**/*.test.mjs" - - - name: Upload coverage - uses: codecov/codecov-action@v5 - with: - fail_ci_if_error: true - files: ./coverage/lcov.info - token: ${{ secrets['CODECOV_TOKEN'] }} - verbose: true From c53fb58c985d83481776659524661ca7792a782e Mon Sep 17 00:00:00 2001 From: Hasko Date: Wed, 24 Jun 2026 23:27:53 +0200 Subject: [PATCH 8/9] test(codecov): :green_heart: Fix codecov coverage --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72d3759..cca64c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,12 +36,18 @@ jobs: - name: Install dependencies run: yarn install --frozen-lockfile - - name: Run lint and tests with coverage - run: yarn lint && yarn build && yarn c8 --reporter text --reporter lcov node --test "tests/**/*.test.mjs" + - name: Run lint + run: yarn lint - name: Run typecheck run: yarn typecheck + - name: Run tests + run: yarn test + + - name: Generate coverage report + run: yarn c8 report --reporter lcov + - name: Build docs run: yarn docs:build From a854a4e2d941710bcabeb83eb19df65c8995bc29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hask=C5=8D?= <102477627+haskou@users.noreply.github.com> Date: Wed, 24 Jun 2026 23:32:41 +0200 Subject: [PATCH 9/9] fix(ci): use tokenless Codecov upload with mapped lcov --- .github/workflows/ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cca64c9..608aa71 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,11 +42,8 @@ jobs: - name: Run typecheck run: yarn typecheck - - name: Run tests - run: yarn test - - - name: Generate coverage report - run: yarn c8 report --reporter lcov + - name: Run tests with coverage + run: yarn build && yarn c8 --all --src src --include "src/**/*.ts" --extension .ts --exclude-after-remap --reporter text --reporter lcov --check-coverage=false node --test "tests/**/*.test.mjs" - name: Build docs run: yarn docs:build @@ -58,7 +55,8 @@ jobs: uses: codecov/codecov-action@v5 with: files: ./coverage/lcov.info - token: ${{ secrets.CODECOV_TOKEN }} + slug: haskou/ddd-kernel + verbose: true fail_ci_if_error: false publish: