From cdec13ca2ac0c7462049ccfeb9d5f908ec94654d Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:34 -0500 Subject: [PATCH 01/16] fix(publish): atomic bump and publish per scope with should-publish filter --- .github/actions/cfdi/action.yml | 5 ++- .github/workflows/publish.yml | 48 ++++++++++++++++---- common/config/rush/version-policies.json | 12 ++--- common/scripts/github-actions.js | 56 +++++------------------- packages/cfdi/catalogos/package.json | 2 +- packages/cfdi/complementos/package.json | 2 +- packages/cfdi/csd/package.json | 2 +- packages/cfdi/csf/package.json | 2 +- packages/cfdi/xml/package.json | 2 +- packages/cfdi/xsd/package.json | 2 +- 10 files changed, 67 insertions(+), 66 deletions(-) diff --git a/.github/actions/cfdi/action.yml b/.github/actions/cfdi/action.yml index 616479f..7b23a1f 100644 --- a/.github/actions/cfdi/action.yml +++ b/.github/actions/cfdi/action.yml @@ -8,8 +8,11 @@ inputs: outputs: scopes: - description: 'JSON array of bumped scopes' + description: 'JSON array of publishable scopes' value: ${{ steps.script.outputs.scopes }} + branch: + description: 'Target branch name' + value: ${{ steps.script.outputs.branch }} runs: using: 'composite' diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a688702..6e104d0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -54,30 +54,60 @@ jobs: if: steps.branch.outputs.is_main == 'true' run: | SCOPES='${{ steps.cfdi.outputs.scopes }}' + FAILED="" for scope in $(echo "$SCOPES" | jq -r '.[]'); do - echo "Publishing version-policy: $scope" - rush publish -p -b main --version-policy "$scope" --include-all --set-access-level=public + echo "=== Publishing $scope ===" + rush version --version-policy "$scope" --bump + if rush publish -p -b main --version-policy "$scope" --include-all --set-access-level=public; then + git add -A + echo "✓ $scope published" + else + FAILED="$FAILED $scope" + git checkout -- . + echo "::warning::✗ $scope failed, reverted" + fi done + if [ -n "$FAILED" ]; then + echo "::error::Failed scopes:$FAILED" + exit 1 + fi - name: Publish (prerelease) if: steps.branch.outputs.is_main == 'false' run: | + TAG="${{ steps.branch.outputs.name }}" SCOPES='${{ steps.cfdi.outputs.scopes }}' + FAILED="" for scope in $(echo "$SCOPES" | jq -r '.[]'); do - echo "Publishing version-policy: $scope" - rush publish --publish --version-policy "$scope" --tag ${{ steps.branch.outputs.name }} --include-all --set-access-level=public --apply + echo "=== Publishing $scope ===" + rush version --version-policy "$scope" --bump --override-bump prerelease --override-prerelease-id "$TAG" + if rush publish --publish --version-policy "$scope" --tag "$TAG" --include-all --set-access-level=public --apply; then + git add -A + echo "✓ $scope published" + else + FAILED="$FAILED $scope" + git checkout -- . + echo "::warning::✗ $scope failed, reverted" + fi done + if [ -n "$FAILED" ]; then + echo "::error::Failed scopes:$FAILED" + exit 1 + fi - name: Commit version bumps run: | BRANCH="${{ steps.branch.outputs.name }}" - git add -A - if [ "$BRANCH" = "main" ]; then - git commit -m "chore: release $(date +%Y-%m-%d)" || echo "No changes to commit" + if [ -n "$(git diff --cached --name-only)" ]; then + if [ "$BRANCH" = "main" ]; then + git commit -m "chore: release $(date +%Y-%m-%d)" + else + git commit -m "chore: prerelease $BRANCH $(date +%Y-%m-%d)" + fi + git push origin $BRANCH else - git commit -m "chore: prerelease $BRANCH $(date +%Y-%m-%d)" || echo "No changes to commit" + echo "No changes to commit" fi - git push origin $BRANCH - name: Create GitHub Releases run: node common/scripts/github-release.js diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index f450ea5..c22a9c1 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -2,31 +2,31 @@ { "policyName": "xml", "definitionName": "lockStepVersion", - "version": "4.0.18-dev.0", + "version": "4.0.18-dev.1", "nextBump": "patch" }, { "policyName": "complementos", "definitionName": "lockStepVersion", - "version": "4.0.17-dev.0", + "version": "4.0.17-dev.1", "nextBump": "patch" }, { "policyName": "catalogs", "definitionName": "lockStepVersion", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "nextBump": "patch" }, { "policyName": "csd", "definitionName": "lockStepVersion", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "nextBump": "patch" }, { "policyName": "csf", "definitionName": "lockStepVersion", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "nextBump": "patch" }, { @@ -74,7 +74,7 @@ { "policyName": "xsd", "definitionName": "lockStepVersion", - "version": "4.0.17-dev.0", + "version": "4.0.17-dev.1", "nextBump": "patch" }, { diff --git a/common/scripts/github-actions.js b/common/scripts/github-actions.js index 8f27028..1a38dff 100644 --- a/common/scripts/github-actions.js +++ b/common/scripts/github-actions.js @@ -1,27 +1,4 @@ -async function execa(command, params) { - const { spawn } = require('child_process'); - const child = spawn(command, params); - - let data = ''; - for await (const chunk of child.stdout) { - //console.log('stdout chunk: ' + chunk); - data += chunk; - } - let error = ''; - for await (const chunk of child.stderr) { - //console.error('stderr chunk: ' + chunk); - error += chunk; - } - const exitCode = await new Promise((resolve, reject) => { - child.on('close', resolve); - }); - - if (exitCode) { - throw new Error(`subprocess error exit ${exitCode}, ${error}`); - } - return data; -} function getDependences(scope) { const dependencies = { xml: { @@ -201,7 +178,6 @@ module.exports = async ({ github, context, core }) => { console.log("branch:", branch); console.log("eventName:", context.eventName); - const branchs = ['next','beta', 'alpha','dev'] const eventName = context.eventName let commits = context.payload.commits || []; @@ -219,26 +195,18 @@ module.exports = async ({ github, context, core }) => { commits = commits_local.map(({commit})=>commit) } const scopes = getScopes(commits); - console.log("commits", scopes); + console.log("scopes from commits", scopes); - for (var i = 0; i < scopes.length; i++) { - const scope = scopes[i]; - const comands = [ - 'version', - '--version-policy', - scope, - '--bump', - ] - if (branchs.includes(branch)) { - comands.push('--override-bump'); - comands.push('prerelease'); - comands.push('--override-prerelease-id'); - comands.push(branch); - } - console.log(comands); - const data = await execa('rush', comands); - console.log(data); - } + // Filtrar scopes que no tienen shouldPublish: true + const rushJson = JSON.parse(require('fs').readFileSync('./rush.json', 'utf8')); + const publishablePolicies = new Set( + rushJson.projects + .filter(p => p.shouldPublish && p.versionPolicyName) + .map(p => p.versionPolicyName) + ); + const filteredScopes = scopes.filter(s => publishablePolicies.has(s)); + console.log("publishable scopes", filteredScopes); - core.setOutput('scopes', JSON.stringify(scopes)); + core.setOutput('scopes', JSON.stringify(filteredScopes)); + core.setOutput('branch', branch); }; diff --git a/packages/cfdi/catalogos/package.json b/packages/cfdi/catalogos/package.json index ba46437..bca285e 100644 --- a/packages/cfdi/catalogos/package.json +++ b/packages/cfdi/catalogos/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/catalogos", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "license": "MIT", "main": "./dist/index.cjs", "module": "./dist/index.mjs", diff --git a/packages/cfdi/complementos/package.json b/packages/cfdi/complementos/package.json index 7193b6e..a5bfa81 100644 --- a/packages/cfdi/complementos/package.json +++ b/packages/cfdi/complementos/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/complementos", - "version": "4.0.17-dev.0", + "version": "4.0.17-dev.1", "description": "Libreria para generar complementos del cfdi V4.0", "homepage": "https://cfdi.recreando.dev", "license": "MIT", diff --git a/packages/cfdi/csd/package.json b/packages/cfdi/csd/package.json index 3f501f1..8cc49b3 100644 --- a/packages/cfdi/csd/package.json +++ b/packages/cfdi/csd/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/csd", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "license": "MIT", "repository": { "type": "git", diff --git a/packages/cfdi/csf/package.json b/packages/cfdi/csf/package.json index 434fb07..c20756c 100644 --- a/packages/cfdi/csf/package.json +++ b/packages/cfdi/csf/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/csf", - "version": "4.0.16-dev.0", + "version": "4.0.16-dev.1", "license": "MIT", "main": "./dist/index.cjs", "module": "./dist/index.mjs", diff --git a/packages/cfdi/xml/package.json b/packages/cfdi/xml/package.json index ff8ad71..cf4b9af 100644 --- a/packages/cfdi/xml/package.json +++ b/packages/cfdi/xml/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/xml", - "version": "4.0.18-dev.0", + "version": "4.0.18-dev.1", "description": "Libreria para crear y sellar xml cfdi V4.0", "homepage": "https://cfdi.recreando.dev", "license": "MIT", diff --git a/packages/cfdi/xsd/package.json b/packages/cfdi/xsd/package.json index df26851..e2b686b 100644 --- a/packages/cfdi/xsd/package.json +++ b/packages/cfdi/xsd/package.json @@ -1,6 +1,6 @@ { "name": "@cfdi/xsd", - "version": "4.0.17-dev.0", + "version": "4.0.17-dev.1", "license": "MIT", "main": "./dist/index.cjs", "module": "./dist/index.mjs", From f8ac26a8da9691aa33d4b97f9e7296a7710f419b Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:43 -0500 Subject: [PATCH 02/16] chore(xml): trigger publish From abbdedab7595eb4a3e4f31f0bf4791bccaf43330 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:44 -0500 Subject: [PATCH 03/16] chore(complementos): trigger publish From cb76227edf48c5401c89746b3d9d1796c0e53ffb Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:45 -0500 Subject: [PATCH 04/16] chore(xsd): trigger publish From e5fde40112a78b7db7b34cb7d6ef672f22575a9c Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:46 -0500 Subject: [PATCH 05/16] chore(csd): trigger publish From b11c22255798c9526b7ffd90472618c7f2737865 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:47 -0500 Subject: [PATCH 06/16] chore(csf): trigger publish From 09a47fc073f73b80629a31f5ff9f763a903e475f Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:49 -0500 Subject: [PATCH 07/16] chore(catalogs): trigger publish From b40bae89f1b46663bd4ce376d42ba4c3040bb3b4 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:50 -0500 Subject: [PATCH 08/16] chore(utils): trigger publish From 7e8f9aceed9cfa9ab3825b9d1109e3218f5e1c8e Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:51 -0500 Subject: [PATCH 09/16] chore(rfc): trigger publish From 493ba13c3800135335a2f1d94c22d4e9614339dd Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:52 -0500 Subject: [PATCH 10/16] chore(openssl): trigger publish From 1f40f5238a73a6578aae5d4bdcef25adb210953f Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:53 -0500 Subject: [PATCH 11/16] chore(saxon): trigger publish From 760c64a59dbd3e68b71bbf427ebe4c167900fa31 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:54 -0500 Subject: [PATCH 12/16] chore(types): trigger publish From 508cb66ec2466394b24c844b7bacca2184c348cf Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:55 -0500 Subject: [PATCH 13/16] chore(transform): trigger publish From c994c876b889f205e303f0d87c82d1bb7fe96da1 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:56 -0500 Subject: [PATCH 14/16] chore(2json): trigger publish From 6c98c08ea3c000481670eeb4dedce842a75ee550 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:57 -0500 Subject: [PATCH 15/16] chore(expresiones): trigger publish From a73ceb0e4e5ad6f1917a1e26bef2d9dbd38f4c04 Mon Sep 17 00:00:00 2001 From: MisaelMa Date: Tue, 7 Apr 2026 12:00:58 -0500 Subject: [PATCH 16/16] chore(elements): trigger publish