Term extraction: Build your application (CI/CD) - candidate list
#### Context
Part of the EN baseline term extraction (#916+). The hub and sub-pages of the [Use CI/CD to build your application](https://docs.gitlab.com/topics/build_your_application/) section were scanned for terminology candidates.
Pages processed:
- Hub: `doc/topics/build_your_application.md`
- `doc/ci/_index.md` (Getting started)
- `doc/ci/runners/_index.md`
- `doc/ci/pipelines/_index.md`
- `doc/ci/jobs/_index.md`
- `doc/ci/components/_index.md`
- `doc/ci/variables/_index.md`
- `doc/ci/pipeline_security/_index.md`
- `doc/topics/autodevops/_index.md`
- `doc/ci/testing/_index.md`
- `doc/ci/gitlab_google_cloud_integration/_index.md`
- `doc/ci/ci_cd_for_external_repos/_index.md`
**Scope note:** extraction was limited to the section `_index` pages listed above — one level below the hub. Sub-pages (e.g. Scheduled pipelines, Types of pipelines, Compute minutes, Pipeline architectures) were not scanned. Additional scope needs to be defined for a deeper pass.
Each candidate was evaluated against the extraction criteria in [`terminology_artifacts/term-brief.md`](https://gitlab.com/gitlab-com/localization/docs-site-localization/-/blob/main/terminology_artifacts/term-brief.md) using the 8-criteria framework (2+ criteria required) plus the translation-risk test. Criteria: 1=Terminologization, 2=Confusability, 3=Specialization, 4=Frequency, 5=Visibility, 6=Novelty, 7=System relationships, 8=Standardization potential.
CI/CD terms already covered in #923 and the pilot TBX are not repeated here.
@maud-L , before we proceed to writing TBX briefs and entries, your guidance is needed on:
1. Which terms should be included vs. skipped
2. For flagged Quickterm situations in the Notes column — add a comment or resolution
#### How to review
1. **Read the table**
2. **Work through the checklist at the bottom** - check the box to include a term in the TBX, leave it unchecked to skip it.
3. **Add an inline comment on a checklist line** if you have a question, a different FR suggestion, or a reason for skipping.
#### Extracted terms
<table>
<tr>
<th>Term</th>
<th>File(s)</th>
<th>Count</th>
<th>In Quickterm</th>
<th>FR (from Quickterm)</th>
<th>Notes</th>
</tr>
<tr>
<td>stage</td>
<td>doc/ci/pipelines/_index.md, doc/ci/jobs/_index.md, doc/ci/_index.md</td>
<td>~40</td>
<td>Yes (Preferred)</td>
<td>étape (Preferred — FR stored on "pipeline stage" admitted row in Quickterm)</td>
<td>Critical false friend: French <em>stage</em> = internship. GitLab sense = a named execution phase grouping jobs. Quickterm confirms FR = "étape" (Preferred). Criteria: 1,2,3,4,7,8.</td>
</tr>
<tr>
<td>downstream pipeline</td>
<td>doc/ci/pipelines/_index.md, doc/ci/jobs/_index.md</td>
<td>~17</td>
<td>No</td>
<td></td>
<td><code>downstream</code> alone → <code>downstream</code> (DNT, Preferred) in Quickterm, but <code>upstream</code> → <code>en amont</code>. The pair has inconsistent treatment — needs resolution together. Criteria: 1,2,3,4,7,8.</td>
</tr>
<tr>
<td>upstream pipeline</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~4</td>
<td>No</td>
<td></td>
<td>Complement to downstream pipeline. <code>upstream</code> → <code>en amont</code> in Quickterm but <code>downstream</code> = DNT. Must be resolved as a pair. Criteria: 1,2,3,7,8.</td>
</tr>
<tr>
<td>parent-child pipeline</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~8</td>
<td>Yes</td>
<td>pipeline parent-enfant (Preferred)</td>
<td>Specific GitLab pipeline architecture: a pipeline that triggers child pipelines within the same project. Distinct from multi-project pipeline. FR confirmed by Quickterm: <em>pipeline parent-enfant</em>. Criteria: 1,3,4,7,8.</td>
</tr>
<tr>
<td>multi-project pipeline</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~5</td>
<td>Yes (no FR)</td>
<td></td>
<td>Pipeline spanning multiple GitLab projects. Distinct from parent-child pipeline. Entry exists in Quickterm but FR is empty. Criteria: 1,3,4,7,8.</td>
</tr>
<tr>
<td>merge request pipeline</td>
<td>doc/ci/pipelines/_index.md, doc/ci/_index.md</td>
<td>~12</td>
<td>Yes (no FR)</td>
<td></td>
<td>Pipeline triggered specifically by MR events. Entry in Quickterm, FR empty. Compound is doubly unstable: both <em>merge request</em> and <em>pipeline</em> have translation debates. Criteria: 1,3,4,5,7,8.</td>
</tr>
<tr>
<td>merged results pipeline</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~5</td>
<td>Yes</td>
<td>pipeline de résultats de merge (Preferred)</td>
<td>Runs as if the source branch has already been merged. High confusability with merge request pipeline — translators may not distinguish the two. Criteria: 1,2,3,7,8.</td>
</tr>
<tr>
<td>merge train</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~4</td>
<td>Yes</td>
<td>merge train (Preferred, DNT)</td>
<td>Queue mechanism for serial merging using merged results pipelines. Quickterm confirms DNT. Criteria: 1,2,3,6,7.</td>
</tr>
<tr>
<td>pipeline schedule</td>
<td>doc/ci/pipelines/_index.md, doc/ci/variables/_index.md</td>
<td>~8</td>
<td>Yes</td>
<td>planification de pipeline (Preferred)</td>
<td>A configured object that triggers a pipeline at a defined time (cron-like). Distinct from simply 'scheduling.' Criteria: 1,3,4,5,8.</td>
</tr>
<tr>
<td>pipeline trigger</td>
<td>doc/ci/pipelines/_index.md, doc/ci/jobs/_index.md</td>
<td>~10</td>
<td>Yes (no FR)</td>
<td></td>
<td>Both a concept (triggering a pipeline) and a mechanism (the trigger object). FR entry in Quickterm but empty. FR: <em>déclencheur</em> (generic) vs. <em>trigger</em> (EN borrow) — known FR inconsistency. Criteria: 1,2,3,4,7,8.</td>
</tr>
<tr>
<td>pipeline trigger token / trigger token</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~6</td>
<td>Yes</td>
<td>token pour déclencheur (Preferred)</td>
<td>An authentication token used to trigger a pipeline via the API. Distinct from job token and deploy token. Quickterm: Preferred EN = "pipeline trigger token" (Full form); "trigger token" is Admitted abbreviated form. FR = <em>token pour déclencheur</em> (Preferred). Criteria: 1,2,3,4,7,8.</td>
</tr>
<tr>
<td>trigger job</td>
<td>doc/ci/jobs/_index.md, doc/ci/pipelines/_index.md</td>
<td>~6</td>
<td>No</td>
<td></td>
<td>A CI/CD job whose purpose is to trigger a downstream pipeline (uses the <code>trigger:</code> keyword). Distinct from a regular job. Not in Quickterm. FR: <em>tâche déclencheuse</em> or <em>job déclencheur</em> — high ambiguity. Criteria: 1,3,7,8.</td>
</tr>
<tr>
<td>pipeline subscription</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~4</td>
<td>No</td>
<td></td>
<td>Mechanism for subscribing a downstream project to trigger a pipeline when an upstream project's tag pipeline completes. 'Subscription' has a billing/SaaS connotation — high confusability. Not in Quickterm. Criteria: 1,3,7,8.</td>
</tr>
<tr>
<td>CI/CD variable</td>
<td>doc/ci/variables/_index.md, doc/ci/_index.md, doc/ci/pipelines/_index.md</td>
<td>~60</td>
<td>Yes</td>
<td>variable CI/CD (Preferred)</td>
<td>Word order inverted in FR — easy to get wrong without guidance. Criteria: 1,2,3,4,8.</td>
</tr>
<tr>
<td>predefined variable</td>
<td>doc/ci/variables/_index.md, doc/ci/_index.md</td>
<td>~15</td>
<td>Yes (plural)</td>
<td>variables prédéfinies (Preferred)</td>
<td>Variables set automatically by GitLab before a job runs. Must be paired consistently with custom variable. Criteria: 1,3,4,5,8.</td>
</tr>
<tr>
<td>custom variable</td>
<td>doc/ci/variables/_index.md, doc/ci/_index.md</td>
<td>~8</td>
<td>No</td>
<td></td>
<td>User-created CI/CD variable, as opposed to a predefined one. Forms a pair with predefined variable — must be translated consistently. Not in Quickterm. FR: <em>variable personnalisée</em> is likely. Criteria: 1,3,4,7,8.</td>
</tr>
<tr>
<td>masked variable</td>
<td>doc/ci/variables/_index.md</td>
<td>~8</td>
<td>Yes</td>
<td>variable masquée (Preferred)</td>
<td>Variable whose value is replaced by <code>[MASKED]</code> in job logs. One of three security variable types — must be kept distinct from protected and hidden. Criteria: 1,2,3,5,7,8.</td>
</tr>
<tr>
<td>protected variable</td>
<td>doc/ci/variables/_index.md, doc/ci/pipelines/_index.md</td>
<td>~10</td>
<td>Yes</td>
<td>variable protégée (Preferred)</td>
<td>Variable accessible only on protected branches/tags. Must be consistent with protected runner and distinct from masked and hidden. Criteria: 1,2,3,4,5,7,8.</td>
</tr>
<tr>
<td>hidden variable</td>
<td>doc/ci/variables/_index.md</td>
<td>~4</td>
<td>No</td>
<td></td>
<td>Newest of the three security variable types (GitLab 17.4+): prevents value from appearing in UI settings pages, beyond masking. High risk of being conflated with <em>variable masquée</em> in translation. Not in Quickterm. FR: <em>variable masquée</em> is already taken — needs a distinct term. Criteria: 1,2,3,6,7,8.</td>
</tr>
<tr>
<td>CI/CD component</td>
<td>doc/ci/components/_index.md, doc/ci/_index.md</td>
<td>~100</td>
<td>Partial</td>
<td>composant CI/CD de prébuild (Preferred, as pre-built CI/CD component)</td>
<td>Reusable, versioned single pipeline configuration unit (GA v17.0). No standalone Quickterm entry — only the compound <code>pre-built CI/CD component</code>. Criteria: 1,3,4,5,6,8.</td>
</tr>
<tr>
<td>CI/CD Catalog</td>
<td>doc/ci/components/_index.md</td>
<td>~30</td>
<td>Yes (as CI/CD catalog)</td>
<td>catalogue CI/CD (Preferred)</td>
<td>The GitLab marketplace for published CI/CD components. Criteria: 1,3,5,6,8.</td>
</tr>
<tr>
<td>component project</td>
<td>doc/ci/components/_index.md</td>
<td>~15</td>
<td>No</td>
<td></td>
<td>A GitLab project specifically structured to host CI/CD components. 'Project' is generic — 'component project' is a defined entity type. Not in Quickterm. FR: <em>projet de composant</em> risks confusion with any project containing components informally. Criteria: 1,3,6,8.</td>
</tr>
<tr>
<td>CI/CD input</td>
<td>doc/ci/components/_index.md, doc/ci/variables/_index.md, doc/ci/pipelines/_index.md</td>
<td>~50</td>
<td>Yes</td>
<td>intrant CI/CD (Admitted); intrant GitLab CI/CD (Preferred)</td>
<td>Typed, validated parameters passed to components and pipelines. Distinct from CI/CD variables — conflation is a key security risk. FR: Quickterm confirms <em>intrant</em>, which is unusual in tech — a translator may use <em>paramètre</em> or <em>entrée</em> without guidance. Criteria: 1,2,3,4,5,6,7,8.</td>
</tr>
<tr>
<td>compliance pipeline</td>
<td>doc/ci/pipelines/_index.md</td>
<td>~3</td>
<td>No</td>
<td></td>
<td>Pipeline configuration enforced by compliance frameworks that runs alongside project pipelines. Confusable with 'a pipeline that is compliant.' FR: <em>pipeline de conformité</em> vs. <em>pipeline réglementaire</em>. Criteria: 1,2,3,5,7.</td>
</tr>
<tr>
<td>pipeline execution policy</td>
<td>doc/ci/jobs/_index.md, doc/ci/variables/_index.md</td>
<td>~6</td>
<td>Yes</td>
<td>stratégie d'exécution des pipelines (Preferred)</td>
<td>Security policy that controls pipeline execution. Quickterm uses <em>stratégie</em> not <em>politique</em>. Must be paired consistently with scan execution policy. Criteria: 1,2,3,5,6,8.</td>
</tr>
<tr>
<td>scan execution policy</td>
<td>doc/ci/jobs/_index.md, doc/ci/pipelines/_index.md</td>
<td>~5</td>
<td>No</td>
<td></td>
<td>Security policy injecting security scan jobs into pipelines. Not in Quickterm — must follow the same <em>stratégie d'exécution de...</em> pattern as pipeline execution policy. Criteria: 1,2,3,5,7,8.</td>
</tr>
<tr>
<td>supply chain security</td>
<td>doc/ci/pipeline_security/_index.md</td>
<td>~3</td>
<td>No</td>
<td></td>
<td>Quickterm has related: <code>software supply chain</code> → <em>chaîne d'approvisionnement logicielle</em>. Risk: <em>chaîne logistique</em> (non-software supply chain) is a false friend. Criteria: 1,2,3,5,8.</td>
</tr>
<tr>
<td>secrets management</td>
<td>doc/ci/pipeline_security/_index.md, doc/ci/variables/_index.md</td>
<td>~8</td>
<td>No</td>
<td></td>
<td>System for securely storing sensitive credentials outside GitLab (Vault, Azure Key Vault, etc.). 'Secrets' as an IT security countable noun — FR <em>gestion des secrets</em> is natural but 'secret' in FR can feel informal. Not in Quickterm. Criteria: 1,2,3,5,8.</td>
</tr>
<tr>
<td>job token</td>
<td>doc/ci/jobs/_index.md, doc/ci/pipeline_security/_index.md</td>
<td>~6</td>
<td>Yes (two forms)</td>
<td>token pour job CI/CD (as CI/CD job token, Preferred); token de job CI (as CI job token, Preferred)</td>
<td>Short-lived authentication token created per job. Two Quickterm entries with slightly different FR — needs consolidation. Criteria: 1,2,3,4,5,8.</td>
</tr>
<tr>
<td>DAST</td>
<td>doc/ci/testing/_index.md, doc/topics/autodevops/_index.md</td>
<td>~8</td>
<td>Yes</td>
<td>DAST (Admitted); test dynamique de sécurité des applications (Preferred)</td>
<td>Dynamic Application Security Testing. Quickterm: abbreviation "DAST" kept as FR Admitted; full expansion "test dynamique de sécurité des applications" is FR Preferred. Criteria: 1,2,3,4,5,8.</td>
</tr>
<tr>
<td>SAST</td>
<td>doc/ci/testing/_index.md, doc/topics/autodevops/_index.md</td>
<td>~5</td>
<td>Yes</td>
<td>SAST (Admitted); test statique de sécurité des applications (Preferred)</td>
<td>Static Application Security Testing. Quickterm: abbreviation "SAST" kept as FR Admitted; full expansion "test statique de sécurité des applications" is FR Preferred. Criteria: 1,2,3,4,5,8.</td>
</tr>
<tr>
<td>canary deployment</td>
<td>doc/ci/pipelines/_index.md, doc/topics/autodevops/_index.md</td>
<td>~5</td>
<td>Yes (as canary)</td>
<td>déploiement canari (Preferred)</td>
<td>Gradual rollout strategy deploying to a small subset of users first. Criteria: 1,2,3,5,7,8.</td>
</tr>
<tr>
<td>semantic versioning</td>
<td>doc/ci/components/_index.md</td>
<td>~10</td>
<td>Yes</td>
<td>gestion sémantique de version (Preferred)</td>
<td>Used in context of CI/CD component versioning in the Catalog. Criteria: 1,2,3,5,8.</td>
</tr>
<tr>
<td>pipeline graph</td>
<td>doc/ci/pipelines/_index.md, doc/ci/jobs/_index.md</td>
<td>~8</td>
<td>Yes</td>
<td>graphe du pipeline (Preferred)</td>
<td>The visual DAG/stage representation of all jobs in a pipeline. FR: <em>graphe</em> vs. <em>graphique</em> — both appear in FR tech docs. Quickterm confirms <em>graphe</em>. Criteria: 1,3,4,5,8.</td>
</tr>
<tr>
<td>pipeline editor</td>
<td>doc/ci/pipelines/_index.md, doc/ci/components/_index.md</td>
<td>~5</td>
<td>Yes</td>
<td>éditeur de pipeline (Preferred)</td>
<td>Built-in GitLab UI tool for editing pipeline config with validation. Distinct from a code editor. Criteria: 1,3,5,8.</td>
</tr>
<tr>
<td>protected runner</td>
<td>doc/ci/runners/_index.md, doc/ci/pipelines/_index.md</td>
<td>~5</td>
<td>Yes (plural)</td>
<td>runners protégés (Preferred)</td>
<td>Runner that only picks up jobs from protected branches/tags. Must be consistent with protected variable — same <em>protégé</em> treatment. Criteria: 1,2,3,5,7,8.</td>
</tr>
<tr>
<td>job artifact</td>
<td>doc/ci/jobs/_index.md, doc/ci/_index.md</td>
<td>~10</td>
<td>No</td>
<td></td>
<td>Files produced by a job and stored by GitLab for use in later jobs or download. 'Artifact' in general English = historical object; here it is a CI build output. FR: <em>artefact</em> exists but may not be used consistently in CI context. Not in Quickterm as a standalone compound. Criteria: 1,2,3,4,5,8.</td>
</tr>
<tr>
<td>job log</td>
<td>doc/ci/jobs/_index.md</td>
<td>~6</td>
<td>Yes</td>
<td>job log (Preferred, DNT)</td>
<td>Full execution output of a CI/CD job. Quickterm confirms DNT: <em>job log</em>. Criteria: 1,3,4,5,8.</td>
</tr>
</table>
#### Terms excluded after applying extraction criteria
- `artifact (generic)` — consistent with #923 decision: direct cognate; job artifact is included above as the specific compound
- `environment` — generic word; environnement is unambiguous
- `deployment` — generic
- `workload pipeline` — very new niche pipeline type; too early to standardize
- `CI/CD expression` — new GitLab syntax but highly technical/niche; targeted at pipeline authors not end users
- `matrix job` — niche configuration pattern; tâche matricielle is derivable
- `pipeline mini graph` — UI element name; pipeline graph covers the concept
- `pipeline badge` — niche UI embeddable element; badge is borrowed in FR
- `job dependencies (as view)` — pipeline view mode label — UI string, out of scope
- `pipeline integrity` — concept covered under supply chain security above
- `Auto DevOps stages` — GitLab product feature names — excluded per rules
- `Cloud Native Buildpack` — CNCF proper noun — third-party standard
- `refspec` — Git-internal term; not GitLab-specific
- `semantic versioning (if not CI/CD-specific)` — already included above in CI/CD Catalog context
- `webhook` — already in #923
- `infrastructure as code` — already in #923
#### Review checklist
<!--For each term: check the box to include in TBX, leave unchecked to skip.-->
- [x] stage
- [x] downstream pipeline --> Add this term to Quickterm, the FR term is `pipeline downstream`.
- [x] upstream pipeline --> Add this term to Quickterm, the FR term is `pipeline upstream` and update "upstream" term as DNT in Quickterm.
- [x] parent-child pipeline
- [x] multi-project pipeline --> Add this term to Quickterm, the FR term is `pipeline multi-projets`.
- [x] merge request pipeline --> Add this term to Quickterm, the FR term is `pipeline de merge request`.
- [ ] merged results pipeline (Skip)
- [x] merge train
- [x] pipeline schedule
- [ ] pipeline trigger (Skip for now and see how the LLM behaves)
- [ ] trigger token (Skip for now and see how the LLM behaves)
- [ ] trigger job (Skip for now and see how the LLM behaves)
- [ ] pipeline subscription (Skip for now and see how the LLM behaves)
- [x] CI/CD variable
- [ ] predefined variable (Skip)
- [ ] custom variable (Skip for now and see how the LLM behaves)
- [x] masked variable
- [x] protected variable
- [ ] hidden variable (This one is tricky, let's skip it for now and I'll come back to it later)
- [x] CI/CD component --> Add this term to Quickterm, the exact FR term is `composant CI/CD`.
- [x] CI/CD Catalog
- [ ] component project (Skip for now and see how the LLM behaves)
- [ ] CI/CD input --> Replace by "entrée CI/CD" in Quickterm.
- [ ] compliance pipeline (Skip for now and see how the LLM behaves)
- [ ] pipeline execution policy --> Replace by `politique d'exécution de pipeline` in Quickterm.
- [ ] scan execution policy --> Entry already existing in Quickterm (Entry ID 1328), replace by `politique d'exécution de scan` in Quickterm.
- [x] supply chain security --> Add this term to Quickterm, the FR term is `sécurité de la chaîne d'approvisionnement`.
- [x] secrets management --> Add this term to Quickterm, the FR term is `gestion des secrets`.
- [ ] job token (This one is tricky, let's skip it for now and I'll come back to it later)
- [ ] DAST --> I would change DAST as Preferred and test dynamique de sécurité des applications as Admitted in Quickterm.
- [ ] SAST --> I would change SAST as Preferred and test statique de sécurité des applications as Admitted in Quickterm.
- [x] canary deployment --> The EN entry in Quickterm (Entry ID 2883) would need to be updated.
- [x] semantic versioning
- [ ] pipeline graph --> Replace by `graphe de pipeline` in Quickterm.
- [x] pipeline editor
- [ ] protected runner --> Replace by "runner protégé" (moved to singular) in Quickterm.
- [x] job artifact --> Add this term to Quickterm, the exact FR term is `artefact de job`.
- [x] job log
issue