Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
15a97e2
Merge pull request #19 from InditexTech/main
ivanasabi Sep 3, 2026
0224e0c
chore(ci-governance): adopt Node profile
inditextechci-sync[bot] Sep 3, 2026
61bd49d
fix(ci): align product with governed verification
ivanasabi Sep 3, 2026
19e8f3a
chore(ci): refresh scanner annotations
ivanasabi Sep 3, 2026
526c6f3
Merge pull request #20 from InditexTech/automated/ci-governance-sync
ivanasabi Sep 9, 2026
da120ad
chore(ci-governance): synchronize Node profile
inditextechci-sync[bot] Sep 20, 2026
4f05b5f
chore(ci-governance): synchronize Node profile
inditextechci-sync[bot] Sep 21, 2026
185892f
chore(ci-governance): synchronize Node profile (#25)
inditextechci-sync[bot] Sep 22, 2026
e67bcd8
docs: CONTRIBUTING cleanup (empty section, grammar) (#26)
amagan Sep 22, 2026
04f1faf
fix: js-yaml maxtotalmergekeys security issue (#28)
bpedro Sep 22, 2026
032f91b
ci: enable Dependabot version updates (Scorecard DependencyUpdateTool)
ivanasabi Sep 24, 2026
635e61a
ci: add REUSE header to dependabot.yml
ivanasabi Sep 24, 2026
97de227
fix: add verify script to align main with develop CI
ivanasabi Sep 24, 2026
22db5f8
Merge pull request #30 from InditexTech/main
ivanasabi Sep 24, 2026
5c113ed
chore(ci-governance): synchronize Node profile
inditextechci-sync[bot] Sep 24, 2026
88d37fc
chore(ci-governance): synchronize Node profile
inditextechci-sync[bot] Sep 25, 2026
ba967da
chore(ci-governance): synchronize Node profile
inditextechci-sync[bot] Sep 27, 2026
e3e50de
Merge pull request #37 from InditexTech/automated/ci-governance-sync
ivanasabi Sep 29, 2026
1dcab6c
chore(deps-dev): bump vitest from 4.1.11 to 5.0.1 (#31)
dependabot[bot] Oct 9, 2026
a58c4b5
chore(deps-dev): bump swagger-ui-react from 5.32.14 to 5.33.0 (#33)
dependabot[bot] Oct 9, 2026
f44f9a1
chore(deps-dev): bump prettier from 3.9.6 to 3.9.8 (#34)
dependabot[bot] Oct 9, 2026
1bc9ff9
chore(ci-governance): synchronize Node profile (#38)
inditextechci-sync[bot] Oct 9, 2026
95ea988
chore(deps): bump undici from 7.29.0 to 7.30.0 (#39)
dependabot[bot] Oct 9, 2026
ee583e6
chore(deps-dev): bump dompurify from 3.4.14 to 3.4.16 (#40)
dependabot[bot] Oct 9, 2026
6fd1f70
fix(security): bump undici, dompurify and brace-expansion lockfile ve…
ivanasabi Oct 9, 2026
db41f97
chore(deps): bump source-map-js from 1.2.1 to 1.2.2 (#43)
dependabot[bot] Oct 9, 2026
ad9ae95
chore(deps-dev): bump brace-expansion from 1.1.18 to 1.1.21 (#45)
dependabot[bot] Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/1-bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
name: Bug Report
description: Report a reproducible bug
title: "[Bug] "
labels: ["bug"]
title: '[Bug] '
labels: ['bug']
assignees: []

body:
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/2-feature.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
name: Feature Request
description: Suggest a feature or improvement
title: "[Feature] "
labels: ["enhancement"]
title: '[Feature] '
labels: ['enhancement']
assignees: []

body:
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/3-other.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# SPDX-License-Identifier: Apache-2.0
name: Other
description: Use this for anything that doesn't fit the other templates
title: "[Other] "
labels: ["discussion"]
title: '[Other] '
labels: ['discussion']
assignees: []

body:
Expand Down
2 changes: 0 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ Briefly describe the purpose of this PR and what changes it introduces.
- [ ] Commits are **signed** (`git commit -S`)
- [ ] Commit messages follow **Conventional Commits**
- [ ] Documentation has been updated (if needed)
- [ ] The target branch follows the git flow model (`develop` for feature/fix PRs, `main` for release/hotfix PRs)
- [ ] PRs targeting `main` have a `release-type/...` label or are intentionally marked `skip-release`
- [ ] I have read and agree to the project’s [Code of Conduct](../CODE_OF_CONDUCT.md)
- [ ] I have signed the [Contributor License Agreement (CLA)](../CONTRIBUTING.md)

Expand Down
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# SPDX-FileCopyrightText: 2026 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
#
# SPDX-License-Identifier: Apache-2.0

version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
6 changes: 6 additions & 0 deletions .github/inditextech-ci-node.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"project_type": "single",
"publish_snapshot": true,
"schema_version": 1,
"working_directory": "."
}
62 changes: 62 additions & 0 deletions .github/inditextech-ci-sync-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"configuration": {
"branch_roles": {
"development_branch": "develop",
"release_branch": "main"
},
"development_flow": "git-flow",
"outputs": [
"publish"
],
"parameters": {
"project_type": "single",
"publish_snapshot": true,
"working_directory": "."
}
},
"creation_year": 2026,
"integrity": {
"algorithm": "hmac-sha256",
"signature": "30da579cb160780970680b47a0265f360eb311100c20e8d0d3948bf03c146577"
},
"managed_by": "InditexTech CI governance",
"managed_paths": {
".github/ISSUE_TEMPLATE/1-bug.yml": "cd4dad3f32fe707e06324790a2fe2c25829c55566de2b459d744e785b36e1205",
".github/ISSUE_TEMPLATE/2-feature.yml": "ebb92730d6c01641d055f97ac094cbe07f88fac24be9b689ddf26e47e7bda863",
".github/ISSUE_TEMPLATE/3-other.yml": "5a839b39a98704036210dee498146f51bd5a6c057228685680e02004ff063a9a",
".github/ISSUE_TEMPLATE/config.yml": "10e5dee4d49aa9e7792ceb4c986160c61f95da1ba00a64bf06e5f1f636cd17ec",
".github/PULL_REQUEST_TEMPLATE.md": "23a0b0ac79a9020ccac9c013582a01f86e2df2ae7f914673583b9a3368313041",
".github/inditextech-ci-node.json": "72449d1243d714b1ef9bd615e6dc67d0ec0b25f0c73440a08fa34d1e498864ac",
".github/workflows/code-npm_node-PR_verify.yml": "2d4430d765f4a7539ae64fc75cb8254cc09fdcaa7a2a805faada3865887262ce",
".github/workflows/code-npm_node-publish-release-and-snapshot.yml": "b8743248b8882fc5c3de16acc455c9660fde8bcf686784f0a21e7989cb66ccf7",
".github/workflows/code-npm_node-release-core.yml": "4d049809fb1d88f41b15c28cbe62b164dfe1be297ab6d7db38a685e9f693bcaa",
".github/workflows/code-npm_node-sonarcloud-analysis.yml": "e86284867ae0bb193af66233d87f3f78ea7e7a0c9d33bd0e80432486245bf12b",
".github/workflows/code-release_preview.yml": "4e2e95d60a498eb12d97ba5c8330b1173f04b02c807140beddad06a6e225b166",
".github/workflows/codeql.yml": "3deedabd1c2469f05588157631078d85528e538e094f3e603e26c04894303d38",
".github/workflows/pr-verify.yml": "5628d1d93c09cb761602fcfc3857c325e2dc542cadc159a1edad58d1818d0de0",
".github/workflows/push-verify.yml": "643f6905fa30284af4a2eabac752293b2e785a5e82449bb6d97950624386829c",
".github/workflows/scorecard-analysis.yml": "b45c2a0f87801796cefb4363d9f1414891b0734bc07de3f50d4a880e22faea10",
".github/workflows/sync-to-develop.yml": "2f80696aeb3aa35a47944535539ca1887a8cea0cf11dd62e1a103497aa395acc",
".tool-versions": "5e7b05edf5d8df174df5dd99d012e57666ec9923ac8506df7dc7753ba41815fd",
"CODE_OF_CONDUCT.md": "ce1e7a8f68a7917d48c03f9f7aae5529367f73af0e959276e889d33ea1e8d4ab",
"CONTRIBUTING.md": "4e1264ca54a45df44b362c7533f0eba912bfa77b6f561121ae9e5e9d6aa00df3",
"SECURITY.md": "0ee7a3356bc3a1c7649e3b7a6a9012b0608011be2b1ff8d106ad02c8950bab25",
"repolinter.json": "0efb305c47a63f03c488a34906fc2d5471c84145c2ff553f2aacf3a41b92e1a1"
},
"managed_variables": {
"DEVELOPMENT_FLOW": "git-flow",
"GIT_FLOW_DEVELOPMENT_BRANCH": "develop",
"GIT_FLOW_RELEASE_BRANCH": "main",
"PROJECT_TYPE": "single",
"PUBLISH_SNAPSHOT": "true",
"WORKING_DIRECTORY": "."
},
"profile": "node",
"repository_id": 1291909277,
"retained_paths": {},
"schema_version": 2,
"source_digests": {
"base": "d0ba4f054c8e0a0d6c828d02718efc01251f7897cfcbe864d3c76ef304dc4a13",
"node": "f96646bb1913b7965d0e5def0800aa90b68e36ce89487f555f6e9a0d1162119b"
}
}
16 changes: 0 additions & 16 deletions .github/workflows/code-PR_verify-fallback.yml

This file was deleted.

192 changes: 85 additions & 107 deletions .github/workflows/code-npm_node-PR_verify.yml
Original file line number Diff line number Diff line change
@@ -1,138 +1,116 @@
# SPDX-FileCopyrightText: 2026 INDUSTRIA DE DISEÑO TEXTIL S.A. (INDITEX S.A.)
# SPDX-License-Identifier: Apache-2.0
---
name: code-npm-PR-verify

concurrency:
group: code-PR-verify-${{ github.event.pull_request.number }}
cancel-in-progress: true
name: code-npm-node-PR-verify

on:
pull_request:
paths:
- "package.json"
- "package-lock.json"
- ".npmrc"
- ".tool-versions"
- "CHANGELOG.md"
- "src/**"
- "types/**"
- "example/**"
- "*.config.*"
- ".prettier*"
- ".github/workflows/code*"
types: [opened, synchronize, ready_for_review, reopened]

permissions:
contents: read

concurrency:
group: code-npm-node-pr-verify-${{ github.repository }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

env:
PROJECT_TYPE: ${{ vars.PROJECT_TYPE }}
WORKING_DIRECTORY: ${{ vars.WORKING_DIRECTORY }}
PACKAGE_MANAGER: ${{ vars.PACKAGE_MANAGER }}
ASDF_BRANCH_VERSION: '0.18.0'

jobs:
unit-tests:
verify:
name: Code / Verify
timeout-minutes: 60
runs-on: ubuntu-24.04
permissions:
contents: read
env:
ASDF_BRANCH_VERSION: 0.18.0
timeout-minutes: 30
steps:
- name: Checkout / Branch Head
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Check out pull request head
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha }}

- name: Detect NPM project
id: project
run: |
if [ -f package.json ]; then
echo "has-package=true" >> "$GITHUB_OUTPUT"
else
echo "::notice::package.json is not present yet; skipping NPM verification for the OSS shell PR."
echo "has-package=false" >> "$GITHUB_OUTPUT"
fi

- name: NPM / Setup Dependencies Cache
if: steps.project.outputs.has-package == 'true'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-

- name: asdf / Setup Dependencies Cache
if: steps.project.outputs.has-package == 'true'
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
id: asdf-cache
with:
path: ~/.asdf
key: ${{ runner.os }}-asdf-${{ env.ASDF_BRANCH_VERSION }}-${{ hashFiles('.tool-versions') }}

- name: Validate tool-versions content
if: steps.project.outputs.has-package == 'true'
- name: Resolve governed project type
shell: bash
run: |
if [ ! -f .tool-versions ]; then
echo "::error::.tool-versions is required for NPM workflows"
set -euo pipefail
descriptor="$GITHUB_WORKSPACE/.github/inditextech-ci-node.json"
if [[ ! -f "$descriptor" ]]; then
echo "::error title=Missing descriptor::.github/inditextech-ci-node.json not found."
exit 1
fi
if grep -Evq '^[a-zA-Z0-9_-]+ [a-zA-Z0-9._+-]+$' .tool-versions; then
echo "::error::Invalid .tool-versions content detected"
project_type="$(jq -r '.project_type // empty' "$descriptor")"
case "$project_type" in
single|workspaces) ;;
*)
echo "::error title=Invalid project type::Descriptor .project_type must be single or workspaces."
exit 1
;;
esac
workdir="${WORKING_DIRECTORY:-$(jq -r '.working_directory // empty' "$descriptor")}"
case "$workdir" in
""|/*|..|../*|*/..|*/../*)
echo "::error title=Invalid working directory::WORKING_DIRECTORY must be a non-empty relative repository path." >&2
exit 1
;;
esac
if [[ ! -d "$workdir" ]]; then
echo "::error title=Missing working directory::'${workdir}' is not a directory in this checkout." >&2
exit 1
fi
echo "PROJECT_TYPE=$project_type" >> "$GITHUB_ENV"
echo "WORKING_DIRECTORY=${workdir}" >> "$GITHUB_ENV"

- name: Save tool-versions content
if: steps.project.outputs.has-package == 'true'
- name: Read governed tool versions
id: tool-versions
working-directory: ${{ env.WORKING_DIRECTORY }}
shell: bash
run: |
set -euo pipefail
if grep -Evq '^[a-zA-Z0-9_-]+ [a-zA-Z0-9._+-]+$' .tool-versions; then
echo "::error title=Invalid tool-versions::${WORKING_DIRECTORY}/.tool-versions is malformed."
exit 1
fi
{
echo "TOOL_VERSIONS<<EOF"
echo "tool_versions<<EOF"
cat .tool-versions
echo
echo "EOF"
} >> "$GITHUB_ENV"
} >> "$GITHUB_OUTPUT"

- name: NPM / Setup asdf environment
if: steps.project.outputs.has-package == 'true' && steps.asdf-cache.outputs.cache-hit != 'true'
uses: asdf-vm/actions/install@1902764435ca0dd2f3388eea723a4f92a4eb8302 # v4.0.0
- name: Set up asdf-managed Node
uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47 # v4.0.1
with:
tool_versions: ${{ env.TOOL_VERSIONS }}
tool_versions: ${{ steps.tool-versions.outputs.tool_versions }}
asdf_version: ${{ env.ASDF_BRANCH_VERSION }}

- name: Restore asdf shims to PATH
if: steps.project.outputs.has-package == 'true' && steps.asdf-cache.outputs.cache-hit == 'true'
run: |
echo "$HOME/.asdf/bin" >> "$GITHUB_PATH"
echo "$HOME/.asdf/shims" >> "$GITHUB_PATH"
cp .tool-versions "$HOME/.tool-versions"

- name: NPM / Set npmrc registry
if: steps.project.outputs.has-package == 'true'
env:
NPM_REGISTRY: "https://registry.npmjs.org/"
run: |
echo "registry=${NPM_REGISTRY}" >> "$HOME/.npmrc"
echo "@inditextech:registry=${NPM_REGISTRY}" >> "$HOME/.npmrc"

- name: NPM / Create Cache Folders
if: steps.project.outputs.has-package == 'true'
run: mkdir -p "$HOME"/.npm

- name: NPM / Install dependencies
if: steps.project.outputs.has-package == 'true'
run: npm ci

- name: NPM / Verify
if: steps.project.outputs.has-package == 'true'
run: |
if node -e "process.exit(require('./package.json').scripts?.verify ? 0 : 1)"; then
npm run verify
else
npm run lint --if-present
npm run format:check --if-present
npm run test --if-present
npm run build --if-present
fi

- name: Store project information
if: steps.project.outputs.has-package == 'true'
id: version
- name: Verify, test, and build
working-directory: ${{ env.WORKING_DIRECTORY }}
shell: bash
run: |
echo "app-version=$(jq -r ".version" package.json)" >> "$GITHUB_OUTPUT"
echo "app-name=$(jq -r ".name" package.json)" >> "$GITHUB_OUTPUT"
echo "github-repository=$(echo "$GITHUB_REPOSITORY" | cut -d'/' -f2)" >> "$GITHUB_OUTPUT"
set -euo pipefail
case "$PROJECT_TYPE" in
single|workspaces) : ;;
*)
echo "::error title=Invalid project type::PROJECT_TYPE must be single or workspaces."
exit 1
;;
esac
case "${PACKAGE_MANAGER:-npm}" in
npm)
npm ci
npm run verify
;;
pnpm)
corepack enable
pnpm install --frozen-lockfile
pnpm run verify
;;
*)
echo "::error title=Invalid package manager::PACKAGE_MANAGER must be npm or pnpm."
exit 1
;;
esac
Loading
Loading