@@ -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