continuous-delivery-scripts 3.4.1__tar.gz → 3.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {continuous_delivery_scripts-3.4.1/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-3.5.1}/PKG-INFO +11 -1
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/README.md +10 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/_version.py +3 -3
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/golang.py +76 -15
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/git_helpers.py +7 -3
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1/continuous_delivery_scripts.egg-info}/PKG-INFO +11 -1
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/LICENSE +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/MANIFEST.in +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/assert_news.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/create_news_file.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/detect_secrets.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/generate_docs.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/generate_news.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/get_config.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/get_version.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/language_specifics.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/license_files.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/CI.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/basic.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/ci.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/docker.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/noop.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/python.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/report_third_party_ip.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_document.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_package.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_project.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_summary.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.txt.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/tag_and_release.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/configuration.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/definitions.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/language_specifics_base.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/logging.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/news_file.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/third_party_licences.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/versioning.py +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/SOURCES.txt +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/entry_points.txt +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/pyproject.toml +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/setup.cfg +0 -0
- {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: continuous-delivery-scripts
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.1
|
|
4
4
|
Summary: Continuous Delivery scripts to increase automation
|
|
5
5
|
Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
|
|
6
6
|
Author: CMSIS team
|
|
@@ -141,6 +141,16 @@ Therefore, it installs the following tools which can be used anywhere within a p
|
|
|
141
141
|
* `cd-generate-spdx`: Generates SPDX documents for the project (3rd party IP reporting/ OpenChain)
|
|
142
142
|
* `cd-license-files`: Updates the Licence header and copyright to all the source code files
|
|
143
143
|
|
|
144
|
+
For GitHub automation that performs authenticated clone or fetch operations, see [GitHub Token Authentication](#github-token-authentication).
|
|
145
|
+
|
|
146
|
+
## GitHub Token Authentication
|
|
147
|
+
|
|
148
|
+
When git operations need to retry against GitHub over HTTPS, this project now uses the credential layout `https://x-access-token:<token>@github.com/<owner>/<repo>.git`.
|
|
149
|
+
|
|
150
|
+
This means the token is sent in the password position with `x-access-token` as the username, which is the format GitHub accepts for workflow-generated and other non-OAuth tokens used by automation.
|
|
151
|
+
|
|
152
|
+
Older `https://<token>:x-oauth-basic@github.com/...` URLs were tied to OAuth-style credentials and could reject tokens created dynamically during CI/CD flows.
|
|
153
|
+
|
|
144
154
|
## Project Structure
|
|
145
155
|
|
|
146
156
|
The follow described the major aspects of the project structure:
|
|
@@ -88,6 +88,16 @@ Therefore, it installs the following tools which can be used anywhere within a p
|
|
|
88
88
|
* `cd-generate-spdx`: Generates SPDX documents for the project (3rd party IP reporting/ OpenChain)
|
|
89
89
|
* `cd-license-files`: Updates the Licence header and copyright to all the source code files
|
|
90
90
|
|
|
91
|
+
For GitHub automation that performs authenticated clone or fetch operations, see [GitHub Token Authentication](#github-token-authentication).
|
|
92
|
+
|
|
93
|
+
## GitHub Token Authentication
|
|
94
|
+
|
|
95
|
+
When git operations need to retry against GitHub over HTTPS, this project now uses the credential layout `https://x-access-token:<token>@github.com/<owner>/<repo>.git`.
|
|
96
|
+
|
|
97
|
+
This means the token is sent in the password position with `x-access-token` as the username, which is the format GitHub accepts for workflow-generated and other non-OAuth tokens used by automation.
|
|
98
|
+
|
|
99
|
+
Older `https://<token>:x-oauth-basic@github.com/...` URLs were tied to OAuth-style credentials and could reject tokens created dynamically during CI/CD flows.
|
|
100
|
+
|
|
91
101
|
## Project Structure
|
|
92
102
|
|
|
93
103
|
The follow described the major aspects of the project structure:
|
|
@@ -11,8 +11,8 @@ References
|
|
|
11
11
|
This file is autogenerated, do not modify by hand.
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
__version__ = "3.
|
|
15
|
-
COMMIT = "
|
|
14
|
+
__version__ = "3.5.1"
|
|
15
|
+
COMMIT = "5f0dc45967d1e56a6e03168c0c9b54cc7aaa98c7"
|
|
16
16
|
MAJOR = 3
|
|
17
|
-
MINOR =
|
|
17
|
+
MINOR = 5
|
|
18
18
|
PATCH = 1
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
"""Plugin for Golang projects."""
|
|
6
6
|
|
|
7
|
+
import json
|
|
7
8
|
import logging
|
|
8
9
|
import os
|
|
9
10
|
import shutil
|
|
@@ -143,24 +144,85 @@ def _call_goreleaser_check(version: str) -> None:
|
|
|
143
144
|
check_call(_generate_goreleaser_check_command_list(), cwd=ROOT_DIR, env=env)
|
|
144
145
|
|
|
145
146
|
|
|
146
|
-
def
|
|
147
|
-
"""Determines go module for tagging.
|
|
148
|
-
|
|
149
|
-
See https://golang.org/ref/mod#vcs-version.
|
|
150
|
-
and https://github.com/golang/go/wiki/Modules#should-i-have-multiple-modules-in-a-single-repository.
|
|
151
|
-
"""
|
|
152
|
-
module = ""
|
|
147
|
+
def _determine_go_module_tag_for_directory(module_directory: Path, version: str) -> Optional[str]:
|
|
153
148
|
try:
|
|
154
|
-
module =
|
|
149
|
+
module = module_directory.relative_to(ROOT_DIR)
|
|
155
150
|
except ValueError:
|
|
156
151
|
try:
|
|
157
|
-
module =
|
|
152
|
+
module = ROOT_DIR.relative_to(module_directory)
|
|
158
153
|
except ValueError as exception:
|
|
159
154
|
logger.warning(exception)
|
|
160
|
-
|
|
155
|
+
return None
|
|
156
|
+
module_as_posix = module.as_posix().rstrip("/")
|
|
157
|
+
if module_as_posix == "." or len(module_as_posix) == 0:
|
|
161
158
|
return None
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
return f"{module_as_posix}/{version}"
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _find_go_work_files() -> List[Path]:
|
|
163
|
+
go_work_files: List[Path] = []
|
|
164
|
+
for go_work_file in [SRC_DIR.joinpath("go.work"), ROOT_DIR.joinpath("go.work")]:
|
|
165
|
+
if go_work_file.exists() and go_work_file not in go_work_files:
|
|
166
|
+
go_work_files.append(go_work_file)
|
|
167
|
+
return go_work_files
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _determine_go_work_module_directories_from_json(go_work_file: Path) -> List[Path]:
|
|
171
|
+
"""Determine module directories from `go work edit -json` output.
|
|
172
|
+
|
|
173
|
+
`go.work` lists all workspace modules that should be released together.
|
|
174
|
+
See https://go.dev/ref/mod#workspaces and https://pkg.go.dev/cmd/go#hdr-Edit_workspace_file.
|
|
175
|
+
"""
|
|
176
|
+
go_work_root = go_work_file.parent
|
|
177
|
+
go_work = json.loads(check_output(["go", "work", "edit", "-json"], cwd=go_work_root, encoding="utf8"))
|
|
178
|
+
module_directories: List[Path] = []
|
|
179
|
+
for use_definition in go_work.get("Use", []):
|
|
180
|
+
disk_path = use_definition.get("DiskPath") or use_definition.get("Path")
|
|
181
|
+
if not disk_path:
|
|
182
|
+
continue
|
|
183
|
+
module_directory = Path(str(disk_path))
|
|
184
|
+
module_directories.append(
|
|
185
|
+
module_directory if module_directory.is_absolute() else go_work_root.joinpath(module_directory)
|
|
186
|
+
)
|
|
187
|
+
return module_directories
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _determine_go_work_module_directories() -> List[Path]:
|
|
191
|
+
"""Determine module directories declared in `go.work`.
|
|
192
|
+
|
|
193
|
+
`go.work` lists all workspace modules that should be released together.
|
|
194
|
+
See https://go.dev/ref/mod#workspaces.
|
|
195
|
+
"""
|
|
196
|
+
module_directories: List[Path] = []
|
|
197
|
+
for go_work_file in _find_go_work_files():
|
|
198
|
+
module_directories.extend(_determine_go_work_module_directories_from_json(go_work_file))
|
|
199
|
+
return list(dict.fromkeys(module_directories))
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def _determine_go_subproject_directories() -> List[Path]:
|
|
203
|
+
if not SRC_DIR.exists():
|
|
204
|
+
return []
|
|
205
|
+
return sorted((go_mod_file.parent for go_mod_file in SRC_DIR.rglob("go.mod")), key=lambda path: str(path))
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _determine_go_module_tag(version: str) -> List[str]:
|
|
209
|
+
"""Determine all go module tags for release.
|
|
210
|
+
|
|
211
|
+
See https://golang.org/ref/mod#vcs-version,
|
|
212
|
+
https://go.dev/ref/mod#workspaces, and
|
|
213
|
+
https://github.com/golang/go/wiki/Modules/a549b3e4b7ad6be6e7d11c37ef247bb2279c8146#faqs--multi-module-repositories.
|
|
214
|
+
"""
|
|
215
|
+
module_directories = [SRC_DIR]
|
|
216
|
+
go_work_module_directories = _determine_go_work_module_directories()
|
|
217
|
+
if go_work_module_directories:
|
|
218
|
+
module_directories.extend(go_work_module_directories)
|
|
219
|
+
else:
|
|
220
|
+
module_directories.extend(_determine_go_subproject_directories())
|
|
221
|
+
|
|
222
|
+
tags = [
|
|
223
|
+
_determine_go_module_tag_for_directory(module_directory, version) for module_directory in module_directories
|
|
224
|
+
]
|
|
225
|
+
return list(dict.fromkeys([tag for tag in tags if tag]))
|
|
164
226
|
|
|
165
227
|
|
|
166
228
|
class Go(BaseLanguage):
|
|
@@ -209,7 +271,7 @@ class Go(BaseLanguage):
|
|
|
209
271
|
r".*go\.sum$",
|
|
210
272
|
r"^\.circleci[\\/].*",
|
|
211
273
|
r"^workflows/.*",
|
|
212
|
-
r"^\.github[\\/]workflows[\\/].*",
|
|
274
|
+
(r"^\.github[\\/]workflows[\\/].*"),
|
|
213
275
|
]
|
|
214
276
|
|
|
215
277
|
def get_current_spdx_project(self) -> Optional["SpdxProject"]:
|
|
@@ -224,8 +286,7 @@ class Go(BaseLanguage):
|
|
|
224
286
|
def tag_release(self, git: GitWrapper, version: str, shortcuts: Dict[str, bool]) -> None:
|
|
225
287
|
"""Tags release commit."""
|
|
226
288
|
super().tag_release(git, version, shortcuts)
|
|
227
|
-
go_tag
|
|
228
|
-
if go_tag:
|
|
289
|
+
for go_tag in _determine_go_module_tag(self.get_version_tag(version)):
|
|
229
290
|
git.create_tag(go_tag, message=f"Golang module release: {go_tag}")
|
|
230
291
|
|
|
231
292
|
def _call_goreleaser_release(self, version: str) -> None:
|
|
@@ -39,14 +39,17 @@ class GitWrapper:
|
|
|
39
39
|
def _git_url_ssh_to_https(self, url: str) -> str:
|
|
40
40
|
"""Changes repository URL to use authorisation token.
|
|
41
41
|
|
|
42
|
-
Converts the git url to use
|
|
43
|
-
|
|
42
|
+
Converts the git url to use GitHub's token-based HTTPS authentication
|
|
43
|
+
format so workflow-generated tokens can be used for git operations.
|
|
44
|
+
|
|
45
|
+
Reference:
|
|
46
|
+
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-authentication-to-github#githubs-token-formats
|
|
44
47
|
|
|
45
48
|
Returns:
|
|
46
49
|
new URL
|
|
47
50
|
"""
|
|
48
51
|
path = url.split("github.com", 1)[1][1:].strip()
|
|
49
|
-
new = "https://{GITHUB_TOKEN}
|
|
52
|
+
new = "https://x-access-token:{GITHUB_TOKEN}@github.com/%s" % path
|
|
50
53
|
logger.info("rewriting git url to: %s" % new)
|
|
51
54
|
return new.format(GITHUB_TOKEN=configuration.get_value(ConfigurationVariable.GIT_TOKEN))
|
|
52
55
|
|
|
@@ -808,6 +811,7 @@ class GitTempClone:
|
|
|
808
811
|
Tempfiles objects on Windows are holding references to open files until
|
|
809
812
|
they are collected by the garbage collector, thus preventing deletion.
|
|
810
813
|
"""
|
|
814
|
+
self._clone.repo.close()
|
|
811
815
|
self._repo.repo.close()
|
|
812
816
|
self._temporary_dir.cleanup()
|
|
813
817
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: continuous-delivery-scripts
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.1
|
|
4
4
|
Summary: Continuous Delivery scripts to increase automation
|
|
5
5
|
Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
|
|
6
6
|
Author: CMSIS team
|
|
@@ -141,6 +141,16 @@ Therefore, it installs the following tools which can be used anywhere within a p
|
|
|
141
141
|
* `cd-generate-spdx`: Generates SPDX documents for the project (3rd party IP reporting/ OpenChain)
|
|
142
142
|
* `cd-license-files`: Updates the Licence header and copyright to all the source code files
|
|
143
143
|
|
|
144
|
+
For GitHub automation that performs authenticated clone or fetch operations, see [GitHub Token Authentication](#github-token-authentication).
|
|
145
|
+
|
|
146
|
+
## GitHub Token Authentication
|
|
147
|
+
|
|
148
|
+
When git operations need to retry against GitHub over HTTPS, this project now uses the credential layout `https://x-access-token:<token>@github.com/<owner>/<repo>.git`.
|
|
149
|
+
|
|
150
|
+
This means the token is sent in the password position with `x-access-token` as the username, which is the format GitHub accepts for workflow-generated and other non-OAuth tokens used by automation.
|
|
151
|
+
|
|
152
|
+
Older `https://<token>:x-oauth-basic@github.com/...` URLs were tied to OAuth-style credentials and could reject tokens created dynamically during CI/CD flows.
|
|
153
|
+
|
|
144
154
|
## Project Structure
|
|
145
155
|
|
|
146
156
|
The follow described the major aspects of the project structure:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|