-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathappveyor-deploy.yml
More file actions
98 lines (86 loc) · 4.2 KB
/
Copy pathappveyor-deploy.yml
File metadata and controls
98 lines (86 loc) · 4.2 KB
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
# This AppVeyor project is run nightly, at 8 PM Vancouver time, to update the SNAPSHOT repository if there are any changes.
#
# This follows the 3-project AppVeyor/Maven pattern established in https://github.com/dblock/log4jna/blob/master/AppVeyorMavenRelease.md
# https://www.appveyor.com/docs/build-environment/#java
image: Visual Studio 2019
# Use the MSYS version of gpg, instead of the version bundled with git
init:
- set PATH=C:\msys64\usr\bin;%PATH%
# Only deploy nightly develop builds to the SNAPSHOT repository
branches:
only:
- develop
environment:
JAVA_HOME: C:\Program Files\Java\jdk17
M2: $(USERPROFILE)\.m2
SETTINGS_ENC: $(APPVEYOR_BUILD_FOLDER)\build\Maven\settings.xml.enc
SETTINGS_SEC_ENC: $(APPVEYOR_BUILD_FOLDER)\build\Maven\settings-security.xml.enc
M2_SETTINGS: $(USERPROFILE)\.m2\settings.xml
M2_SETTINGS_SEC: $(USERPROFILE)\.m2\settings-security.xml
M2_SETTINGS_ENC: $(USERPROFILE)\.m2\settings.xml.enc
M2_SETTINGS_SEC_ENC: $(USERPROFILE)\.m2\settings-security.xml.enc
GNUPG_HOME: $(USERPROFILE)\.gnupg
PUB_KEY_FILE_ENC: $(APPVEYOR_BUILD_FOLDER)\build\Maven\OpenSourceAquatics.public.gpg.asc.enc
SEC_KEY_FILE_ENC: $(APPVEYOR_BUILD_FOLDER)\build\Maven\OpenSourceAquatics.secret.gpg.asc.enc
PUB_KEY_FILE_ENC_DEST: $(USERPROFILE)\OpenSourceAquatics.public.gpg.asc.enc
SEC_KEY_FILE_ENC_DEST: $(USERPROFILE)\OpenSourceAquatics.secret.gpg.asc.enc
PUB_KEY_FILE_GPG: $(USERPROFILE)\OpenSourceAquatics.public.gpg.asc
SEC_KEY_FILE_GPG: $(USERPROFILE)\OpenSourceAquatics.secret.gpg.asc
SECURE_FILE_DIR: C:\secure-file
SECURE_FILE_CMD: C:\secure-file\tools\secure-file.exe
SECURE_FILE_DEC: '-decrypt'
SECURE_FILE_SEC: '-secret'
secret:
secure: WYu06hjvbgjSQERvZN+jZNj8RBPsxpaaAmvWUHtNzSA=
install:
# Log versions for debugging
- java -version
- mvn --version
- gpg --version
# Install secure-file if not present
- ps: |
if (!(Test-Path -Path $env:SECURE_FILE_DIR )) {
nuget install secure-file -ExcludeVersion -o C:\
}
# Create or update the Maven settings
- ps: |
$CMD = "C:\secure-file\tools\secure-file.exe"
$decrip = '-decrypt'
$secret = '-secret'
if(!(Test-Path -Path $env:M2)) {
New-Item $env:M2 -type directory -Verbose
# Install maven settings
Copy-Item $env:SETTINGS_ENC $env:M2_SETTINGS_ENC -Verbose
Copy-Item $env:SETTINGS_SEC_ENC $env:M2_SETTINGS_SEC_ENC -Verbose
& $env:SECURE_FILE_CMD $env:SECURE_FILE_DEC $env:M2_SETTINGS_ENC $env:SECURE_FILE_SEC $env:secret
& $env:SECURE_FILE_CMD $env:SECURE_FILE_DEC $env:M2_SETTINGS_SEC_ENC $env:SECURE_FILE_SEC $env:secret
} else {
# The directory exists test Meven settings
if (!(Test-Path $env:M2_SETTINGS_ENC) -or ((Get-FileHash $env:M2_SETTINGS_ENC).hash -ne (Get-FileHash $env:SETTINGS_ENC).hash)) {
Copy-Item $env:SETTINGS_ENC $env:M2_SETTINGS_ENC -Verbose
& $env:SECURE_FILE_CMD $env:SECURE_FILE_DEC $env:M2_SETTINGS_ENC $env:SECURE_FILE_SEC $env:secret
} else {
Write-Host "$env:M2_SETTINGS_ENC up to date"
}
if (!(Test-Path $env:M2_SETTINGS_SEC_ENC) -or ((Get-FileHash $env:M2_SETTINGS_SEC_ENC).hash -ne (Get-FileHash $env:SETTINGS_SEC_ENC).hash)) {
Copy-Item $env:SETTINGS_SEC_ENC $env:M2_SETTINGS_SEC_ENC -Verbose
& $env:SECURE_FILE_CMD $env:SECURE_FILE_DEC $env:M2_SETTINGS_SEC_ENC $env:SECURE_FILE_SEC $env:secret
} else {
Write-Host "$env:M2_SETTINGS_SEC up to date"
}
}
# Decrypt and install gpg keys
- C:\secure-file\tools\secure-file -decrypt %PUB_KEY_FILE_ENC% -secret %secret% -out %PUB_KEY_FILE_GPG%
- C:\secure-file\tools\secure-file -decrypt %SEC_KEY_FILE_ENC% -secret %secret% -out %SEC_KEY_FILE_GPG%
- gpg --import %PUB_KEY_FILE_GPG%
- gpg --import %SEC_KEY_FILE_GPG%
build_script:
- mvn -B clean site site:stage deploy -P deploy -Drevision=%APPVEYOR_BUILD_VERSION%-SNAPSHOT
# Maven runs the tests as part of the build, so we don't need to run them again
test: off
cache:
# Cache all installed software and gpg and maven directories
- '%SECURE_FILE_DIR%'
- '%MAVEN_HOME%'
# Rebuild .m2 if the maven setting changed (It prbably is more efficient to test the files hashes)
- '%M2%'