Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(AritfactDeployer): Record deployments for use in plugins and via API #63

Draft
wants to merge 32 commits into
base: master
Choose a base branch
from

Conversation

copart-jafloyd
Copy link

@copart-jafloyd copart-jafloyd commented Aug 11, 2023

When deploying a -SNAPSHOT build, I need a way to look up what the resolved version and the deployed artifact's file name when ArtifactDeployer deploys it to the remote repository.

So, this PR adds machinery to allow recording deployments on the Build object via an InvisibleAction. This will show up in API calls, and will be available for use by other plugins.

Also, I had issues running tests locally under JDK 17, so I bumped the jenkins version to the oldest still-supported LTS releas.

This is not related to any Jira issues.

Built on top of #62 , so that should be merged first.

Testing done

For tests, it's not clear how to mock out the interactions with the aether library during deployment. Do you have any hints on how to test deployment?

I've manually tested by running a job and inspecting the output of job/<job>/build/<number>/api/json?pretty=true to ensure the artifacts are recorded as expected.

Submitter checklist

This allows programmatic access to the maven metadata and the download url.
Running the tests was failing under JDK 17, so the test harness (brought in by the bom and parent plugin)
needed to be updated.
After the update, the TokenMacro tests failed until slightly bumping the token-macro dep.
credentialsId is defined on the repository (referenced by repositoryId), not on the ArtifactDeployer.
The artifact/metadata file is a tmp file that has no bearing on what gets deployed
the local path does not have the deployed file name
the previous attempt could not relativize the paths because they are both "absolute".
The action class needs to be serializable, but RepositoryLayoutProvider is not.
So, move the responsibility up into the recorder.
use basically the same logic as Artifact.
no need to pass in the session since it is already passed as part of the event
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant