Skip to content

Commit c7199ee

Browse files
committed
Configurable artifact folder for upload.
1 parent b9ea180 commit c7199ee

3 files changed

Lines changed: 41 additions & 34 deletions

File tree

cumulusci_ado/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.0.5"
1+
__version__ = "0.0.6"

cumulusci_ado/cumulusci_plugin.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ plugins:
1616
completion_opts_bypass_reason: Automated bypass for CI/CD pipeline
1717
organisation_artifact: False # When True artifacts are created at Organisation level otherwise, its project level.
1818
feed_name: SFCore Packages # Default feed name for salesforce packages
19+
artifact_folder_path: # Artifact folder in repo to upload for salesforce packages
1920
services:
2021
azure_devops:
2122
description: Configure connection for Azure DevOps Server

cumulusci_ado/vcs/ado/adapter.py

Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -732,14 +732,9 @@ def package_name(self) -> str:
732732

733733
@property
734734
def feed_name(self) -> str:
735-
if self.organisation_artifact:
736-
fname: str = self.project_config.project__custom__ado_feedname or str(
737-
self.config("feed_name")
738-
)
739-
else:
740-
fname: str = self.project_config.project__custom__ado_feedname or str(
741-
self.config("feed_name")
742-
)
735+
fname: str = self.project_config.project__custom__ado_feedname or str(
736+
self.config("feed_name")
737+
)
743738
return fname.replace(" ", "-").lower()
744739

745740
@property
@@ -1109,9 +1104,12 @@ def full_name(self) -> str:
11091104
def publish_repo_package(self, feed, tag_name: str, description: str) -> None:
11101105
"""Publishes a package to the given feed."""
11111106
repo_root = self.project_config.repo_root or "."
1112-
force_app_path = os.path.join(repo_root, "force-app")
1113-
if not os.path.exists(force_app_path):
1114-
force_app_path = repo_root
1107+
artifact_path = os.path.join(
1108+
repo_root, str(self.config("artifact_folder_path") or "")
1109+
)
1110+
1111+
if not os.path.exists(artifact_path):
1112+
artifact_path = repo_root
11151113

11161114
ctool = self.connection.get_client(
11171115
"cumulusci_ado.utils.common.client_tool.client_tool_client.ClientToolClient"
@@ -1122,7 +1120,7 @@ def publish_repo_package(self, feed, tag_name: str, description: str) -> None:
11221120
feed.id,
11231121
self.package_name,
11241122
tag_name,
1125-
force_app_path,
1123+
artifact_path,
11261124
description=description,
11271125
scope=("organization" if self.organisation_artifact else "project"),
11281126
organization=f"https://{self._service_config.url if self._service_config else ''}",
@@ -1132,16 +1130,8 @@ def publish_repo_package(self, feed, tag_name: str, description: str) -> None:
11321130

11331131
return ret
11341132

1135-
def create_release(
1136-
self,
1137-
tag_name: str,
1138-
name: str = "",
1139-
body: str = "",
1140-
draft: bool = False,
1141-
prerelease: bool = False,
1142-
options: dict = {},
1143-
) -> ADORelease:
1144-
"""Creates a release on the given repository."""
1133+
def get_feed(self) -> Feed:
1134+
"""Fetches the feed for the given repository."""
11451135
try:
11461136
feed: Feed = self.feed_client.get_feed(
11471137
self.feed_name,
@@ -1153,32 +1143,41 @@ def create_release(
11531143
feed_instance,
11541144
project=(None if self.organisation_artifact else self.project_id),
11551145
)
1146+
return feed
1147+
1148+
def create_release(
1149+
self,
1150+
tag_name: str,
1151+
name: str = "",
1152+
body: str = "",
1153+
draft: bool = False,
1154+
prerelease: bool = False,
1155+
options: dict = {},
1156+
) -> ADORelease:
1157+
"""Creates a release on the given repository."""
1158+
1159+
feed: Feed = self.get_feed()
11561160

11571161
try:
11581162
numeric_part = custom_to_semver(tag_name, self.project_config)
11591163

11601164
version, pkg = self.get_version_package(tag_name)
11611165

1166+
description = {"tag_name": tag_name}
1167+
1168+
if options.get("version_id"):
1169+
description["version_id"] = options["version_id"]
1170+
11621171
if version is None:
11631172
self.publish_repo_package(
11641173
feed,
11651174
numeric_part,
1166-
description=json.dumps({"tag_name": tag_name, "body": body}),
1175+
description=json.dumps(description),
11671176
)
11681177

11691178
self._package = None
11701179
version, pkg = self.get_version_package(tag_name)
11711180

1172-
if pkg and version:
1173-
release: PackageVersion = self.feed_client.get_package_version(
1174-
feed.id,
1175-
pkg.id,
1176-
version.id,
1177-
project=(
1178-
None if self.organisation_artifact else self.project_id
1179-
),
1180-
)
1181-
11821181
if not pkg:
11831182
raise ADOApiNotFoundError(
11841183
f"Package {self.package_name} not found in feed {self.feed_name}"
@@ -1189,6 +1188,13 @@ def create_release(
11891188
f"Version {tag_name} not found for package {self.package_name}"
11901189
)
11911190

1191+
release: PackageVersion = self.feed_client.get_package_version(
1192+
feed.id,
1193+
pkg.id,
1194+
version.id,
1195+
project=(None if self.organisation_artifact else self.project_id),
1196+
)
1197+
11921198
if draft:
11931199
return ADORelease(release=release, tag_name=tag_name)
11941200

0 commit comments

Comments
 (0)