Skip to content

chore: update lockfile #149

chore: update lockfile

chore: update lockfile #149

Workflow file for this run

name: CI
on:
pull_request:
branches: [ master, develop ]
push:
branches: [ master, develop ]
permissions:
contents: read
pull-requests: write
issues: write
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- run: pnpm install --frozen-lockfile
- name: Lint
run: |
if pnpm run | grep -q "^ *lint *"; then pnpm run lint; else echo "no lint script"; fi
- name: Typecheck
run: pnpm run typecheck
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Test
run: |
if pnpm run | grep -q "^ *test *"; then pnpm test -- --coverage; else echo "no test script"; fi
pnpm --filter @scrolloop/react test:e2e
- name: Report Coverage
if: success() && github.event_name == 'pull_request'
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const path = require('path');
const packagesDir = 'packages';
if (!fs.existsSync(packagesDir)) return;
const dirs = fs.readdirSync(packagesDir);
const validPackages = dirs.filter(dir => {
const summaryPath = path.join(packagesDir, dir, 'coverage', 'coverage-summary.json');
return fs.existsSync(summaryPath);
});
if (validPackages.length === 0) return;
let message = '## 📊 Test Coverage Report (vitest) \n\n';
message += '| Package | Statements | Branches | Functions | Lines |\n';
message += '| :--- | :--- | :--- | :--- | :--- |\n';
const metrics = ['statements', 'branches', 'functions', 'lines'];
for (const pkg of validPackages) {
const summaryPath = path.join(packagesDir, pkg, 'coverage', 'coverage-summary.json');
const summary = JSON.parse(fs.readFileSync(summaryPath, 'utf8'));
const total = summary.total;
message += `| **@scrolloop/${pkg}** |`;
for (const metric of metrics) {
const data = total[metric];
message += ` ${data.covered}/${data.total} (${data.pct}%) |`;
}
message += '\n';
}
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: message
});
- name: Build
run: pnpm run build
publish:
needs: ci
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads/master')
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node (npm registry)
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- run: pnpm install --frozen-lockfile
- run: pnpm run build
- name: Decide publish
id: decide_publish
run: |
set -e
PKG_NAME=$(jq -r .name package.json)
PKG_VERSION=$(jq -r .version package.json)
echo "name=$PKG_NAME" >> $GITHUB_OUTPUT
echo "version=$PKG_VERSION" >> $GITHUB_OUTPUT
PUBLISHED=$(npm view "${PKG_NAME}@${PKG_VERSION}" version || true)
if [ "$PUBLISHED" = "$PKG_VERSION" ]; then
echo "publish=false" >> $GITHUB_OUTPUT
else
echo "publish=true" >> $GITHUB_OUTPUT
fi
- name: Show publish decision
run: |
echo "Package: ${{ steps.decide_publish.outputs.name }}"
echo "Version: ${{ steps.decide_publish.outputs.version }}"
echo "Will publish: ${{ steps.decide_publish.outputs.publish }}"
- name: Publish to npm
if: steps.decide_publish.outputs.publish == 'true'
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
pnpm publish --access public --no-git-checks