-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathrelease-all.yml
152 lines (123 loc) · 4.73 KB
/
release-all.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
pr: none
trigger:
branches:
include:
- master
paths:
exclude:
- version.txt
- README.md
variables:
# APP_VERSION: '5.4.$(Build.BuildNumber)'
VERSION: 6.5
BUILD_COUNTER: $[counter(variables['VERSION'], 0)]
APP_VERSION: '$(VERSION).$(BUILD_COUNTER)'
jobs:
- job: Build_All
strategy:
matrix:
linux:
imageName: 'ubuntu-latest'
windows:
imageName: 'windows-latest'
pool:
vmImage: $(imageName)
steps:
- checkout: self
clean: 'true'
fetchDepth: '1'
lfs: 'true'
persistCredentials: true
- task: replacetokens@3
inputs:
targetFiles: 'pom.xml,src/main/java/uk/yermak/audiobookconverter/Version.java,version.txt'
tokenPrefix: '#{'
tokenSuffix: '}#'
- bash: |
wget -q https://download.java.net/openjdk/jdk21/ri/openjdk-21+35_linux-x64_bin.tar.gz
tar -xzf openjdk-21+35_linux-x64_bin.tar.gz
export JAVA_HOME=jdk-21
export JAVAFX_JMODS=javafx/jmods/linux
mvn clean package --no-transfer-progress
build/linux/package.sh $JAVA_HOME $JAVAFX_JMODS $(APP_VERSION)
condition: eq( variables['Agent.OS'], 'Linux' )
displayName: 'Build deb package'
- script: |
ECHO ON
choco install 7zip --no-progress
choco install wget --no-progress
wget -q https://download.java.net/openjdk/jdk21/ri/openjdk-21+35_windows-x64_bin.zip
7z.exe x openjdk-21+35_windows-x64_bin.zip
setx JAVA_HOME jdk-21
call refreshenv
SET JAVAFX_JMODS=javafx/jmods/windows
call mvn clean package --no-transfer-progress
call build/windows/package.bat "%JAVA_HOME%" %JAVAFX_JMODS% $(APP_VERSION)
condition: eq( variables['Agent.OS'], 'Windows_NT' )
displayName: 'Build MSI installers'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: 'target/release'
ArtifactName: 'AudioBookConverter-$(APP_VERSION)'
publishLocation: 'Container'
- job: Release_GitHub
dependsOn:
- 'Build_All'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: 'AudioBookConverter-$(APP_VERSION)'
- task: GitHubRelease@0
inputs:
gitHubConnection: 'github.com_yermak'
repositoryName: '$(Build.Repository.Name)'
action: 'create' # Options: create, edit, delete
target: '$(Build.SourceVersion)' # Required when action == Create || Action == Edit
tagSource: 'manual' # Required when action == Create# Options: auto, manual
title: 'Release $(APP_VERSION)'
tag: 'version_$(APP_VERSION)'
#releaseNotesSource: 'file' # Optional. Options: file, input
#releaseNotesFile: # Optional
#releaseNotes: # Optional
assets: '$(Pipeline.Workspace)/*' # Optional
- job: Release_Chocolatey
displayName: 'Release to Chocolatey'
dependsOn:
- 'Build_All'
pool:
vmImage: 'windows-latest'
steps:
- checkout: self
clean: 'true'
fetchDepth: '1'
lfs: true
persistCredentials: true
- task: replacetokens@3
inputs:
targetFiles: 'build/windows/chocolaty/audiobookconverter.nuspec,build/windows/chocolaty/tools/chocolateyinstall.ps1'
tokenPrefix: '#{'
tokenSuffix: '}#'
- task: DownloadPipelineArtifact@2
inputs:
artifact: 'AudioBookConverter-$(APP_VERSION)'
targetPath: '$(Pipeline.Workspace)'
- powershell: |
dir '$(Pipeline.Workspace)'
dir '$(System.ArtifactsDirectory)'
$checksum = Get-FileHash -Path $(Pipeline.Workspace)/AudioBookConverter-NoDeps-$(APP_VERSION).msi -Algorithm SHA256 | Select-Object -ExpandProperty Hash
Write-Host "##vso[task.setvariable variable=binary_checksum]$checksum"
displayName: 'Generate Checksum'
- powershell: |
(Get-Content build\windows\chocolaty\tools\chocolateyinstall.ps1) -replace '##yourbinarychecksum##', '$(binary_checksum)' | Set-Content build\windows\chocolaty\tools\chocolateyInstall.ps1
displayName: 'Update chocolateyInstall.ps1 with Checksum'
- script: |
cd build\windows\chocolaty
choco pack audiobookconverter.nuspec
displayName: 'Create Chocolatey Package'
- script: |
choco push build\windows\chocolaty\audiobookconverter.$(APP_VERSION).nupkg --source https://push.chocolatey.org/ --api-key $(CHOCOLATEY_API_KEY)
displayName: 'Push Package to Chocolatey'
env:
CHOCOLATEY_API_KEY: $(CHOCOLATEY_API_KEY)