-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
127 lines (105 loc) · 3.86 KB
/
azure-pipelines.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
variables:
# keep this version in sync with the one defined in version.h
VERSION: 2.1.1
BUILD_NUMBER: $[counter(variables.VERSION, 12)]
# make sure builds don't collide on the same agent
BUILD_DIR: $(Build.BinariesDirectory)/$(Build.SourceBranchName)/$(System.PhaseName)
ARTIFACT_DIR: $(Build.ArtifactStagingDirectory)
# test results directory
TEST_RSLT_DIR: $(Common.TestResultsDirectory)
name: $(VERSION)+$(BUILD_NUMBER)
stages:
- stage: BuildPackages
displayName: Build packages
jobs:
- job: windows
displayName: Windows
variables:
BIN_OUT_DIR: $(BUILD_DIR)\linecnt
BIN_INT_DIR: $(BUILD_DIR)\linecnt\obj
PKG_OUT_DIR: $(BUILD_DIR)\package-$(Build.BuildNumber)
pool:
vmImage: windows-2019
steps:
- task: NuGetCommand@2
displayName: Restore Nuget Packages
inputs:
command: 'restore'
restoreSolution: 'linecnt.sln'
feedsToUse: 'select'
vstsFeed: 'https://api.nuget.org/v3/index.json'
- task: MSBuild@1
displayName: Build
inputs:
solution: 'linecnt.vcxproj'
msbuildArchitecture: 'x64'
platform: 'x64'
configuration: 'Release'
msbuildArguments: '/property:OutDir=$(BIN_OUT_DIR)\;IntDir=$(BIN_INT_DIR)\;AZP_BUILD_NUMBER=$(BUILD_NUMBER)'
- task: MSBuild@1
displayName: Build Test
inputs:
solution: 'test\test.vcxproj'
msbuildArchitecture: 'x64'
platform: 'x64'
configuration: 'Release'
# $(OutDir) must point to the same location as linecnt's $(OutDir) to locate parent's object files
msbuildArguments: '/property:OutDir=$(BIN_OUT_DIR)\;IntDir=$(BIN_INT_DIR)\test\'
- script: |
$(BIN_OUT_DIR)\utest.exe --gtest_output=xml:$(TEST_RSLT_DIR)/$(TEST_RSLT_FILE)
displayName: Run Test
- task: PublishTestResults@2
inputs:
testResultsFormat: "JUnit"
testResultsFiles: '$(TEST_RSLT_FILE)'
searchFolder: '$(TEST_RSLT_DIR)'
# collect package files (quote all paths or forward slashes are interpreted as options otherwise)
- script: |
mkdir "$(PKG_OUT_DIR)"
move /Y "$(BIN_OUT_DIR)\linecnt.exe" "$(PKG_OUT_DIR)\"
- task: ArchiveFiles@2
displayName: Make Package
inputs:
rootFolderOrFile: '$(PKG_OUT_DIR)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(ARTIFACT_DIR)/linecnt-win-x64-$(Build.BuildNumber).zip'
replaceExistingArchive: true
- publish: '$(ARTIFACT_DIR)/linecnt-win-x64-$(Build.BuildNumber).zip'
artifact: Windows package
- job: linux
displayName: Linux
# actual display name will be `System.JobDisplayName + ' ' + System.JobName`
# System.JobName is Fedora
strategy:
matrix:
Fedora:
DIST_NAME: fedora
DIST_ABBR: fed
Ubuntu:
DIST_NAME: ubuntu
DIST_ABBR: ubu
variables:
TEST_RSLT_FILE: linecnt_$(DIST_ABBR)_utest.xml
# give each matrix configuration its own build directory
BUILD_DIST_DIR: $(BUILD_DIR)/$(DIST_NAME)
pool:
vmImage: ubuntu-latest
container: stonesteps/linecnt-$(DIST_NAME):latest
steps:
- script: |
make BLDDIR=$(BUILD_DIST_DIR) AZP_BUILD_NUMBER=$(BUILD_NUMBER)
displayName: Build
- script: |
make BLDDIR=$(BUILD_DIST_DIR) TEST_RSLT_DIR=$(TEST_RSLT_DIR) TEST_RSLT_FILE=$(TEST_RSLT_FILE) test
displayName: Test
- task: PublishTestResults@2
inputs:
testResultsFormat: "JUnit"
testResultsFiles: '$(TEST_RSLT_FILE)'
searchFolder: '$(TEST_RSLT_DIR)'
- script: |
tar -czvf $(ARTIFACT_DIR)/linecnt-$(DIST_ABBR)-x64-$(Build.BuildNumber).tar.gz -C $(BUILD_DIST_DIR) linecnt
displayName: Package
- publish: '$(ARTIFACT_DIR)/linecnt-$(DIST_ABBR)-x64-$(Build.BuildNumber).tar.gz'
artifact: $(System.JobName) package