-
Notifications
You must be signed in to change notification settings - Fork 19
/
.gitlab-ci.yml
141 lines (134 loc) · 4.02 KB
/
.gitlab-ci.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
# This is the configuration file for git-lab's CI service.
# We have five stages:
stages:
# Make sure everything compiles OK
- build
# a test stage, which will execute all of the various unit and integration tests that are performed from within the project itself
- test
# a stage where all test results will be integrated into TargetProcess, Confluence, and/or other central sites
- uploadresults
# Option to upload an updated nuget package
- deployment
# Build all three projects, minus the Net Framework project as it is windows/mono dependent.
build:
stage: build
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
script:
- cd dotnet/PopcornNetStandard
- dotnet restore
- dotnet build
- cd ../PopcornNetStandard.WebApiCore
- dotnet restore
- dotnet build
tags:
- x86
# Running the example test integration tests
.popcornstandard_integrationtest:
stage: test
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
script:
- cd dotnet/Tests/PopcornNetCoreExampleIntegrationTest
- dotnet restore
- dotnet test
tags:
- x86
# Running the standard library tests
.popcornstandard_unittest:
stage: test
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
script:
- cd dotnet/Tests/PopcornNetStandardTest
- dotnet restore
- dotnet test
tags:
- x86
# Create internal nuget package
package:
stage: build
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
only:
- master
- /^spike/
tags:
- x86
artifacts:
when: always
paths:
- publish
script:
# This assumes that Debug is the correct build to publish
- cd dotnet
- dotnet build --ignore-failed-sources -c ${PublishConfiguration:-Release} PopcornNetStandard/PopcornNetStandard.csproj
- dotnet build --ignore-failed-sources -c ${PublishConfiguration:-Release} PopcornNetStandard.WebApiCore/PopcornNetStandard.WebApiCore.csproj
- dotnet pack -c ${PublishConfiguration:-Release} --include-source --include-symbols -p:SymbolPackageFormat=snupkg --output ../publish PopcornNetStandard/PopcornNetStandard.csproj
- dotnet pack -c ${PublishConfiguration:-Release} --include-source --include-symbols -p:SymbolPackageFormat=snupkg --output ../publish PopcornNetStandard.WebApiCore/PopcornNetStandard.WebApiCore.csproj
#Publish internal nuget package
nugetInternal:
stage: deployment
environment:
name: internal_popcorn_nuget
url: https://nuget.skywardapps.us/packages/Skyward.Api.Popcorn
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
when: manual
allow_failure: true
only:
- master
- /^spike/
tags:
- x86
script:
- cd publish
- for fileName in *.nupkg; do dotnet nuget push -s https://nuget.skywardapps.us/v3/index.json ${fileName}; done
- for fileName in *.snupkg; do dotnet nuget push -s https://nuget.skywardapps.us/v3/index.json ${fileName}; done
nugetExternal:
stage: deployment
environment:
name: public_popcorn_nuget
url: https://www.nuget.org/packages/Skyward.Api.Popcorn
image: mcr.microsoft.com/dotnet/sdk:6.0
cache:
key: linux-build
paths:
- /root/.local/share/NuGet/Cache
- /root/.nuget/packages
- .nuget
when: manual
allow_failure: true
only:
- master
tags:
- x86
script:
- cd publish
- for fileName in *.nupkg; do dotnet nuget push -k $NugetApiKey -s https://api.nuget.org/v3/index.json ${fileName} || :; done
- for fileName in *.snupkg; do dotnet nuget push -k $NugetApiKey -s https://api.nuget.org/v3/index.json ${fileName} || :; done