Skip to content

Commit e50716f

Browse files
committed
Update redeployment script for Maven Central Portal
1 parent edd8cca commit e50716f

4 files changed

Lines changed: 56 additions & 40 deletions

File tree

.github/actions/deploy-macosx/action.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -142,24 +142,21 @@ runs:
142142
gradle $GRADLE_TASK $GRADLE_OPTIONS -b $CI_DEPLOY_MODULE/build.gradle --refresh-dependencies
143143
else
144144
mkdir -p $HOME/.m2
145-
echo "<settings>" > $HOME/.m2/settings.xml
146-
echo "<servers><server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server></servers>" >> $HOME/.m2/settings.xml
147-
echo "</settings>" >> $HOME/.m2/settings.xml
145+
echo "<settings><servers>" > $HOME/.m2/settings.xml
146+
echo "<server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server>" >> $HOME/.m2/settings.xml
147+
echo "<server><id>central-portal-staging</id><configuration><httpHeaders><property><name>Authorization</name>" >> $HOME/.m2/settings.xml
148+
echo "<value>Bearer $(echo $CI_DEPLOY_USERNAME:$CI_DEPLOY_PASSWORD | base64)</value></property></httpHeaders></configuration></server>" >> $HOME/.m2/settings.xml
149+
echo "</servers></settings>" >> $HOME/.m2/settings.xml
148150
149151
SECONDS=$(( RANDOM % 300 ))
150152
echo Sleeping $SECONDS seconds to help avoid race conditions with Maven
151153
sleep $SECONDS
152154
153155
echo Executing Maven $MAVEN_PHASE $CI_DEPLOY_OPTIONS on $MAKEJ processors
154156
export EXT=${{ matrix.ext }}
155-
export EXT2=${EXT:1}
156157
export MAVEN_OPTS="-Xss2m -Xmx4g"
157158
export MAVEN_OPTIONS="clean $MAVEN_PHASE clean -B -U -e -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.count=3 -Djavacpp.platform=$CI_DEPLOY_PLATFORM -Djavacpp.platform.extension=$EXT $MAVEN_OPTIONS $CI_DEPLOY_OPTIONS"
158159
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -pl .,$CI_DEPLOY_MODULE && break || STATUS=$? && sleep 60; done; (exit $STATUS)
159-
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -f $CI_DEPLOY_MODULE/platform/$EXT2/pom.xml && break || STATUS=$? && sleep 60; done; (exit $STATUS)
160-
if [[ -e $CI_DEPLOY_MODULE/platform/redist/pom.xml ]]; then
161-
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -f $CI_DEPLOY_MODULE/platform/redist/pom.xml && break || STATUS=$? && sleep 60; done; (exit $STATUS)
162-
fi
163160
fi
164161
df -h
165162

.github/actions/deploy-ubuntu/action.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -324,24 +324,21 @@ runs:
324324
gradle $GRADLE_TASK $GRADLE_OPTIONS -b $CI_DEPLOY_MODULE/build.gradle --refresh-dependencies
325325
else
326326
mkdir -p $HOME/.m2
327-
echo "<settings>" > $HOME/.m2/settings.xml
328-
echo "<servers><server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server></servers>" >> $HOME/.m2/settings.xml
329-
echo "</settings>" >> $HOME/.m2/settings.xml
327+
echo "<settings><servers>" > $HOME/.m2/settings.xml
328+
echo "<server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server>" >> $HOME/.m2/settings.xml
329+
echo "<server><id>central-portal-staging</id><configuration><httpHeaders><property><name>Authorization</name>" >> $HOME/.m2/settings.xml
330+
echo "<value>Bearer $(echo $CI_DEPLOY_USERNAME:$CI_DEPLOY_PASSWORD | base64)</value></property></httpHeaders></configuration></server>" >> $HOME/.m2/settings.xml
331+
echo "</servers></settings>" >> $HOME/.m2/settings.xml
330332
331333
SECONDS=$(( RANDOM % 300 ))
332334
echo Sleeping $SECONDS seconds to help avoid race conditions with Maven
333335
sleep $SECONDS
334336
335337
echo Executing Maven $MAVEN_PHASE $CI_DEPLOY_OPTIONS on $MAKEJ processors
336338
export EXT=${{ matrix.ext }}
337-
export EXT2=${EXT:1}
338339
export MAVEN_OPTS="-Xss2m -Xmx4g"
339340
export MAVEN_OPTIONS="clean $MAVEN_PHASE clean -B -U -e -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.count=3 -Djavacpp.platform=$CI_DEPLOY_PLATFORM -Djavacpp.platform.extension=$EXT $MAVEN_OPTIONS $CI_DEPLOY_OPTIONS"
340341
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -pl .,$CI_DEPLOY_MODULE && break || STATUS=$? && sleep 60; done; (exit $STATUS)
341-
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -f $CI_DEPLOY_MODULE/platform/$EXT2/pom.xml && break || STATUS=$? && sleep 60; done; (exit $STATUS)
342-
if [[ -e $CI_DEPLOY_MODULE/platform/redist/pom.xml ]]; then
343-
for i in {1..5}; do STATUS=0; mvn $MAVEN_OPTIONS -f $CI_DEPLOY_MODULE/platform/redist/pom.xml && break || STATUS=$? && sleep 60; done; (exit $STATUS)
344-
fi
345342
fi
346343
df -h
347344

.github/actions/deploy-windows/action.yml

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,15 @@ runs:
267267
echo Publishing only now to help avoid race conditions with Gradle
268268
gradle %GRADLE_TASK% %GRADLE_OPTIONS% -b %CI_DEPLOY_MODULE%/build.gradle --refresh-dependencies
269269
if ERRORLEVEL 1 exit /b
270-
goto :done3
270+
goto :done
271271
272272
:maven
273273
mkdir %USERPROFILE%\.m2
274-
echo ^<settings^> > %USERPROFILE%\.m2\settings.xml
275-
echo ^<servers^>^<server^>^<id^>central^</id^>^<username^>%CI_DEPLOY_USERNAME%^</username^>^<password^>%CI_DEPLOY_PASSWORD%^</password^>^</server^>^</servers^> >> %USERPROFILE%\.m2\settings.xml
276-
echo ^</settings^> >> %USERPROFILE%\.m2\settings.xml
274+
bash -c "echo ""<settings><servers>""" > %USERPROFILE%\.m2\settings.xml
275+
bash -c "echo ""<server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server>""" >> %USERPROFILE%\.m2\settings.xml
276+
bash -c "echo ""<server><id>central-portal-staging</id><configuration><httpHeaders><property><name>Authorization</name>""" >> %USERPROFILE%\.m2\settings.xml
277+
bash -c "echo ""<value>Bearer $(echo $CI_DEPLOY_USERNAME:$CI_DEPLOY_PASSWORD | base64)</value></property></httpHeaders></configuration></server>""" >> %USERPROFILE%\.m2\settings.xml
278+
bash -c "echo ""</servers></settings>""" >> %USERPROFILE%\.m2\settings.xml
277279
278280
set /a "SECONDS=%RANDOM% %% 300"
279281
if "%CI_DEPLOY_NEED_CUDA%"=="" (
@@ -283,22 +285,13 @@ runs:
283285
284286
echo Executing Maven %MAVEN_PHASE% %CI_DEPLOY_OPTIONS% on %MAKEJ% processors
285287
set EXT=${{ matrix.ext }}
286-
if "%EXT%" == "" (set EXT2=) else (set EXT2=%EXT:~1%)
287288
set "MAVEN_OPTS=-Xss2m -Xmx4g"
288289
set "MAVEN_OPTIONS=clean %MAVEN_PHASE% clean -B -U -e -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.count=3 -Djavacpp.platform=%CI_DEPLOY_PLATFORM% -Djavacpp.platform.extension=%EXT% %MAVEN_OPTIONS% %CI_DEPLOY_OPTIONS%"
289290
290291
setlocal enabledelayedexpansion
291292
for /l %%i in (1,1,5) do (set STATUS=0 & call mvn %MAVEN_OPTIONS% -pl .,%CI_DEPLOY_MODULE% && goto :done || set STATUS=!ERRORLEVEL! && timeout 60 > nul)
292293
exit /b !STATUS!
293294
:done
294-
for /l %%i in (1,1,5) do (set STATUS=0 & call mvn %MAVEN_OPTIONS% -f %CI_DEPLOY_MODULE%/platform/%EXT2%/pom.xml && goto :done2 || set STATUS=!ERRORLEVEL! && timeout 60 > nul)
295-
exit /b !STATUS!
296-
:done2
297-
if exist %CI_DEPLOY_MODULE%/platform/redist/pom.xml (
298-
for /l %%i in (1,1,5) do (set STATUS=0 & call mvn %MAVEN_OPTIONS% -f %CI_DEPLOY_MODULE%/platform/redist/pom.xml && goto :done3 || set STATUS=!ERRORLEVEL! && timeout 60 > nul)
299-
exit /b !STATUS!
300-
)
301-
:done3
302295
ccache --version -sv
303296
df -h
304297
wmic pagefile list /format:list

.github/actions/redeploy/action.yml

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,17 @@ runs:
4141
env:
4242
GITHUB_EVENT_HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
4343
run: |
44-
if [[ -z ${CI_DEPLOY_USERNAME:-} ]] || [[ "$GITHUB_EVENT_NAME" == "pull_request" ]] || [[ "$GITHUB_EVENT_HEAD_COMMIT_MESSAGE" == Release* ]] || [[ "${GITHUB_REF#refs/heads/}" == "release" ]]; then
45-
# We are not deploying snapshots
44+
if [[ -z ${CI_DEPLOY_USERNAME:-} ]] || [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
45+
# We are not deploying
4646
exit 0
4747
fi
4848
49+
curl -LO https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz || curl -LO https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
50+
sudo tar -xzf apache-maven-3.6.3-bin.tar.gz -C /opt/
51+
sudo ln -sf /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
52+
53+
sudo python3 -m pip install gdown || sudo python3 -m pip install --break-system-packages gdown
54+
4955
git --version
5056
mvn -version
5157
df -h
@@ -56,39 +62,57 @@ runs:
5662
git checkout $GITHUB_SHA
5763
5864
mkdir -p $HOME/.m2
59-
echo "<settings>" > $HOME/.m2/settings.xml
60-
echo "<servers><server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server></servers>" >> $HOME/.m2/settings.xml
61-
echo "</settings>" >> $HOME/.m2/settings.xml
65+
echo "<settings><servers>" > $HOME/.m2/settings.xml
66+
echo "<server><id>central</id><username>$CI_DEPLOY_USERNAME</username><password>$CI_DEPLOY_PASSWORD</password></server>" >> $HOME/.m2/settings.xml
67+
echo "<server><id>central-portal-staging</id><configuration><httpHeaders><property><name>Authorization</name>" >> $HOME/.m2/settings.xml
68+
echo "<value>Bearer $(echo $CI_DEPLOY_USERNAME:$CI_DEPLOY_PASSWORD | base64)</value></property></httpHeaders></configuration></server>" >> $HOME/.m2/settings.xml
69+
echo "</servers></settings>" >> $HOME/.m2/settings.xml
6270
6371
GROUP="org.bytedeco"
6472
REPOSITORY_ID="central"
6573
REPOSITORY_URL="https://central.sonatype.com/repository/maven-snapshots/"
74+
DEPLOY_OPTIONS="-DaltDeploymentRepository=$REPOSITORY_ID::default::$REPOSITORY_URL"
75+
DEPLOY_FILE_OPTIONS="deploy:deploy-file -DrepositoryId=$REPOSITORY_ID -Durl=$REPOSITORY_URL"
6676
MAVEN_OPTIONS="-N -B -U -e -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.count=3"
77+
UPLOAD_URL=
78+
if [[ "$GITHUB_EVENT_HEAD_COMMIT_MESSAGE" == Release* ]] || [[ "${GITHUB_REF#refs/heads/}" == "release" ]]; then
79+
python3 -m gdown -q -O settings.tar.gz $CI_DEPLOY_SETTINGS
80+
tar -xzf settings.tar.gz
81+
export GPG_PASSPHRASE=***
82+
DEPLOY_OPTIONS="-DaltDeploymentRepository=local::default::file://$(pwd)/redeploy"
83+
DEPLOY_FILE_OPTIONS="gpg:sign-and-deploy-file -DrepositoryId=local -Durl=file://$(pwd)/redeploy"
84+
MAVEN_OPTIONS="$MAVEN_OPTIONS -Dgpg.homedir=$(pwd)/.gnupg/ -Dgpg.passphrase=$GPG_PASSPHRASE -Dgpg.useagent=false -DperformRelease"
85+
UPLOAD_URL="https://central.sonatype.com/api/v1/publisher/upload"
86+
fi
6787
6888
rm -f dependencies.txt
6989
for POM in $(find $CI_DEPLOY_MODULE/platform/ -iname pom.xml); do
7090
if [[ $POM =~ tensorflow/platform/python ]]; then
7191
continue # Skip over builds taking more than 6 hours on GitHub Actions
7292
fi
93+
if [[ $POM =~ platform/redist ]]; then
94+
continue # Skip over redist artifacts too big for the Central Portal
95+
fi
7396
for i in {1..5}; do
7497
STATUS=0
7598
mvn dependency:list $MAVEN_OPTIONS -DexcludeTransitive -DappendOutput -DoutputFile=$(pwd)/dependencies.txt -f $POM \
7699
&& mvn dependency:resolve -Dclassifier=javadoc $MAVEN_OPTIONS -DexcludeTransitive -DappendOutput -DoutputFile=$(pwd)/dependencies.txt -f $POM \
77100
&& mvn dependency:resolve -Dclassifier=sources $MAVEN_OPTIONS -DexcludeTransitive -DappendOutput -DoutputFile=$(pwd)/dependencies.txt -f $POM \
101+
&& mvn clean deploy $DEPLOY_OPTIONS $MAVEN_OPTIONS -f $POM \
78102
&& break || STATUS=$? && sleep 60
79103
done
80104
(exit $STATUS)
81105
done
82106
83-
for LINE in $(sort -u dependencies.txt); do
84-
if [[ $LINE =~ $GROUP:([^:]*):jar:([^:]*-SNAPSHOT):compile ]]; then
85-
ARTIFACT=${BASH_REMATCH[1]}
86-
VERSION=${BASH_REMATCH[2]}
107+
for LINE in $(sed s/:compile//g dependencies.txt | sort -u); do
108+
[[ "$CI_DEPLOY_MODULE" == "." ]] && ARTIFACT=javacpp || ARTIFACT=$CI_DEPLOY_MODULE
109+
if [[ $LINE =~ $GROUP:$ARTIFACT:jar:([^[:space:]]*) ]]; then
110+
VERSION=${BASH_REMATCH[1]}
87111
FILES=
88112
TYPES=
89113
CLASSIFIERS=
90114
for LINE2 in $(sort -u dependencies.txt); do
91-
if [[ $LINE2 =~ $GROUP:$ARTIFACT:jar:([^:]*):$VERSION:compile ]]; then
115+
if [[ $LINE2 =~ $GROUP:$ARTIFACT:jar:([^:]*):$VERSION ]]; then
92116
CLASSIFIER=${BASH_REMATCH[1]}
93117
FILE=$ARTIFACT-$VERSION-$CLASSIFIER.jar
94118
mv -v $HOME/.m2/repository/${GROUP//.//}/$ARTIFACT/$VERSION/$FILE .
@@ -103,13 +127,18 @@ runs:
103127
unzip -o $FILE META-INF/maven/$GROUP/$ARTIFACT/pom.xml
104128
for i in {1..5}; do
105129
STATUS=0
106-
mvn deploy:deploy-file $MAVEN_OPTIONS -DrepositoryId=$REPOSITORY_ID -Durl=$REPOSITORY_URL -DpomFile=META-INF/maven/$GROUP/$ARTIFACT/pom.xml \
130+
mvn $DEPLOY_FILE_OPTIONS $MAVEN_OPTIONS -DpomFile=META-INF/maven/$GROUP/$ARTIFACT/pom.xml \
107131
-Dfile=$FILE -DgroupId=$GROUP -DartifactId=$ARTIFACT -Dversion=$VERSION -Dfiles=$FILES -Dtypes=$TYPES -Dclassifiers=$CLASSIFIERS && break || STATUS=$? && sleep 60
108132
done
109133
(exit $STATUS)
110134
fi
111135
fi
112136
done
137+
if [[ -n $UPLOAD_URL ]]; then
138+
rm -f $(find redeploy -name *.asc.*)
139+
pushd redeploy; zip -r ../redeploy.zip *; popd
140+
curl --request POST --header "Authorization: Bearer $(echo $CI_DEPLOY_USERNAME:$CI_DEPLOY_PASSWORD | base64)" --form bundle=@redeploy.zip $UPLOAD_URL
141+
fi
113142
df -h
114143
115144
# - name: Save cache

0 commit comments

Comments
 (0)