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.
Files changed (71) hide show
  1. {continuous_delivery_scripts-3.4.1/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-3.5.1}/PKG-INFO +11 -1
  2. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/README.md +10 -0
  3. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/_version.py +3 -3
  4. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/golang.py +76 -15
  5. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/git_helpers.py +7 -3
  6. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1/continuous_delivery_scripts.egg-info}/PKG-INFO +11 -1
  7. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/LICENSE +0 -0
  8. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/MANIFEST.in +0 -0
  9. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/__init__.py +0 -0
  10. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/assert_news.py +0 -0
  11. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/create_news_file.py +0 -0
  12. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/detect_secrets.py +0 -0
  13. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/generate_docs.py +0 -0
  14. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/generate_news.py +0 -0
  15. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/get_config.py +0 -0
  16. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/get_version.py +0 -0
  17. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/language_specifics.py +0 -0
  18. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/license_files.py +0 -0
  19. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
  20. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/CI.MD +0 -0
  21. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
  22. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
  23. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
  24. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
  25. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/__init__.py +0 -0
  26. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/basic.py +0 -0
  27. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/ci.py +0 -0
  28. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/docker.py +0 -0
  29. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
  30. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/noop.py +0 -0
  31. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/plugins/python.py +0 -0
  32. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/report_third_party_ip.py +0 -0
  33. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
  34. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
  35. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_document.py +0 -0
  36. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
  37. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +0 -0
  38. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_package.py +0 -0
  39. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_project.py +0 -0
  40. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/spdx_report/spdx_summary.py +0 -0
  41. {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
  42. {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
  43. {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
  44. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/tag_and_release.py +0 -0
  45. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
  46. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/__init__.py +0 -0
  47. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
  48. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/configuration.py +0 -0
  49. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/definitions.py +0 -0
  50. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
  51. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
  52. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/language_specifics_base.py +0 -0
  53. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/logging.py +0 -0
  54. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/news_file.py +0 -0
  55. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
  56. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
  57. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
  58. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
  59. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
  60. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
  61. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
  62. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/third_party_licences.py +0 -0
  63. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts/utils/versioning.py +0 -0
  64. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/SOURCES.txt +0 -0
  65. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
  66. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/entry_points.txt +0 -0
  67. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
  68. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
  69. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/pyproject.toml +0 -0
  70. {continuous_delivery_scripts-3.4.1 → continuous_delivery_scripts-3.5.1}/setup.cfg +0 -0
  71. {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.4.1
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.4.1"
15
- COMMIT = "3cb7eefdafb8306ca4750f371325574e1a2ec9c7"
14
+ __version__ = "3.5.1"
15
+ COMMIT = "5f0dc45967d1e56a6e03168c0c9b54cc7aaa98c7"
16
16
  MAJOR = 3
17
- MINOR = 4
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 _determine_go_module_tag(version: str) -> Optional[str]:
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 = str(SRC_DIR.relative_to(ROOT_DIR))
149
+ module = module_directory.relative_to(ROOT_DIR)
155
150
  except ValueError:
156
151
  try:
157
- module = str(ROOT_DIR.relative_to(SRC_DIR))
152
+ module = ROOT_DIR.relative_to(module_directory)
158
153
  except ValueError as exception:
159
154
  logger.warning(exception)
160
- if module == "." or len(module) == 0:
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
- module = module.rstrip("/")
163
- return f"{module}/{version}"
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 = _determine_go_module_tag(self.get_version_tag(version))
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 the GitHub token:
43
- See https://github.blog/2012-09-21-easier-builds-and-deployments-using-git-over-https-and-oauth/
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}:x-oauth-basic@github.com/%s" % path
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.4.1
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: