Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
c8ca5db
Fetch build dependencies based on AD
dennis-behm Jan 30, 2025
82a3809
Missing import of Utilities
dennis-behm Jan 30, 2025
e9eab81
Align fetchDependencies script with Application Descriptor
dennis-behm Jan 30, 2025
8de7794
initial documentation
dennis-behm Jan 30, 2025
f584cfc
initial documentation
dennis-behm Jan 30, 2025
9e98a02
Consolidate fetch script for both dbbBuild.sh and zBuilder.sh
dennis-behm Jan 30, 2025
7b49b4e
Set execute bits for zBuilder.sh
dennis-behm Jan 30, 2025
ca23c00
Update release info and add page break
dennis-behm Feb 3, 2025
98e9de0
Doc updates from code review
dennis-behm Feb 5, 2025
b87255e
Configure Cache directory
dennis-behm Feb 5, 2025
9a1f583
Configure Cache directory
dennis-behm Feb 5, 2025
e923fd2
Configure Cache directory
dennis-behm Feb 5, 2025
8499816
Configure Cache directory
dennis-behm Feb 5, 2025
4a32af5
Add dbbCommunityRepoRoot
dennis-behm Feb 7, 2025
27587cf
Read Application Descriptor via utils
dennis-behm Feb 7, 2025
7e1ac6d
Read Application Descriptor via utils
dennis-behm Feb 7, 2025
88f2df3
Read Application Descriptor via utils
dennis-behm Feb 7, 2025
2881037
Update Packaging process
dennis-behm Feb 24, 2025
d4bd7dd
Update Packaging notes
dennis-behm Feb 24, 2025
4aba150
packageUtils
dennis-behm Feb 24, 2025
43797c7
Add eyecatcher to build frameworks
dennis-behm Feb 7, 2025
4b25d17
why on earth again
dennis-behm Feb 24, 2025
2d9da76
bla
dennis-behm Feb 24, 2025
333c0f7
add buildIdentifier and releaseIdentifier
dennis-behm Feb 28, 2025
2eea9b1
Compute publishing parameters for packaging
dennis-behm Feb 28, 2025
068cc8b
fix duplicate variable usage
dennis-behm Feb 28, 2025
fd398d2
introduce packageBuildIdentifier
dennis-behm Feb 28, 2025
d09cdac
Refactored PackageBuildOutputs to return url
dennis-behm Mar 3, 2025
86a5b61
reference PackagingScript
dennis-behm Mar 3, 2025
31a2439
document external dependencies
dennis-behm Mar 3, 2025
14caa4f
polish cli options
dennis-behm Mar 3, 2025
cb713bb
generalize repo url computation
dennis-behm Mar 3, 2025
725c4f2
switch to updated AD dependency declaration
dennis-behm Mar 3, 2025
cbf88b1
updated reference for testing
dennis-behm Mar 3, 2025
5a8296e
Consider packageUrl config file
dennis-behm Mar 7, 2025
172f7a2
change eyecatcher
dennis-behm Mar 7, 2025
50e9934
new standalone cbs to recompute the package url
dennis-behm Mar 7, 2025
aabd600
set default name for packageVersionConfig
dennis-behm Mar 7, 2025
601dc33
minor fixes
dennis-behm Mar 7, 2025
f8e4b6b
Consolidate package url computation into wazideploy-generate.sh
dennis-behm Mar 10, 2025
1da2b20
merged wazideploy-gen
dennis-behm Mar 10, 2025
e78bf47
update config for testing
dennis-behm Mar 10, 2025
9547523
make WD manifest default
dennis-behm Mar 10, 2025
0a17ed0
move package url computation into ArtifactRepositoryHelpers
dennis-behm Mar 13, 2025
1bf2035
Use computation in ArtifactRepoHelpers
dennis-behm Mar 13, 2025
da200ea
include package url computation in wazideploy-generate
dennis-behm Mar 13, 2025
2740ac7
remove script configuration from ucd integrations
dennis-behm Mar 13, 2025
d439114
remove script configuration from packaging integration
dennis-behm Mar 13, 2025
1c37255
remove script configuration from pipelinebackend config
dennis-behm Mar 13, 2025
52e2ea9
remove script configuration from pipelinebackend config
dennis-behm Mar 13, 2025
d73c755
remove script configuration from pipeline configuration
dennis-behm Mar 13, 2025
9c602a2
consolidate how the url is computed
dennis-behm Mar 13, 2025
15cfcbd
print result to be picked up by cbs
dennis-behm Mar 13, 2025
79f6ca0
return rc on upload
dennis-behm Mar 13, 2025
b8f5edf
return rc on download
dennis-behm Mar 13, 2025
4431915
capture the rc from upload
dennis-behm Mar 13, 2025
53af650
evaluate return code
dennis-behm Mar 13, 2025
ac1c4bc
fix syntax error
dennis-behm Mar 13, 2025
62f4091
switch to suffix pattern
dennis-behm Mar 13, 2025
9f6aab6
Add release update
dennis-behm Mar 13, 2025
ef71fc4
remote testing bits
dennis-behm Mar 13, 2025
4b55eb8
Add release update wdg
dennis-behm Mar 13, 2025
27d008e
fix merge conflict
dennis-behm Mar 13, 2025
226e7f5
remove function
dennis-behm Mar 13, 2025
839fd3a
remove function from config
dennis-behm Mar 13, 2025
eedd6b6
update log outputs
dennis-behm Mar 13, 2025
676226d
updated structure of AD for dependencies
dennis-behm Mar 13, 2025
8d62c0d
align with new dependency attribute in application descriptor
dennis-behm Mar 13, 2025
2d9990a
Doc updates
dennis-behm Mar 17, 2025
89b8f8c
Doc updates
dennis-behm Mar 17, 2025
d55517f
remove slurper
dennis-behm Mar 17, 2025
6b56de8
Use artifact name suffix
dennis-behm Mar 17, 2025
4936889
Change to blanks instead of tab
dennis-behm Mar 17, 2025
70c7551
Cleanup packaging scripts
dennis-behm Mar 17, 2025
d5d0c15
additional documentation
dennis-behm Mar 17, 2025
716c8f3
Align deployment step with download approach
dennis-behm Mar 19, 2025
0e261b1
Pass applicationFolderPath to publish interfaces
dennis-behm Mar 19, 2025
1bf7cd9
add check for tarfile
dennis-behm Mar 19, 2025
9552aa1
update readme
dennis-behm Mar 19, 2025
0b5921e
apply format
dennis-behm Mar 19, 2025
07ff7da
Ensure backward compatibilty passing versionName
dennis-behm Mar 20, 2025
f2e4b89
store package in deployfolder
dennis-behm Mar 20, 2025
8e5e23b
store package in deployfolder fix path
dennis-behm Mar 20, 2025
139a28c
Expect application descriptor on the root level of the application di…
dennis-behm Mar 20, 2025
85ee445
Validate configuration parm
dennis-behm Mar 20, 2025
718a6ea
hide pwds
dennis-behm Mar 20, 2025
7549a5a
remove prefixing
dennis-behm Mar 20, 2025
ad13508
Align with required location of the application descriptor
dennis-behm Mar 20, 2025
5e52119
Document external dependencies in wazi deploy app manifest
dennis-behm Mar 21, 2025
c0cdf1b
update file references
dennis-behm Mar 21, 2025
09a7574
Simplify package management
dennis-behm Mar 24, 2025
c4aedd3
Pass Helper location
dennis-behm Mar 24, 2025
70ce2f3
extract the url
dennis-behm Mar 24, 2025
654ae89
extract the url
dennis-behm Mar 24, 2025
945e234
update passing variables
dennis-behm Mar 24, 2025
5c45d09
expand fetching baseline package
dennis-behm Mar 24, 2025
90ded94
manage baseline package during packaging step
dennis-behm Mar 25, 2025
b05ebd8
remove scriptDir
dennis-behm Mar 25, 2025
6d73045
Apply suggestions from code review - primarily documentation
dennis-behm Mar 25, 2025
daec39d
add description about baseline package
dennis-behm Mar 25, 2025
ae02e69
add description about baseline package
dennis-behm Mar 25, 2025
75311e8
Rename internal method
dennis-behm Mar 25, 2025
1f5f65f
Reviewer feedback to rename variable
dennis-behm Mar 25, 2025
6de3d4c
Reviewer feedback to rename outputs
dennis-behm Mar 25, 2025
b3cfe74
remove unused variable
dennis-behm Mar 25, 2025
942d4a2
remove odd exit path
dennis-behm Mar 25, 2025
824e652
call the utilities instead of sourcing it
dennis-behm Mar 25, 2025
ac0a7cc
pass correct cli to packaging script
dennis-behm Mar 25, 2025
dea582a
fix baseline package reference
dennis-behm Mar 25, 2025
b1bf88e
README updates
dennis-behm Mar 26, 2025
858591b
Apply suggestions from code review
dennis-behm Mar 28, 2025
15504fe
numbering in readme
dennis-behm Mar 28, 2025
1391d58
Switch to UTF-8 output
dennis-behm Mar 28, 2025
deeb9bb
Fix path in ucdPackaging
dennis-behm Mar 31, 2025
e4e41f2
Remove configuration
dennis-behm Apr 1, 2025
275a526
Apply suggestions from code review
dennis-behm Apr 1, 2025
51a0da2
Use Archive instead of Package
dennis-behm Apr 1, 2025
9de0df9
Fix renamed object names
dennis-behm Apr 1, 2025
eaca963
sync with latest AD schema
dennis-behm Apr 2, 2025
5da0453
code formatting
dennis-behm Apr 2, 2025
f03c412
Updating messages for more consistency
dennis-behm Apr 2, 2025
3739497
rename to archiveCache
dennis-behm Apr 2, 2025
6134ce3
disable new feature
dennis-behm Apr 2, 2025
be55b7a
rename to just url
dennis-behm Apr 7, 2025
5d73f63
manage missing AD definitions
dennis-behm Apr 7, 2025
28b88c4
fix syntax error
dennis-behm Apr 7, 2025
837e847
fix syntax error
dennis-behm Apr 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 69 additions & 9 deletions Pipeline/PackageBuildOutputs/ArtifactRepositoryHelpers.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def <T> CompletableFuture<HttpResponse<T>>

run(args)

// public methods
def upload(String url, String fileName, String user, String password, boolean verbose, String httpClientVersion) throws IOException {
System.setProperty("jdk.httpclient.allowRestrictedHeaders", "Connection")
println( "** ArtifactRepositoryHelper started for upload of $fileName to $url" );
Expand All @@ -66,15 +67,15 @@ def upload(String url, String fileName, String user, String password, boolean ve
// }

HttpClient httpClient = httpClientBuilder.build();

// build http request
HttpRequest.Builder httpRequestBuilder = HttpRequest.newBuilder()
.uri(URI.create("$url"))
.header("Content-Type", "binary/octet-stream")
.header("Connection","Keep-Alive")
.PUT(BodyPublishers.ofFile(Paths.get(fileName)));

// set http client version if set
// set http client version if set
if (httpClientVersion) {
def httpVer = HttpClient.Version.valueOf(httpClientVersion)
if (httpVer) {
Expand All @@ -90,9 +91,10 @@ def upload(String url, String fileName, String user, String password, boolean ve

HttpResponse.BodyHandler<String> handler = HttpResponse.BodyHandlers.ofString();
// submit request

CompletableFuture<HttpResponse<String>> response = httpClient.sendAsync(request, handler).thenComposeAsync(r -> tryResend(httpClient, request, handler, 1, r));
HttpResponse finalResponse = response.get()

if (verbose)
println("** Response: " + finalResponse);

Expand All @@ -104,6 +106,7 @@ def upload(String url, String fileName, String user, String password, boolean ve
else {
println("*! Upload failed.");
}
return rc
}

def download(String url, String fileName, String user, String password, boolean verbose) throws IOException {
Expand Down Expand Up @@ -154,8 +157,18 @@ def download(String url, String fileName, String user, String password, boolean
} else {
println("*! Download failed.");
}

return rc
}

// Method directly accessed by PackageBuildOutputs and Common Backend script functionality
def computeArchiveUrl(Properties props) {
def String remotePath = (props.versionName) ? (props.versionName + "/" + props.tarFileName) : (props.tarFileLabel + "/" + props.tarFileName)
def url = new URI(props.get('artifactRepository.url') + "/" + props.get('artifactRepository.repo') + "/" + (props.get('artifactRepository.directory') ? "${props.get('artifactRepository.directory')}/" : "") + remotePath).normalize().toString() // Normalized URL
return url
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a print of the url before returning it

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method is used by various other scripts. I don't want to pollute their outputs.

}

// private methods
def evaluateHttpResponse (HttpResponse response, String action, boolean verbose) {
int rc = 0
def statusCode = response.statusCode()
Expand All @@ -173,29 +186,76 @@ def evaluateHttpResponse (HttpResponse response, String action, boolean verbose)
//Parsing the command line
def run(String[] cliArgs) {
def cli = new CliBuilder(usage: "ArtifactRepositoryHelpers.groovy [options]", header: '', stopAtNonOption: false)
def Properties props = new Properties()
cli.h(longOpt:'help', 'Prints this message')
cli.u(longOpt:'url', args:1, required:true, 'Artifactory file uri location')
cli.u(longOpt:'url', args:1,'Absolute artifact repository url location to store package')
cli.fU(longOpt:'fileToUpload', args:1, 'The full path of the file to upload')
cli.fD(longOpt:'fileToDownload', args:1, 'The full path of the file to download')
cli.U(longOpt:'user', args:1, required:true, 'Artifactory user id')
cli.P(longOpt:'password', args:1, required:true, 'Artifactory password')
cli.U(longOpt:'user', args:1,'Artifact repository user id or token')
cli.P(longOpt:'password', args:1, 'Artifact repository password')
cli.ht(longOpt:'httpClientVersion', args:1, 'HTTP Client protocol version')
cli.v(longOpt:'verbose', 'Flag to turn on script trace')

// recompute options
// Compute Flag to recompute url

cli.c(longOpt:'computeArchiveUrl', 'Action Flag to identify to recompute the uri of a given package')
cli.t(longOpt:'tarFileName', args:1, argName:'filename', 'Name of the package tar file. (Optional unless using --buildReportOrder or --buildReportOrderFile)')
cli.aRU(longOpt:'artifactRepositoryUrl', args:1, 'Artifact repository url')
cli.aRN(longOpt:'artifactRepositoryName', args:1, 'Artifact repository name')
cli.aRD(longOpt:'artifactRepositoryDirectory', args:1, 'Artifact repository directory')
cli.aVN(longOpt:'versionName', args:1, argName:'versionName', 'Name of the version/package folder on the Artifact repository server.')

def opts = cli.parse(cliArgs)

// if opt parsing fails, exit
if (opts == null || !opts) {
System.exit(1)
}

if (opts.c) props.computeArchiveUrl = true
if (opts.t) props.tarFileName = opts.t
if (opts.aRU) props.put('artifactRepository.url', opts.aRU)
if (opts.aRN) props.put('artifactRepository.repo', opts.aRN)
if (opts.aRD) props.put('artifactRepository.directory', opts.aRD)
if (opts.aVN) props.versionName = opts.aVN



if (opts.h) {
cli.usage()
System.exit(0)
}

if ( opts.fU) {
// assert required CLI options for upload
assert opts.u : "Missing option: Absolute artifact repository url location to store package"
assert opts.U : "Missing option: Artifact repository user id or token"
assert opts.P : "Missing option: Artifactory password"
upload(opts.u, opts.fU, opts.U, opts.P, opts.v)
} else {
} else if (opts.fD) {
// assert required CLI options for download
assert opts.u : "Missing option: Absolute artifact repository url location to store package"
assert opts.U : "Missing option: Artifact repository user id or token"
assert opts.P : "Missing option: Artifactory password"
download(opts.u, opts.fD, opts.U, opts.P, opts.v)
}
}
} else if (props.computeArchiveUrl){

// invoke processing
if (props.computeArchiveUrl && props.computeArchiveUrl.toBoolean()) {
// check requires cli arguments for this operation
assert props.tarFileName : "Missing option tarFileName (--tarFileName)"
assert props.versionName : "Missing option versionName (--versionName)"
assert props.get('artifactRepository.url') : "Missing option artifactRepository.url (--artifactRepositoryUrl)"
assert props.get('artifactRepository.repo'): "Missing option artifactRepository.repo (--artifactRepositoryName)"
assert props.get('artifactRepository.directory'): "Missing option artifactRepository.directory (--artifactRepositoryDirectory)"

// load script
archiveUrl = computeArchiveUrl(props)
// the println is used in a script by the CBS to grep the url
println "url=$archiveUrl"
} else
println("** No action has been specified for the ArtifactoryHelpers (available action triggers 'fileToUpload' or 'fileToDownload' or 'computeArchiveUrl') ");
}
}

Loading