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

[FEA] Create a nightly/weekly test for release deploy script #10164

Closed
gerashegalov opened this issue Jan 8, 2024 · 1 comment · Fixed by #10201
Closed

[FEA] Create a nightly/weekly test for release deploy script #10164

gerashegalov opened this issue Jan 8, 2024 · 1 comment · Fixed by #10201
Assignees
Labels
test Only impacts tests

Comments

@gerashegalov
Copy link
Collaborator

gerashegalov commented Jan 8, 2024

Is your feature request related to a problem? Please describe.
Multiple releases had seen issues discovered last minute before doing the release
Examples #3927, #3934, #4253, #5233

Basically any bigger refactor with poms like recently for Scala 2.13, runs the risk of introducing time "bombs" going off at the worst moment of the dev life cycle.

The reason for this is the nightly build & deploy process is different from the final release process

The nightly process boils down to invoking mvn deploy:deploy on aggregator or intergation_tests, and so every parent, intermediate parent, submodule artifacts get deployed automatically to the "nightly" internal Maven repo. Thus every artifact is resolvable and the existing tests verifying this via subsequent mvn dependency:get (or the --packages via #10160) trivially succeed.

The process during the release is to 'deploy:deploy-file' a hand-picked set of artifacts to Maven central. This does not take care of any dependencies/artifacts outside this explicit list.

Describe the solution you'd like

To left-shift the detection of the release deployment issues, we need a nightly test that mimics exactly what happens during the release process. It can be emulated with a local Maven repo on the local file system.

Create a fresh local dir such as /tmp/local-release-repo
mvn deploy:deploy-file -Durl=file:/tmp/local-release-repo \
    -DpomFile=$PWD/dist/target/parallel-world/META-INF/maven/com.nvidia/rapids-4-spark_2.12/pom.xml \
    -Dfile=$PWD/dist/target/rapids-4-spark_2.12-24.02.0-SNAPSHOT-cuda11.jar \
    -Dfiles=$PWD/dist/target/rapids-4-spark_2.12-24.02.0-SNAPSHOT-cuda11.jar \
    -Dclassifiers=cuda11 \
    -Dtypes=jar \
    -DgroupId=com.nvidia \
    -DartifactId=rapids-4-spark_2.12 \
    -Dversion=24.02.0-SNAPSHOT
repeat deploy:file for all release artifacts in your list

Create another fresh local directory for /tmp/test-get-dest
cd  /tmp/test-get-dest
for each artifact and classifier we document as dependency:get-able such rapids-4-spark_2.12, ...
create a fresh empty dir /tmp/m2-cache every iteration such that there are no cached side-effects from one depenendcy:get to another
execute depenency:get. For example 
 mvn dependency:get \
    -Dartifact=com.nvidia:rapids-4-spark_2.12:24.02.0-SNAPSHOT:jar:cuda11 \
    -Ddest=$PWD \
    -DremoteRepositories=file:/tmp/local-release-repo \

    -Dmaven.repo.local=/tmp/m2-cache

Describe alternatives you've considered
N/A

Additional context
#10051

@gerashegalov gerashegalov added feature request New feature or request ? - Needs Triage Need team to review and classify labels Jan 8, 2024
@NvTimLiu
Copy link
Collaborator

NvTimLiu commented Jan 9, 2024

Thanks @gerashegalov , I'm working on it

@mattahrens mattahrens added test Only impacts tests and removed ? - Needs Triage Need team to review and classify feature request New feature or request labels Jan 9, 2024
NvTimLiu added a commit to NvTimLiu/spark-rapids that referenced this issue Jan 15, 2024
To fix : NVIDIA#10164

Deploy jars to local maven repo leveraging the release deploy script.

The we can check these to be released jars' dependencies in the local maven repo.

Signed-off-by: Tim Liu <timl@nvidia.com>
NvTimLiu added a commit to NvTimLiu/spark-rapids that referenced this issue Jan 15, 2024
To fix : NVIDIA#10164

Deploy release candidates to local maven repo leveraging the release deploy script.

Instead of using internal snapshots maven repo(having all the intermediate artifacts),
    we check dependencies for the release candidates using the local maven repo,
    which only contains release candidates.

Signed-off-by: Tim Liu <timl@nvidia.com>
NvTimLiu added a commit to NvTimLiu/spark-rapids that referenced this issue Jan 15, 2024
To fix : NVIDIA#10164

Deploy release candidates to local maven repo leveraging the release deploy script.

Instead of using internal snapshots maven repo(having all the intermediate artifacts),
    we check dependencies for the release candidates using the local maven repo,
    which only contains release candidates.

Signed-off-by: Tim Liu <timl@nvidia.com>
NvTimLiu added a commit that referenced this issue Jan 23, 2024
…ip ci] (#10201)

* Deploy release candidates to local maven repo for dependency check

To fix : #10164

Deploy release candidates to local maven repo leveraging the release deploy script.

Instead of using internal snapshots maven repo(having all the intermediate artifacts),
    we check dependencies for the release candidates using the local maven repo,
    which only contains release candidates.

Signed-off-by: Tim Liu <timl@nvidia.com>

* Add the dependency checking script

Signed-off-by: Tim Liu <timl@nvidia.com>

* Remove pom files from the dependency file list

Signed-off-by: Tim Liu <timl@nvidia.com>

* Remove another pom in the dependency check list

Signed-off-by: Tim Liu <timl@nvidia.com>

* description what jenkions/dependency-check.sh does

---------

Signed-off-by: Tim Liu <timl@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
test Only impacts tests
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants