12
12
types : [opened, reopened, synchronize, labeled, unlabeled]
13
13
env :
14
14
STAGING_PROFILE_ID : 46f80d0729c92d
15
+ DEPLOY_SNAPSHOT : ${{ github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging') }}
16
+ DEPLOY_RELEASE : ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/r') }}
15
17
jobs :
16
18
check-format :
17
19
if : github.event_name == 'pull_request'
@@ -35,19 +37,30 @@ jobs:
35
37
prepare :
36
38
runs-on : ubuntu-20.04
37
39
outputs :
38
- stagingRepositoryId : ${{ steps.staging .outputs.stagingRepositoryId }}
40
+ repositoryUrl : ${{ steps.repository .outputs.repositoryUrl }}
39
41
steps :
40
42
- name : Create staging repository
41
- if : github.event_name == 'push' && startsWith(github.ref, 'refs/heads/r')
43
+ if : env.DEPLOY_RELEASE == 'true'
42
44
id : staging
43
45
run : |
44
46
echo "Creating staging repository with profile $STAGING_PROFILE_ID"
45
47
echo "<promoteRequest><data><description>Releasing TF Java - created by CI build</description></data></promoteRequest>" > request.xml
46
48
curl -X POST -d @request.xml -s -o response.xml -u ${{ secrets.CI_DEPLOY_USERNAME }}:${{ secrets.CI_DEPLOY_PASSWORD }} -H "Content-Type:application/xml" \
47
49
https://oss.sonatype.org/service/local/staging/profiles/$STAGING_PROFILE_ID/start
48
- STAGING_REPOSITORY_ID=`awk -F'[<>]' '/stagedRepositoryId/{print $3}' response.xml`
50
+ export STAGING_REPOSITORY_ID=`awk -F'[<>]' '/stagedRepositoryId/{print $3}' response.xml`
49
51
echo "Staging repository created: $STAGING_REPOSITORY_ID"
50
- echo "::set-output name=stagingRepositoryId::$STAGING_REPOSITORY_ID"
52
+ - name : Checkout repository
53
+ uses : actions/checkout@v1
54
+ - name : Extract distribution repository URL
55
+ id : repository
56
+ run : |
57
+ if [[ "${{ env.DEPLOY_RELEASE }}" = "true" ]]; then
58
+ export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.repository.url}" -DstagingRepositoryId=$STAGING_REPOSITORY_ID`
59
+ else
60
+ export REPOSITORY_URL=`mvn exec:exec -q -N -Dexec.executable='echo' -Dexec.args="\\${project.distributionManagement.snapshotRepository.url}"`
61
+ fi
62
+ echo "Repository URL: $REPOSITORY_URL"
63
+ echo "::set-output name=repositoryUrl::$REPOSITORY_URL"
51
64
linux-x86_64 :
52
65
runs-on : ubuntu-20.04
53
66
needs : prepare
67
80
gcc --version
68
81
mvn -version
69
82
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
70
- mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=linux-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }}
83
+ mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
84
+ - name : Deploy native artifact
85
+ if : env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
86
+ run : mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
71
87
macosx-arm64 :
72
88
runs-on : macos-14
73
89
needs : prepare
@@ -88,7 +104,10 @@ jobs:
88
104
clang --version
89
105
mvn -version
90
106
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
91
- mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=macosx-arm64 -Djavacpp.platform.extension=${{ matrix.ext }} -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }}
107
+ mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
108
+ - name : Deploy native artifact
109
+ if : env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
110
+ run : mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
92
111
macosx-x86_64 :
93
112
runs-on : macos-11
94
113
needs : prepare
@@ -108,9 +127,11 @@ jobs:
108
127
clang --version
109
128
mvn -version
110
129
echo "<settings><servers><server><id>ossrh</id><username>${{ secrets.CI_DEPLOY_USERNAME }}</username><password>${{ secrets.CI_DEPLOY_PASSWORD }}</password></server></servers></settings>" > $HOME/.m2/settings.xml
111
- mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=macosx-x86_64 -Djavacpp.platform.extension=${{ matrix.ext }} -am -DstagingRepositoryId=${{ needs.prepare.outputs.stagingRepositoryId }}
130
+ mvn clean install -pl '!tensorflow-framework' -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }}
131
+ - name : Deploy native artifact
132
+ if : env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
133
+ run : mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
112
134
windows-x86_64 :
113
- if : github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'CI build')
114
135
runs-on : windows-2019
115
136
needs : prepare
116
137
strategy :
@@ -148,10 +169,13 @@ jobs:
148
169
call mvn -version
149
170
echo ^<settings^>^<servers^>^<server^>^<id^>ossrh^</id^>^<username^>${{ secrets.CI_DEPLOY_USERNAME }}^</username^>^<password^>${{ secrets.CI_DEPLOY_PASSWORD }}^</password^>^</server^>^</servers^>^</settings^> > %USERPROFILE%\.m2\settings.xml
150
171
set "SKIP_EXPORT=true"
151
- call mvn clean install -pl "!tensorflow-framework" -B -U -e -Djavacpp.platform=windows-x86_64 -Djavacpp.platform.extension= ${{ matrix.ext }} -am -DstagingRepositoryId =${{ needs.prepare.outputs.stagingRepositoryId }}
172
+ call mvn clean install -pl "!tensorflow-framework" -B -U -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension =${{ matrix.ext }}
152
173
if ERRORLEVEL 1 exit /b
174
+ - name : Deploy native artifact
175
+ if : env.DEPLOY_RELEASE == 'true' || env.DEPLOY_SNAPSHOT == 'true'
176
+ run : call mvn -f tensorflow-core/tensorflow-core-native/pom.xml deploy:deploy-file@native-only -B -e -Djavacpp.platform=${{ github.job }} -Djavacpp.platform.extension=${{ matrix.ext }} -Durl=${{ needs.prepare.outputs.repositoryUrl }}
153
177
deploy :
154
- if : github.event_name == 'push' && (contains( github.ref, ' master') || contains( github.ref, ' staging'))
178
+ if : ${{ github.event_name == 'push' && (github.ref == 'refs/heads/ master' || github.ref == 'refs/heads/ staging') }} # DEPLOY_SNAPSHOT (releases should be signed and deployed manually from local machine )
155
179
needs : [linux-x86_64, macosx-x86_64, windows-x86_64, macosx-arm64]
156
180
runs-on : ubuntu-20.04
157
181
steps :
0 commit comments