Pier Angelo Vendrame pushed to branch tor-browser-115.13.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
8b8656d6
by Beatriz Rizental at 2024-07-09T19:31:40+02:00
-
e20fbd3e
by Beatriz Rizental at 2024-07-11T10:50:01+02:00
-
065fd124
by Beatriz Rizental at 2024-07-11T10:50:28+02:00
4 changed files:
- .gitlab-ci.yml
- + .gitlab/ci/lint.yml
- + .gitlab/ci/scripts/run_linters.py
- + .gitlab/ci/update-translations.yml
Changes:
1 | 1 | stages:
|
2 | + - lint
|
|
2 | 3 | - update-translations
|
3 | 4 | |
4 | -.update-translation-base:
|
|
5 | - stage: update-translations
|
|
6 | - rules:
|
|
7 | - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
8 | - changes:
|
|
9 | - - "**/*.ftl"
|
|
10 | - - "**/*.properties"
|
|
11 | - - "**/*.dtd"
|
|
12 | - - if: $FORCE_UPDATE_TRANSLATIONS == "true"
|
|
13 | - variables:
|
|
14 | - TOR_BROWSER_COMBINED_FILES_JSON: "combined-translation-files.json"
|
|
15 | - |
|
16 | - |
|
17 | -combine-en-US-translations:
|
|
18 | - extends: .update-translation-base
|
|
19 | - image: python
|
|
20 | - variables:
|
|
21 | - PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
22 | - TRANSLATION_FILES: '
|
|
23 | - tor-browser:tor-browser.ftl
|
|
24 | - tor-browser:aboutDialog.dtd
|
|
25 | - tor-browser:aboutTBUpdate.dtd
|
|
26 | - tor-browser:aboutTor.dtd
|
|
27 | - tor-browser:torbutton.dtd
|
|
28 | - tor-browser:browserOnboarding.properties
|
|
29 | - tor-browser:cryptoSafetyPrompt.properties
|
|
30 | - tor-browser:onboarding.properties
|
|
31 | - tor-browser:onionLocation.properties
|
|
32 | - tor-browser:rulesets.properties
|
|
33 | - tor-browser:settings.properties
|
|
34 | - tor-browser:torbutton.properties
|
|
35 | - tor-browser:torConnect.properties
|
|
36 | - tor-browser:torlauncher.properties
|
|
37 | - base-browser:base-browser.ftl
|
|
38 | - base-browser:newIdentity.properties
|
|
39 | - base-browser:securityLevel.properties
|
|
40 | - '
|
|
41 | - cache:
|
|
42 | - paths:
|
|
43 | - - .cache/pip
|
|
44 | - # Artifact is for translation project job
|
|
45 | - artifacts:
|
|
46 | - paths:
|
|
47 | - - "$TOR_BROWSER_COMBINED_FILES_JSON"
|
|
48 | - expire_in: "60 min"
|
|
49 | - reports:
|
|
50 | - dotenv: job_id.env
|
|
51 | - # Don't load artifacts for this job.
|
|
52 | - dependencies: []
|
|
53 | - script:
|
|
54 | - # Save this CI_JOB_ID to the dotenv file to be used in the variables for the
|
|
55 | - # push-en-US-translations job.
|
|
56 | - - echo 'COMBINE_TRANSLATIONS_JOB_ID='"$CI_JOB_ID" >job_id.env
|
|
57 | - - pip install compare_locales
|
|
58 | - - python ./tools/torbrowser/l10n/combine-translation-versions.py "$CI_COMMIT_BRANCH" "$TRANSLATION_FILES" "$TOR_BROWSER_COMBINED_FILES_JSON"
|
|
59 | - |
|
60 | -push-en-US-translations:
|
|
61 | - extends: .update-translation-base
|
|
62 | - needs:
|
|
63 | - - job: combine-en-US-translations
|
|
64 | - variables:
|
|
65 | - TOR_BROWSER_COMBINED_FILES_JSON_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${COMBINE_TRANSLATIONS_JOB_ID}/artifacts/${TOR_BROWSER_COMBINED_FILES_JSON}"
|
|
66 | - trigger:
|
|
67 | - strategy: depend
|
|
68 | - project: tor-browser-translation-bot/translation
|
|
69 | - branch: tor-browser-ci |
|
5 | +include:
|
|
6 | + - local: '.gitlab/ci/lint.yml'
|
|
7 | + - local: '.gitlab/ci/update-translations.yml' |
1 | +variables:
|
|
2 | + # This needs to be kept in sync with the max Python version accepted by ./mach
|
|
3 | + PYTHON_VERSION: "3.11.7"
|
|
4 | + |
|
5 | +.base:
|
|
6 | + stage: lint
|
|
7 | + interruptible: true
|
|
8 | + variables:
|
|
9 | + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
10 | + cache:
|
|
11 | + paths:
|
|
12 | + - node_modules
|
|
13 | + - .cache/pip
|
|
14 | + |
|
15 | +eslint:
|
|
16 | + extends: .base
|
|
17 | + image: cimg/python:$PYTHON_VERSION-node
|
|
18 | + script:
|
|
19 | + - .gitlab/ci/scripts/run_linters.py eslint
|
|
20 | + rules:
|
|
21 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
22 | + changes:
|
|
23 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
24 | + #
|
|
25 | + # Files that are likely audited.
|
|
26 | + - '**/*.js'
|
|
27 | + - '**/*.jsm'
|
|
28 | + - '**/*.json'
|
|
29 | + - '**/*.jsx'
|
|
30 | + - '**/*.mjs'
|
|
31 | + - '**/*.sjs'
|
|
32 | + - '**/*.html'
|
|
33 | + - '**/*.xhtml'
|
|
34 | + - '**/*.xml'
|
|
35 | + - 'tools/lint/eslint.yml'
|
|
36 | + # Run when eslint policies change.
|
|
37 | + - '**/.eslintignore'
|
|
38 | + - '**/*eslintrc*'
|
|
39 | + # The plugin implementing custom checks.
|
|
40 | + - 'tools/lint/eslint/eslint-plugin-mozilla/**'
|
|
41 | + - 'tools/lint/eslint/eslint-plugin-spidermonkey-js/**'
|
|
42 | + # Run job whenever a new tag is created
|
|
43 | + # or whenever a commit is merged to a protected branch
|
|
44 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
45 | + |
|
46 | +stylelint:
|
|
47 | + extends: .base
|
|
48 | + image: cimg/python:$PYTHON_VERSION-node
|
|
49 | + script:
|
|
50 | + - .gitlab/ci/scripts/run_linters.py stylelint
|
|
51 | + rules:
|
|
52 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
53 | + changes:
|
|
54 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
55 | + #
|
|
56 | + # Files that are likely audited.
|
|
57 | + - '**/*.css'
|
|
58 | + - 'tools/lint/styleint.yml'
|
|
59 | + # Run when stylelint policies change.
|
|
60 | + - '**/.stylelintignore'
|
|
61 | + - '**/*stylelintrc*'
|
|
62 | + # Run job whenever a new tag is created
|
|
63 | + # or whenever a commit is merged to a protected branch
|
|
64 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
65 | + |
|
66 | +py-black:
|
|
67 | + extends: .base
|
|
68 | + image: cimg/python:$PYTHON_VERSION
|
|
69 | + script:
|
|
70 | + - .gitlab/ci/scripts/run_linters.py black
|
|
71 | + rules:
|
|
72 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
73 | + changes:
|
|
74 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
75 | + #
|
|
76 | + # The list of extensions should match tools/lint/black.yml
|
|
77 | + - '**/*.py'
|
|
78 | + - '**/moz.build'
|
|
79 | + - '**/*.configure'
|
|
80 | + - '**/*.mozbuild'
|
|
81 | + - 'pyproject.toml'
|
|
82 | + - 'tools/lint/black.yml'
|
|
83 | + # Run job whenever a new tag is created
|
|
84 | + # or whenever a commit is merged to a protected branch
|
|
85 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
86 | + |
|
87 | +py-ruff:
|
|
88 | + extends: .base
|
|
89 | + image: cimg/python:$PYTHON_VERSION
|
|
90 | + script:
|
|
91 | + - .gitlab/ci/scripts/run_linters.py ruff
|
|
92 | + rules:
|
|
93 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
94 | + changes:
|
|
95 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
96 | + #
|
|
97 | + - '**/*.py'
|
|
98 | + - '**/*.configure'
|
|
99 | + - '**/.ruff.toml'
|
|
100 | + - 'pyproject.toml'
|
|
101 | + - 'tools/lint/ruff.yml'
|
|
102 | + - 'tools/lint/python/ruff.py'
|
|
103 | + - 'tools/lint/python/ruff_requirements.txt'
|
|
104 | + # Run job whenever a new tag is created
|
|
105 | + # or whenever a commit is merged to a protected branch
|
|
106 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
107 | + |
|
108 | +yaml:
|
|
109 | + extends: .base
|
|
110 | + image: cimg/python:$PYTHON_VERSION
|
|
111 | + script:
|
|
112 | + - .gitlab/ci/scripts/run_linters.py yaml
|
|
113 | + rules:
|
|
114 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
115 | + changes:
|
|
116 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
117 | + #
|
|
118 | + - '**/*.yml'
|
|
119 | + - '**/*.yaml'
|
|
120 | + - '**/.ymllint'
|
|
121 | + # Run job whenever a new tag is created
|
|
122 | + # or whenever a commit is merged to a protected branch
|
|
123 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
124 | + |
|
125 | +shellcheck:
|
|
126 | + extends: .base
|
|
127 | + image: cimg/python:$PYTHON_VERSION
|
|
128 | + script:
|
|
129 | + - .gitlab/ci/scripts/run_linters.py shellcheck
|
|
130 | + rules:
|
|
131 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
132 | + changes:
|
|
133 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
134 | + #
|
|
135 | + - '**/*.sh'
|
|
136 | + - 'tools/lint/shellcheck.yml'
|
|
137 | + # Run job whenever a new tag is created
|
|
138 | + # or whenever a commit is merged to a protected branch
|
|
139 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
140 | + |
|
141 | +clang-format:
|
|
142 | + extends: .base
|
|
143 | + image: cimg/python:$PYTHON_VERSION
|
|
144 | + script:
|
|
145 | + - .gitlab/ci/scripts/run_linters.py clang-format
|
|
146 | + rules:
|
|
147 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
148 | + changes:
|
|
149 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
150 | + #
|
|
151 | + - '**/*.cpp'
|
|
152 | + - '**/*.c'
|
|
153 | + - '**/*.cc'
|
|
154 | + - '**/*.h'
|
|
155 | + - '**/*.m'
|
|
156 | + - '**/*.mm'
|
|
157 | + - 'tools/lint/clang-format.yml'
|
|
158 | + # Run job whenever a new tag is created
|
|
159 | + # or whenever a commit is merged to a protected branch
|
|
160 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
161 | + |
|
162 | +rustfmt:
|
|
163 | + extends: .base
|
|
164 | + image: cimg/python:$PYTHON_VERSION
|
|
165 | + script:
|
|
166 | + - .gitlab/ci/scripts/run_linters.py rustfmt
|
|
167 | + rules:
|
|
168 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
169 | + changes:
|
|
170 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
171 | + #
|
|
172 | + - '**/*.rs'
|
|
173 | + - 'tools/lint/rustfmt.yml'
|
|
174 | + # Run job whenever a new tag is created
|
|
175 | + # or whenever a commit is merged to a protected branch
|
|
176 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
177 | + |
|
178 | +fluent-lint:
|
|
179 | + extends: .base
|
|
180 | + image: cimg/python:$PYTHON_VERSION
|
|
181 | + script:
|
|
182 | + - .gitlab/ci/scripts/run_linters.py fluent-lint
|
|
183 | + rules:
|
|
184 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
185 | + changes:
|
|
186 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
187 | + #
|
|
188 | + - '**/*.ftl'
|
|
189 | + - 'tools/lint/fluent-lint.yml'
|
|
190 | + - 'tools/lint/fluent-lint/exclusions.yml'
|
|
191 | + # Run job whenever a new tag is created
|
|
192 | + # or whenever a commit is merged to a protected branch
|
|
193 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
194 | + |
|
195 | +localization:
|
|
196 | + extends: .base
|
|
197 | + image: cimg/python:$PYTHON_VERSION
|
|
198 | + script:
|
|
199 | + - .gitlab/ci/scripts/run_linters.py l10n
|
|
200 | + rules:
|
|
201 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
202 | + changes:
|
|
203 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
204 | + #
|
|
205 | + - '**/locales/en-US/**'
|
|
206 | + - '**/l10n.toml'
|
|
207 | + - 'third_party/python/compare-locales/**'
|
|
208 | + - 'third_party/python/fluent/**'
|
|
209 | + - 'tools/lint/l10n.yml'
|
|
210 | + # Run job whenever a new tag is created
|
|
211 | + # or whenever a commit is merged to a protected branch
|
|
212 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
213 | + |
|
214 | +mingw-capitalization:
|
|
215 | + extends: .base
|
|
216 | + image: cimg/python:$PYTHON_VERSION
|
|
217 | + script:
|
|
218 | + - .gitlab/ci/scripts/run_linters.py mingw-capitalization
|
|
219 | + rules:
|
|
220 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
221 | + changes:
|
|
222 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
223 | + #
|
|
224 | + - '**/*.cpp'
|
|
225 | + - '**/*.cc'
|
|
226 | + - '**/*.c'
|
|
227 | + - '**/*.h'
|
|
228 | + - 'tools/lint/mingw-capitalization.yml'
|
|
229 | + # Run job whenever a new tag is created
|
|
230 | + # or whenever a commit is merged to a protected branch
|
|
231 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
232 | + |
|
233 | +mscom-init:
|
|
234 | + extends: .base
|
|
235 | + image: cimg/python:$PYTHON_VERSION
|
|
236 | + script:
|
|
237 | + - .gitlab/ci/scripts/run_linters.py mscom-init
|
|
238 | + rules:
|
|
239 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
240 | + changes:
|
|
241 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
242 | + #
|
|
243 | + - '**/*.cpp'
|
|
244 | + - '**/*.cc'
|
|
245 | + - '**/*.c'
|
|
246 | + - '**/*.h'
|
|
247 | + - 'tools/lint/mscom-init.yml'
|
|
248 | + # Run job whenever a new tag is created
|
|
249 | + # or whenever a commit is merged to a protected branch
|
|
250 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
251 | + |
|
252 | +file-whitespace:
|
|
253 | + extends: .base
|
|
254 | + image: cimg/python:$PYTHON_VERSION
|
|
255 | + script:
|
|
256 | + - .gitlab/ci/scripts/run_linters.py file-whitespace
|
|
257 | + rules:
|
|
258 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
259 | + changes:
|
|
260 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
261 | + #
|
|
262 | + - '**/*.c'
|
|
263 | + - '**/*.cc'
|
|
264 | + - '**/*.cpp'
|
|
265 | + - '**/*.css'
|
|
266 | + - '**/*.dtd'
|
|
267 | + - '**/*.idl'
|
|
268 | + - '**/*.ftl'
|
|
269 | + - '**/*.h'
|
|
270 | + - '**/*.html'
|
|
271 | + - '**/*.md'
|
|
272 | + - '**/*.properties'
|
|
273 | + - '**/*.py'
|
|
274 | + - '**/*.rs'
|
|
275 | + - '**/*.rst'
|
|
276 | + - '**/*.webidl'
|
|
277 | + - '**/*.xhtml'
|
|
278 | + - 'tools/lint/file-whitespace.yml'
|
|
279 | + # Run job whenever a new tag is created
|
|
280 | + # or whenever a commit is merged to a protected branch
|
|
281 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
282 | + |
|
283 | +test-manifest:
|
|
284 | + extends: .base
|
|
285 | + image: cimg/python:$PYTHON_VERSION
|
|
286 | + script:
|
|
287 | + - .gitlab/ci/scripts/run_linters.py test-manifest-alpha test-manifest-disable test-manifest-skip-if
|
|
288 | + rules:
|
|
289 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
290 | + changes:
|
|
291 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
292 | + #
|
|
293 | + - '**/*.ini'
|
|
294 | + - 'python/mozlint/**'
|
|
295 | + - 'tools/lint/**'
|
|
296 | + # Run job whenever a new tag is created
|
|
297 | + # or whenever a commit is merged to a protected branch
|
|
298 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true'
|
|
299 | + |
|
300 | +trojan-source:
|
|
301 | + extends: .base
|
|
302 | + image: cimg/python:$PYTHON_VERSION
|
|
303 | + script:
|
|
304 | + - .gitlab/ci/scripts/run_linters.py trojan-source
|
|
305 | + rules:
|
|
306 | + - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
307 | + changes:
|
|
308 | + # List copied from: taskcluster/ci/source-test/mozlint.yml
|
|
309 | + #
|
|
310 | + - '**/*.c'
|
|
311 | + - '**/*.cc'
|
|
312 | + - '**/*.cpp'
|
|
313 | + - '**/*.h'
|
|
314 | + - '**/*.py'
|
|
315 | + - '**/*.rs'
|
|
316 | + - 'tools/lint/trojan-source.yml'
|
|
317 | + # Run job whenever a new tag is created
|
|
318 | + # or whenever a commit is merged to a protected branch
|
|
319 | + - if: $CI_COMMIT_TAG || $CI_COMMIT_REF_PROTECTED == 'true' |
1 | +#!/usr/bin/env python3
|
|
2 | + |
|
3 | +import argparse
|
|
4 | +import os
|
|
5 | +import re
|
|
6 | +import shlex
|
|
7 | +import subprocess
|
|
8 | +import sys
|
|
9 | + |
|
10 | + |
|
11 | +def git(command):
|
|
12 | + result = subprocess.run(
|
|
13 | + ["git"] + shlex.split(command), check=True, capture_output=True, text=True
|
|
14 | + )
|
|
15 | + return result.stdout.strip()
|
|
16 | + |
|
17 | + |
|
18 | +def get_firefox_tag_from_branch_name(branch_name):
|
|
19 | + """Extracts the Firefox tag associated with a branch name.
|
|
20 | + |
|
21 | + The "firefox tag" is the tag that marks
|
|
22 | + the end of the Mozilla commits and the start of the Tor Project commits.
|
|
23 | + |
|
24 | + Know issue: If ever there is more than one tag per Firefox ESR version,
|
|
25 | + this function may return the incorrect reference number.
|
|
26 | + |
|
27 | + Args:
|
|
28 | + branch_name: The branch name to extract the tag from.
|
|
29 | + Expected format is tor-browser-91.2.0esr-11.0-1,
|
|
30 | + where 91.2.0esr is the Firefox version.
|
|
31 | + |
|
32 | + Returns:
|
|
33 | + The reference specifier of the matching Firefox tag.
|
|
34 | + An exception wil be raised if anything goes wrong.
|
|
35 | + """
|
|
36 | + |
|
37 | + # Extracts the version number from a branch name.
|
|
38 | + firefox_version = ""
|
|
39 | + match = re.search(r"(?<=browser-)([^-]+)", branch_name)
|
|
40 | + if match:
|
|
41 | + # TODO: Validate that what we got is actually a valid semver string?
|
|
42 | + firefox_version = match.group(1)
|
|
43 | + else:
|
|
44 | + raise ValueError(f"Failed to extract version from branch name '{branch_name}'.")
|
|
45 | + |
|
46 | + tag = f"FIREFOX_{firefox_version.replace('.', '_')}_"
|
|
47 | + remote_tags = git("ls-remote --tags")
|
|
48 | + |
|
49 | + # Each line looks like:
|
|
50 | + # 9edd658bfd03a6b4743ecb75fd4a9ad968603715 refs/tags/FIREFOX_91_9_0esr_BUILD1
|
|
51 | + pattern = rf"(.*){re.escape(tag)}(.*)$"
|
|
52 | + match = re.search(pattern, remote_tags, flags=re.MULTILINE)
|
|
53 | + if match:
|
|
54 | + return match.group(0).split()[0]
|
|
55 | + else:
|
|
56 | + raise ValueError(
|
|
57 | + f"Failed to find reference specifier for Firefox tag in branch '{branch_name}'."
|
|
58 | + )
|
|
59 | + |
|
60 | + |
|
61 | +def get_list_of_changed_files():
|
|
62 | + """Gets a list of files changed in the working directory.
|
|
63 | + |
|
64 | + This function is meant to be run inside the Gitlab CI environment.
|
|
65 | + |
|
66 | + When running in a default branch, get the list of changed files since the last Firefox tag.
|
|
67 | + When running for a new MR commit, get a list of changed files in the current MR.
|
|
68 | + |
|
69 | + Returns:
|
|
70 | + A list of filenames of changed files (excluding deleted files).
|
|
71 | + An exception wil be raised if anything goes wrong.
|
|
72 | + """
|
|
73 | + |
|
74 | + base_reference = ""
|
|
75 | + |
|
76 | + if os.getenv("CI_PIPELINE_SOURCE") == "merge_request_event":
|
|
77 | + # For merge requests, the base_reference is the common ancestor between the MR and the target branch.
|
|
78 | + base_reference = os.getenv("CI_MERGE_REQUEST_DIFF_BASE_SHA")
|
|
79 | + else:
|
|
80 | + # When not in merge requests, the base reference is the Firefox tag
|
|
81 | + base_reference = get_firefox_tag_from_branch_name(os.getenv("CI_COMMIT_BRANCH"))
|
|
82 | + |
|
83 | + if not base_reference:
|
|
84 | + raise RuntimeError("No base reference found. There might be more errors above.")
|
|
85 | + |
|
86 | + # Fetch the tag reference
|
|
87 | + git(f"fetch origin {base_reference} --depth=1 --filter=blob:none")
|
|
88 | + # Return the list of changed files
|
|
89 | + return git(f"diff --diff-filter=d --name-only {base_reference} HEAD").split("\n")
|
|
90 | + |
|
91 | + |
|
92 | +if __name__ == "__main__":
|
|
93 | + parser = argparse.ArgumentParser(
|
|
94 | + description="Run ./mach linters in CI. Warning: if you run this in your local environment it might mess up your git history."
|
|
95 | + )
|
|
96 | + parser.add_argument(
|
|
97 | + "linters", metavar="L", type=str, nargs="+", help="A list of linters to run."
|
|
98 | + )
|
|
99 | + args = parser.parse_args()
|
|
100 | + |
|
101 | + command = [
|
|
102 | + "./mach",
|
|
103 | + "lint",
|
|
104 | + "-v",
|
|
105 | + *(s for l in args.linters for s in ("-l", l)),
|
|
106 | + *get_list_of_changed_files(),
|
|
107 | + ]
|
|
108 | + result = subprocess.run(command, text=True)
|
|
109 | + |
|
110 | + sys.exit(result.returncode) |
1 | +.update-translation-base:
|
|
2 | + stage: update-translations
|
|
3 | + rules:
|
|
4 | + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
5 | + changes:
|
|
6 | + - "**/*.ftl"
|
|
7 | + - "**/*.properties"
|
|
8 | + - "**/*.dtd"
|
|
9 | + - if: $FORCE_UPDATE_TRANSLATIONS == "true"
|
|
10 | + variables:
|
|
11 | + TOR_BROWSER_COMBINED_FILES_JSON: "combined-translation-files.json"
|
|
12 | + |
|
13 | + |
|
14 | +combine-en-US-translations:
|
|
15 | + extends: .update-translation-base
|
|
16 | + image: python
|
|
17 | + variables:
|
|
18 | + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
19 | + TRANSLATION_FILES: '
|
|
20 | + tor-browser:tor-browser.ftl
|
|
21 | + tor-browser:aboutDialog.dtd
|
|
22 | + tor-browser:aboutTBUpdate.dtd
|
|
23 | + tor-browser:aboutTor.dtd
|
|
24 | + tor-browser:torbutton.dtd
|
|
25 | + tor-browser:browserOnboarding.properties
|
|
26 | + tor-browser:cryptoSafetyPrompt.properties
|
|
27 | + tor-browser:onboarding.properties
|
|
28 | + tor-browser:onionLocation.properties
|
|
29 | + tor-browser:rulesets.properties
|
|
30 | + tor-browser:settings.properties
|
|
31 | + tor-browser:torbutton.properties
|
|
32 | + tor-browser:torConnect.properties
|
|
33 | + tor-browser:torlauncher.properties
|
|
34 | + base-browser:base-browser.ftl
|
|
35 | + base-browser:newIdentity.properties
|
|
36 | + base-browser:securityLevel.properties
|
|
37 | + '
|
|
38 | + cache:
|
|
39 | + paths:
|
|
40 | + - .cache/pip
|
|
41 | + # Artifact is for translation project job
|
|
42 | + artifacts:
|
|
43 | + paths:
|
|
44 | + - "$TOR_BROWSER_COMBINED_FILES_JSON"
|
|
45 | + expire_in: "60 min"
|
|
46 | + reports:
|
|
47 | + dotenv: job_id.env
|
|
48 | + # Don't load artifacts for this job.
|
|
49 | + dependencies: []
|
|
50 | + script:
|
|
51 | + # Save this CI_JOB_ID to the dotenv file to be used in the variables for the
|
|
52 | + # push-en-US-translations job.
|
|
53 | + - echo 'COMBINE_TRANSLATIONS_JOB_ID='"$CI_JOB_ID" >job_id.env
|
|
54 | + - pip install compare_locales
|
|
55 | + - python ./tools/torbrowser/l10n/combine-translation-versions.py "$CI_COMMIT_BRANCH" "$TRANSLATION_FILES" "$TOR_BROWSER_COMBINED_FILES_JSON"
|
|
56 | + |
|
57 | +push-en-US-translations:
|
|
58 | + extends: .update-translation-base
|
|
59 | + needs:
|
|
60 | + - job: combine-en-US-translations
|
|
61 | + variables:
|
|
62 | + TOR_BROWSER_COMBINED_FILES_JSON_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${COMBINE_TRANSLATIONS_JOB_ID}/artifacts/${TOR_BROWSER_COMBINED_FILES_JSON}"
|
|
63 | + trigger:
|
|
64 | + strategy: depend
|
|
65 | + project: tor-browser-translation-bot/translation
|
|
66 | + branch: tor-browser-ci |