@@ -26,6 +26,7 @@ skip_non_tags: false
2626# - '.gitignore'
2727# - 'LICENSE'
2828# - 'README.md'
29+ # - 'VersionManifest.md'
2930
3031#
3132pull_requests :
@@ -36,21 +37,73 @@ pull_requests:
3637# ---------------------------------#
3738
3839# Build worker image (VM template)
39- image : Visual Studio 2017
40+ image : Visual Studio 2019
4041
4142# scripts that are called at very beginning, before repo cloning
4243init :
43- - ps : >-
44+ - ps : |
45+ $env:Celeste_IsTagAndRelease = "false"
46+ $env:Celeste_IsDeploy = "false"
4447 if ($env:APPVEYOR_REPO_TAG -eq "true")
4548 {
46- $env:Build_Version = "$($env:APPVEYOR_REPO_TAG_NAME.Replace('v', ''))";
47- Update-AppveyorBuild -Version $env:Build_Version;
49+ $env:Celeste_IVersion = "$env:APPVEYOR_REPO_TAG_NAME"
50+ if ($env:CONFIGURATION -eq "Release")
51+ {
52+ if ($env:APPVEYOR_REPO_COMMIT_MESSAGE.Contains("[ci deploy]"))
53+ {
54+ $env:Celeste_IsDeploy = "true"
55+ $env:Celeste_IsTagAndRelease = "false"
56+ }
57+ else
58+ {
59+ $env:Celeste_IsDeploy = "false"
60+ $env:Celeste_IsTagAndRelease = "true"
61+ }
62+ }
63+ if ($env:APPVEYOR_REPO_TAG_NAME.StartsWith("v"))
64+ {
65+ $env:Celeste_Version = $env:APPVEYOR_REPO_TAG_NAME.Substring(1)
66+ }
67+ else
68+ {
69+ $env:Celeste_Version = "$env:APPVEYOR_REPO_TAG_NAME"
70+ }
71+ if ($env:APPVEYOR_REPO_TAG_NAME.Contains("-rc") -or $env:APPVEYOR_REPO_TAG_NAME.Contains("-beta") -or $env:APPVEYOR_REPO_TAG_NAME.Contains("-alpha"))
72+ {
73+ $env:Celeste_Version = $env:Celeste_Version.Replace("-rc", "")
74+ $env:Celeste_Version = $env:Celeste_Version.Replace("-beta", "")
75+ $env:Celeste_Version = $env:Celeste_Version.Replace("-alpha", "")
76+ $env:Celeste_PreRelease = "true"
77+ }
78+ else
79+ {
80+ $env:Celeste_PreRelease = "false"
81+ }
82+ if ((($env:Celeste_Version.Split('.')).Count - 1) -eq 0)
83+ {
84+ $env:Celeste_AVersion = "$env:Celeste_Version.0.0.0"
85+ }
86+ elseif ((($env:Celeste_Version.Split('.')).Count - 1) -eq 1)
87+ {
88+ $env:Celeste_AVersion = "$env:Celeste_Version.0.0"
89+ }
90+ elseif ((($env:Celeste_Version.Split('.')).Count - 1) -eq 2)
91+ {
92+ $env:Celeste_AVersion = "$env:Celeste_Version.0"
93+ }
94+ else
95+ {
96+ $env:Celeste_AVersion = "$env:Celeste_Version"
97+ }
4898 }
4999 else
50100 {
51- $env:Build_Version = "$($env:APPVEYOR_BUILD_VERSION)";
101+ $env:Celeste_Version = "$env:APPVEYOR_BUILD_VERSION"
102+ $env:Celeste_AVersion = "$env:APPVEYOR_BUILD_VERSION"
103+ $env:Celeste_IVersion = "v$env:APPVEYOR_BUILD_VERSION"
104+ $env:Celeste_PreRelease = "false"
52105 }
53- - cmd : git config --global core.autocrlf true
106+ git config --global core.autocrlf true
54107
55108# clone directory
56109clone_folder : c:\projects\ProjectCeleste.GameFiles.GameScanner
@@ -77,13 +130,10 @@ environment:
77130 secure : KQ7QIFa56u+YS86mjhAUnA==
78131 priv_key :
79132 secure: 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
80- APPVEYOR_TOKEN :
81- secure : jGj6ymLyuRVFC2DxQFlS8UmlTZbcCjjVVPFFxT4Awbs=
82133
83134# build cache to preserve files/folders between builds
84135cache :
85- - packages -> **\ProjectCeleste.GameFiles.GameScanner.csproj # preserve packages directory in the root of build folder but will reset it if ProjectCeleste.GameFiles.GameScanner.csproj is modified
86- - ' %LocalAppData%\NuGet\Cache'
136+ - ' %USERPROFILE%\.nuget\packages -> **\ProjectCeleste.GameFiles.GameScanner.csproj' # preserve packages directory but will reset it if ProjectCeleste.GameFiles.GameScanner.csproj is modified
87137
88138# scripts that run after cloning repository
89139install :
@@ -93,45 +143,34 @@ install:
93143- ps : |
94144 if ($env:APPVEYOR_REPO_TAG -eq "true")
95145 {
96- # Set Version number
97- $env:Build_Version = "$($env:APPVEYOR_REPO_TAG_NAME.Replace('v', ''))"
98146 # Update VersionManifest
99147 $VersionManifestPath = Join-Path -Path $ENV:APPVEYOR_BUILD_FOLDER -ChildPath 'VersionManifest.md'
100- Set-Content -NoNewline -Path $VersionManifestPath -Value $env:Build_Version
148+ Set-Content -NoNewline -Path $VersionManifestPath -Value $env:Celeste_AVersion
101149 # Update AppVeyor build
102- Update-AppveyorBuild -Version $env:Build_Version
103- # Update AppVeyor BuildNumber
104- # $headers = @{
105- # "Authorization" = "Bearer $env:APPVEYOR_TOKEN"
106- # "Content-type" = "application/json"
107- # "Accept" = "application/json"
108- # }
109- # $build = @{
110- # nextBuildNumber = 1
111- # }
112- # $json = $build | ConvertTo-Json
113- # Invoke-RestMethod -Method Put "https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/settings/build-number" -Body $json -Headers $headers
150+ Update-AppveyorBuild -Version "$env:Celeste_AVersion-$env:APPVEYOR_BUILD_NUMBER"
114151 }
115152 else
116153 {
117154 # Update AppVeyor Build Version
118155 $VersionManifestPath = Join-Path -Path $ENV:APPVEYOR_BUILD_FOLDER -ChildPath 'VersionManifest.md'
119156 $ManifestContent = Get-Content -Path $VersionManifestPath -Raw
120157 # Set Version number
121- $env:Build_Version = "$ManifestContent.$env:APPVEYOR_BUILD_NUMBER"
158+ $env:Celeste_Version = "$ManifestContent"
159+ $env:Celeste_AVersion = "$ManifestContent"
160+ $env:Celeste_IVersion = "v$ManifestContent-$env:APPVEYOR_BUILD_NUMBER"
122161 # update AppVeyor build
123- Update-AppveyorBuild -Version $ env:Build_Version
162+ Update-AppveyorBuild -Version "$ManifestContent-$ env:APPVEYOR_BUILD_NUMBER"
124163 }
125164
126165# enable patching of AssemblyInfo.* files
127166dotnet_csproj :
128167 patch : true
129168 file : ' **\*.csproj'
130- version : ' $(Build_Version )'
131- package_version : ' $(Build_Version )'
132- assembly_version : ' $(Build_Version )'
133- file_version : ' $(Build_Version )'
134- informational_version : ' $(Build_Version )'
169+ version : ' $(Celeste_AVersion )'
170+ package_version : ' $(Celeste_AVersion )'
171+ assembly_version : ' $(Celeste_AVersion )'
172+ file_version : ' $(Celeste_AVersion )'
173+ informational_version : ' $(Celeste_IVersion )'
135174
136175# ---------------------------------#
137176# build configuration #
@@ -167,7 +206,6 @@ before_package:
167206
168207# scripts to run after build
169208after_build :
170-
171209
172210# to run your custom scripts instead of automatic MSBuild
173211build_script :
@@ -184,10 +222,10 @@ test: off
184222# ---------------------------------#
185223
186224artifacts :
187- - path : ' src\bin\Release '
225+ - path : ' src\bin\$(CONFIGURATION) '
188226 name : ProjectCeleste.GameFiles.GameScanner
189227 type : zip
190- - path : ' src\bin\Release\ProjectCeleste.GameFiles.GameScanner.%Build_Version% .*nupkg'
228+ - path : ' src\bin\Release\ProjectCeleste.GameFiles.GameScanner.* .*nupkg'
191229 name : NuGet
192230
193231# ---------------------------------#
@@ -202,14 +240,14 @@ deploy:
202240 - provider : GitHub
203241 tag : $(APPVEYOR_REPO_TAG_NAME)
204242 description : ' [View CHANGELOG.md](https://github.com/ProjectCeleste/ProjectCeleste.GameFiles.GameScanner/blob/master/CHANGELOG.md)'
205- release : ProjectCeleste.GameFiles.GameScanner v$(Build_Version )
243+ release : ProjectCeleste.GameFiles.GameScanner $(Celeste_IVersion )
206244 auth_token : $(access_token)
207245 artifact : ProjectCeleste.GameFiles.GameScanner
208246 draft : false
209- prerelease : false
247+ prerelease : $(Celeste_PreRelease)
210248 force_update : true
211249 on :
212- appveyor_repo_tag : true
250+ Celeste_IsDeploy : true
213251
214252 # Deploy NuGet
215253 - provider : NuGet
@@ -220,45 +258,45 @@ deploy:
220258 symbol_server : # remove to push symbols to SymbolSource.org
221259 artifact : NuGet
222260 on :
223- appveyor_repo_tag : true
261+ Celeste_IsDeploy : true
224262
225263# scripts to run before deployment
226264before_deploy :
227- - ps : >-
228- $fileContent = "-----BEGIN RSA PRIVATE KEY-----`n";
229- $fileContent += $env:priv_key.Replace(' ', "`n");
230- $fileContent += "`n-----END RSA PRIVATE KEY-----`n";
231- Set-Content "$env:USERPROFILE\.ssh\id_rsa" "$($fileContent)";
232- Set-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n";
233-
234- - git config --global credential.helper store
235- - git config --global user.email "%github_email%"
236- - git config --global user.name "%github_user%"
237- - git checkout -b Appveyor "%APPVEYOR_REPO_COMMIT%"
238- - git add "src\ProjectCeleste.GameFiles.GameScanner.csproj"
239- - git add "VersionManifest.md"
240- - git commit -m "%APPVEYOR_REPO_TAG_NAME%"
241- - git checkout "%APPVEYOR_REPO_BRANCH%"
242- - git merge Appveyor
243- - git branch -d Appveyor
244- - git pull "origin" "%APPVEYOR_REPO_BRANCH%"
245- - git push "origin" "%APPVEYOR_REPO_BRANCH%"
246265
247266# scripts to run after deployment
248267after_deploy :
249268
250- # to run your custom scripts instead of provider deployments
251- deploy_script :
252-
253- # to disable deployment
254- # deploy: off
255-
256269# ---------------------------------#
257270# global handlers #
258271# ---------------------------------#
259272
260273# on successful build
261274on_success :
275+ - ps : |
276+ if ($env:Celeste_IsTagAndRelease -eq "true")
277+ {
278+ $env:GIT_REDIRECT_STDERR = '2>&1'
279+ $fileContent = "-----BEGIN RSA PRIVATE KEY-----`n"
280+ $fileContent += $env:priv_key.Replace(' ', "`n")
281+ $fileContent += "`n-----END RSA PRIVATE KEY-----`n"
282+ Set-Content "$env:USERPROFILE\.ssh\id_rsa" "$fileContent"
283+ Set-Content "$env:USERPROFILE\.git-credentials" "https://$($env:access_token):x-oauth-basic@github.com`n"
284+ git config --global credential.helper store
285+ git config --global user.email "$env:github_email"
286+ git config --global user.name "$env:github_user"
287+ git checkout -b Appveyor "$env:APPVEYOR_REPO_COMMIT"
288+ git add .
289+ git commit -m "$env:APPVEYOR_REPO_TAG_NAME [ci deploy]"
290+ git checkout "$env:APPVEYOR_REPO_BRANCH"
291+ git merge --squash Appveyor
292+ git add .
293+ git commit -m "$env:APPVEYOR_REPO_TAG_NAME [ci deploy]"
294+ git branch -d Appveyor
295+ git pull "origin" "$env:APPVEYOR_REPO_BRANCH"
296+ git push "origin" "$env:APPVEYOR_REPO_BRANCH"
297+ git tag -f "$env:APPVEYOR_REPO_TAG_NAME"
298+ git push --tags --force
299+ }
262300
263301# on build failure
264302on_failure :
0 commit comments