1
+ variables :
2
+ - group : ' jellyfin'
3
+
1
4
trigger :
5
+ batch : true
2
6
branches :
3
7
include :
4
8
- master
12
16
include :
13
17
- ' *'
14
18
15
- pool :
16
- vmImage : ' ubuntu-latest'
17
-
18
- steps :
19
- - task : Gradle@2
20
- inputs :
21
- gradleWrapperFile : ' gradlew'
22
- tasks : ' build'
23
- publishJUnitResults : true
24
- testResultsFiles : ' **/TEST-*.xml'
25
- javaHomeOption : ' JDKVersion'
26
- sonarQubeRunAnalysis : false
19
+ jobs :
20
+ - job : Test
21
+ displayName : ' Test'
22
+
23
+ pool :
24
+ vmImage : ' ubuntu-latest'
25
+
26
+ steps :
27
+ - task : Gradle@2
28
+ displayName : ' Run Tests'
29
+ inputs :
30
+ gradleWrapperFile : ' gradlew'
31
+ tasks : ' test'
32
+ publishJUnitResults : true
33
+ testResultsFiles : ' **/TEST-*.xml'
34
+ javaHomeOption : ' JDKVersion'
35
+ sonarQubeRunAnalysis : false
36
+
37
+ - job : Build
38
+ displayName : ' Build'
39
+
40
+ pool :
41
+ vmImage : ' ubuntu-latest'
42
+
43
+ steps :
44
+ - task : Gradle@2
45
+ displayName : ' Build Debug'
46
+ inputs :
47
+ gradleWrapperFile : ' gradlew'
48
+ tasks : ' assembleDebug'
49
+ publishJUnitResults : false
50
+ testResultsFiles : ' **/TEST-*.xml'
51
+ javaHomeOption : ' JDKVersion'
52
+ sonarQubeRunAnalysis : false
53
+
54
+ - task : Gradle@2
55
+ displayName : ' Build Release'
56
+ inputs :
57
+ gradleWrapperFile : ' gradlew'
58
+ tasks : ' assembleRelease'
59
+ publishJUnitResults : false
60
+ testResultsFiles : ' **/TEST-*.xml'
61
+ javaHomeOption : ' JDKVersion'
62
+ sonarQubeRunAnalysis : false
63
+
64
+ - task : CopyFiles@2
65
+ displayName : ' Copy APKs'
66
+ inputs :
67
+ SourceFolder : ' app/build/outputs/apk/'
68
+ Contents : ' **/*.apk'
69
+ TargetFolder : ' $(Build.ArtifactStagingDirectory)'
70
+ flattenFolders : true
71
+
72
+ - task : PublishBuildArtifacts@1
73
+ displayName : ' Publish APKs'
74
+ inputs :
75
+ PathtoPublish : ' $(Build.ArtifactStagingDirectory)'
76
+ ArtifactName : ' jellyfin-androidtv'
77
+ publishLocation : ' Container'
78
+
79
+ - job : Publish
80
+ displayName : ' Publish'
81
+
82
+ dependsOn : Build
83
+ condition : startsWith(variables['Build.SourceBranch'], 'refs/tags')
84
+
85
+ pool :
86
+ vmImage : ' ubuntu-latest'
87
+
88
+ steps :
89
+ - script : ' echo "##vso[task.setvariable variable=TAG]$(git describe --tags)"'
90
+ displayName : ' Set Tag Variable'
91
+
92
+ - task : DownloadPipelineArtifact@2
93
+ displayName : ' Download APKs'
94
+ inputs :
95
+ source : ' current'
96
+ artifact : ' jellyfin-androidtv'
97
+ path : ' $(System.ArtifactsDirectory)'
98
+ runVersion : ' latest'
99
+
100
+ - task : DownloadSecureFile@1
101
+ displayName : ' Download KeyStore'
102
+ name : ' KeyStore'
103
+ inputs :
104
+ secureFile : ' keystore'
105
+
106
+ - script : ' $(find / -name apksigner -print -quit) sign --ks ${KEYSTORE_SECUREFILEPATH} --ks-pass pass:${PASSWORD} --out ${SYSTEM_ARTIFACTSDIRECTORY}/jellyfin-androidtv_release_${TAG}.apk ${SYSTEM_ARTIFACTSDIRECTORY}/jellyfin-androidtv_release-unsigned_${TAG}.apk'
107
+ displayName : ' Sign Release APK'
108
+ env :
109
+ PASSWORD : $(KeyStorePassword)
110
+
111
+ - task : DeleteFiles@1
112
+ displayName : ' Remove Unsigned APK'
113
+ inputs :
114
+ sourceFolder : ' $(System.ArtifactsDirectory)'
115
+ contents : ' jellyfin-androidtv_release-unsigned_$(TAG).apk'
116
+
117
+ - task : GithubRelease@0
118
+ displayName : ' GitHub Upload'
119
+ inputs :
120
+ gitHubConnection : Jellyfin Release Download
121
+ repositoryName : jellyfin/jellyfin-androidtv
122
+ assets : ' $(System.ArtifactsDirectory)/*.apk'
123
+ action : ' edit'
124
+ assetUploadMode : ' replace'
125
+ tag : ' $(TAG)'
126
+
127
+ - task : CopyFilesOverSSH@0
128
+ inputs :
129
+ sshEndpoint : repository
130
+ sourceFolder : ' $(System.ArtifactsDirectory)'
131
+ contents : ' **'
132
+ targetFolder : ' /srv/repository/releases/client/androidtv/versions/$(TAG)'
133
+
134
+ - task : SSH@0
135
+ inputs :
136
+ sshEndpoint : repository
137
+ runOptions : ' inline'
138
+ inline : ' cd /srv/repository/releases/client/androidtv && rm -rf *.apk && ln -s versions/$(TAG)/jellyfin-androidtv_*_$(TAG).apk .'
0 commit comments