mirror of
https://github.com/selfxyz/self.git
synced 2026-04-27 03:01:15 -04:00
fix yarn build; add workflow ci (#1075)
* add new workspace ci * disable package version check for now * build before checks * format * fix in future pr
This commit is contained in:
198
.github/workflows/workspace-ci.yml
vendored
Normal file
198
.github/workflows/workspace-ci.yml
vendored
Normal file
@@ -0,0 +1,198 @@
|
||||
name: Workspace CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
- staging
|
||||
- main
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- staging
|
||||
- main
|
||||
|
||||
jobs:
|
||||
workspace-build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
*/node_modules
|
||||
packages/*/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Run workspace build
|
||||
run: yarn build
|
||||
|
||||
- name: Verify build artifacts
|
||||
run: |
|
||||
echo "Checking for build artifacts..."
|
||||
find . -name "dist" -type d | head -10
|
||||
echo "Build completed successfully!"
|
||||
|
||||
workspace-type-check:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
*/node_modules
|
||||
packages/*/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build workspace dependencies
|
||||
run: yarn build
|
||||
|
||||
- name: Run workspace type checking
|
||||
run: yarn types
|
||||
|
||||
- name: Verify type checking passed
|
||||
run: echo "Type checking completed successfully!"
|
||||
|
||||
workspace-lint:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
*/node_modules
|
||||
packages/*/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build workspace dependencies
|
||||
run: yarn build
|
||||
|
||||
- name: Run workspace linting
|
||||
run: yarn lint
|
||||
|
||||
- name: Verify linting passed
|
||||
run: echo "Linting completed successfully!"
|
||||
|
||||
workspace-format-check:
|
||||
if: false
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
*/node_modules
|
||||
packages/*/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Check code formatting (dry run)
|
||||
run: |
|
||||
echo "Checking if code is properly formatted..."
|
||||
# Run format in dry-run mode by checking if any files would change
|
||||
if ! git diff --quiet --exit-code; then
|
||||
echo "Working directory not clean before format check"
|
||||
git status --porcelain
|
||||
exit 1
|
||||
fi
|
||||
yarn format
|
||||
if ! git diff --quiet --exit-code; then
|
||||
echo "❌ Code formatting issues found. The following files need formatting:"
|
||||
git diff --name-only
|
||||
echo "Run 'yarn format' to fix these issues."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Verify formatting check passed
|
||||
run: echo "Code formatting check completed successfully!"
|
||||
|
||||
workspace-test:
|
||||
if: false
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Yarn dependencies
|
||||
uses: ./.github/actions/cache-yarn
|
||||
with:
|
||||
path: |
|
||||
.yarn/cache
|
||||
node_modules
|
||||
*/node_modules
|
||||
packages/*/node_modules
|
||||
cache-version: v1
|
||||
|
||||
- name: Install Dependencies
|
||||
uses: ./.github/actions/yarn-install
|
||||
|
||||
- name: Build workspace dependencies
|
||||
run: yarn build
|
||||
|
||||
- name: Run workspace tests
|
||||
run: yarn test
|
||||
|
||||
- name: Verify tests passed
|
||||
run: echo "Workspace tests completed successfully!"
|
||||
|
||||
# version-consistency:
|
||||
# runs-on: ubuntu-latest
|
||||
# permissions:
|
||||
# contents: read
|
||||
# steps:
|
||||
# - uses: actions/checkout@v4
|
||||
|
||||
# - name: Cache Yarn dependencies
|
||||
# uses: ./.github/actions/cache-yarn
|
||||
# with:
|
||||
# path: |
|
||||
# .yarn/cache
|
||||
# node_modules
|
||||
# */node_modules
|
||||
# packages/*/node_modules
|
||||
# cache-version: v1
|
||||
|
||||
# - name: Install Dependencies
|
||||
# uses: ./.github/actions/yarn-install
|
||||
|
||||
# - name: Check package version consistency
|
||||
# run: yarn check:versions
|
||||
|
||||
# - name: Verify version consistency
|
||||
# run: echo "Package version consistency check passed!"
|
||||
@@ -13,7 +13,7 @@
|
||||
"baseUrl": ".",
|
||||
"composite": false
|
||||
},
|
||||
"include": ["tests/**/*", "tests/**/*.json", "src/**/*"],
|
||||
"include": ["tests/**/*", "tests/**/*.json", "src/**/*", "../common/src/**/*"],
|
||||
"exclude": ["node_modules"],
|
||||
"references": [
|
||||
{
|
||||
|
||||
@@ -3,13 +3,9 @@
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"emitDeclarationOnly": true,
|
||||
"declarationMap": false,
|
||||
"outDir": "./dist/esm",
|
||||
"declarationDir": "./dist/esm",
|
||||
"composite": true,
|
||||
"noEmit": false,
|
||||
"rootDir": "."
|
||||
"outDir": "./dist/types",
|
||||
"skipLibCheck": true
|
||||
},
|
||||
"include": ["src/**/*", "tests/**/*", "tests/**/*.json"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "dist", "tests"]
|
||||
}
|
||||
|
||||
@@ -276,7 +276,17 @@ if (engineNodeVersions && engineNodeVersions.size > 0) {
|
||||
const workflowNodeVersions = workflowVersions.get('workflow node-version');
|
||||
if (workflowNodeVersions) {
|
||||
const mismatches = [...workflowNodeVersions.keys()]
|
||||
.filter(v => !String(v).includes(expectedNodeVersion))
|
||||
.filter(v => {
|
||||
const versionStr = String(v);
|
||||
// Skip dynamic versions like ${{ env.NODE_VERSION }} - these are set from .nvmrc
|
||||
if (
|
||||
versionStr.includes('${{') ||
|
||||
versionStr.includes('env.NODE_VERSION')
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
return !versionStr.includes(expectedNodeVersion);
|
||||
})
|
||||
.sort();
|
||||
if (mismatches.length) {
|
||||
console.log('🚨 WORKFLOW VERSION MISMATCH:');
|
||||
@@ -420,6 +430,12 @@ if (totalIssues === 0) {
|
||||
|
||||
for (const category of categories) {
|
||||
const mismatchedInCategory = category.packages.filter(pkg => {
|
||||
if (
|
||||
criticalPackages.includes(pkg) ||
|
||||
intentionallyDifferentPackages.includes(pkg)
|
||||
) {
|
||||
return false; // Skip already reported packages
|
||||
}
|
||||
const versions = depVersions.get(pkg);
|
||||
return versions && versions.size > 1;
|
||||
});
|
||||
@@ -436,4 +452,38 @@ if (totalIssues === 0) {
|
||||
}
|
||||
}
|
||||
|
||||
process.exit(totalIssues > 0 ? 1 : 0);
|
||||
// Only fail CI for critical issues that can break builds or security
|
||||
const criticalIssues = [
|
||||
hasCriticalIssues,
|
||||
hasWorkflowIssues,
|
||||
hasPmIssues,
|
||||
].filter(Boolean).length;
|
||||
|
||||
if (criticalIssues > 0) {
|
||||
console.log(
|
||||
`\n🚨 FAILING CI: Found ${criticalIssues} critical issue(s) that must be fixed.`,
|
||||
);
|
||||
process.exit(1);
|
||||
} else if (hasOtherIssues || hasIntentionalDifferences) {
|
||||
let message = '⚠️ CI PASSING: ';
|
||||
const parts = [];
|
||||
if (hasOtherIssues) parts.push('non-critical version mismatches');
|
||||
if (hasIntentionalDifferences)
|
||||
parts.push('intentional technical differences');
|
||||
message += `Found ${parts.join(' and ')}.`;
|
||||
|
||||
console.log(`\n${message}`);
|
||||
if (hasOtherIssues) {
|
||||
console.log(
|
||||
'Non-critical mismatches should be addressed but do not block development.',
|
||||
);
|
||||
}
|
||||
if (hasIntentionalDifferences) {
|
||||
console.log(
|
||||
'Intentional differences are acceptable for technical requirements.',
|
||||
);
|
||||
}
|
||||
process.exit(0);
|
||||
} else {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user