forked from TASEmulators/BizHawk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
162 lines (147 loc) · 4.22 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include:
#- template: Security/SAST.gitlab-ci.yml
variables:
CI_HAWK_ARTIFACT_NAME: "BizHawk_devbuild_${CI_COMMIT_SHORT_SHA}"
CI_HAWK_ARTIFACT_NAME_TAR: "$CI_HAWK_ARTIFACT_NAME.tar"
CI_HAWK_TMPARTIFACT_NAME: "BizHawk_tempbuild_${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}"
stages:
- build
- test
- package
build:
artifacts:
expire_in: "30 minutes"
name: "$CI_HAWK_TMPARTIFACT_NAME"
paths:
- output
image: mcr.microsoft.com/dotnet/sdk:5.0
script:
- if [ "$CI_COMMIT_REF_SLUG" == "release" ]; then Dist/UpdateVersionInfoForRelease.sh; fi
- Dist/BuildRelease.sh
stage: build
build_ext_tools:
allow_failure: true
image: mcr.microsoft.com/dotnet/sdk:5.0
needs:
- build
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
script:
- for d in $CI_PROJECT_DIR/ExternalToolProjects/*; do if [ -d "$d" ]; then cd "$d" && ./build_release.sh; fi; done
stage: test
check_style:
image: mcr.microsoft.com/dotnet/sdk:5.0
needs:
- job: build
artifacts: false
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
allow_failure: true
- if: $BIZHAWKBUILD_USE_ANALYZERS != null
when: always
allow_failure: false
script:
- cd src/BizHawk.Version
- dotnet build -c Release # configuration doesn't really matter as the assembly is empty
- ../../Dist/BuildRelease.sh -p:MachineRunAnalyzersDuringBuild=true
stage: test
#infersharp:
# artifacts:
# paths:
# - infer-out/*
# image: mcr.microsoft.com/infersharp:v1.0
# needs:
# - job: build
# rules:
# - if: '$CI_PIPELINE_SOURCE == "schedule"'
# when: always
# script:
# - mkdir "infer-in"
# - find output -name "BizHawk.*.dll" -exec cp "{}" "infer-in" \;
# - cp "output/EmuHawk.exe" "infer-in"
# - /app/run_infersharp.sh "infer-in"
# stage: test
.package_linux_x64:
artifacts:
expire_in: "1 month"
name: "$CI_HAWK_ARTIFACT_NAME"
paths:
- "$CI_HAWK_ARTIFACT_NAME_TAR"
image: debian:buster-slim
needs:
- build
script:
- su -c "apt-get update && apt-get -y install p7zip-full"
- Dist/Package.sh "linux-x64"
- cd packaged_output
- tar -cf "../$CI_HAWK_ARTIFACT_NAME_TAR" *
stage: package
.package_windows_x64:
artifacts:
expire_in: "1 month"
name: "$CI_HAWK_ARTIFACT_NAME"
paths:
- ./*
image: debian:buster-slim
needs:
- build
script:
- su -c "apt-get update && apt-get -y install p7zip-full"
- Dist/Package.sh "windows-x64"
# now we replace $CI_PROJECT_DIR with $CI_PROJECT_DIR/packaged_output, so that the archival step will put everything at the top level
- mv packaged_output ..
- cd ..
- rm -fr $CI_PROJECT_DIR
- mv packaged_output $CI_PROJECT_DIR
stage: package
package_devbuild_linux:
extends: .package_linux_x64
rules:
- if: $CI_COMMIT_REF_SLUG == "master"
when: always
package_devbuild_windows:
extends: .package_windows_x64
rules:
- if: $CI_COMMIT_REF_SLUG == "master"
when: always
package_release_linux:
extends: .package_linux_x64
rules:
- if: $CI_COMMIT_REF_SLUG == "release"
when: always
variables:
CI_HAWK_ARTIFACT_NAME: "BizHawk-VERSIONHERE-linux-x64.tar" # .zip is added automatically
CI_HAWK_ARTIFACT_NAME_TAR: "BizHawk-linux-x64-$CI_COMMIT_SHORT_SHA.tar"
package_release_windows:
extends: .package_windows_x64
rules:
- if: $CI_COMMIT_REF_SLUG == "release"
when: always
variables:
CI_HAWK_ARTIFACT_NAME: "BizHawk-VERSIONHERE-win-x64"
run_tests:
artifacts:
paths:
- test_output/*.coverage.xml
reports:
junit:
- test_output/*.coverage.xml
image: mcr.microsoft.com/dotnet/sdk:5.0
needs:
- job: build
artifacts: false
script:
- cd src/BizHawk.Version
- dotnet build -c Release # configuration doesn't really matter as the assembly is empty
- ../../Dist/BuildTestRelease.sh
stage: test
#sast:
# variables:
# SAST_EXCLUDED_ANALYZERS: bandit, brakeman, eslint, flawfinder, gosec, kubesec, nodejs-scan, phpcs-security-audit, pmd-apex, sobelow, spotbugs
# stage: test
#cache:
# key: "$CI_COMMIT_REF_SLUG"
# paths:
# - $HOME/.nuget/packages # probably won't work; set NUGET_PACKAGES to `BizHawk_master/.nuget_packages` and cache that