forked from MirrorNetworking/Mirror
-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (134 loc) · 5.28 KB
/
main.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
name: CI
#on:
# pull_request: {}
# push: { branches: [master] }
on:
push:
paths-ignore:
- 'doc/**'
- '*.md'
jobs:
requestActivationFile:
runs-on: ubuntu-latest
if: false
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Request manual activation file
uses: MirrorNG/[email protected]
id: getManualLicenseFile
with:
entrypoint: /request_activation.sh
- name: Expose as artifact
uses: actions/upload-artifact@v1
with:
name: Manual Activation File
path: ${{ steps.getManualLicenseFile.outputs.filePath }}
CI:
name: Test
runs-on: ubuntu-latest
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
if: true
steps:
# Checkout repository (required to test local actions)
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Add Coverage Plugin
uses: canastro/[email protected]
with:
source: Packages/manifest-coverage.json
target: Packages/manifest.json
- name: Activate license
uses: MirrorNG/[email protected]
with:
entrypoint: /activate.sh
- name: Generate Solution
uses: MirrorNG/[email protected]
with:
# Arguments to pass to unity
args: -buildTarget StandaloneWindows64 -customBuildName MirrorNG -customBuildPath ./build/StandaloneWindows64 -projectPath . -executeMethod UnityEditor.SyncVS.SyncSolution -quit
# Configure test runner
- name: Run editor Tests
uses: MirrorNG/[email protected]
with:
args: -runTests -testPlatform editmode -testResults Tests/editmode-results.xml -enableCodeCoverage -coverageResultsPath Tests
- name: Run play Tests
uses: MirrorNG/[email protected]
with:
args: -runTests -testPlatform playmode -testResults Tests/playmode-results.xml -enableCodeCoverage -coverageResultsPath Tests
# Upload artifacts
- name: Archive test results
uses: actions/upload-artifact@v1
if: always()
with:
name: Test results (editor mode)
path: Tests
- name: Publish test results
uses: MirrorNG/[email protected]
if: always()
with:
path: "Tests/*.xml"
access-token: ${{ secrets.GITHUB_TOKEN }}
- name: SonarQube analysis
if: always()
uses: MirrorNG/[email protected]
with:
entrypoint: /sonar-scanner.sh
projectKey: vis2k_Mirror
projectName: Mirror
sonarOrganisation: vis2k
beginArguments: >-
/d:sonar.verbose="true"
/d:sonar.cs.nunit.reportsPaths=Tests/editmode-results.xml,Tests/playimode-results.xml
/d:sonar.cs.opencover.reportsPaths=Tests/workspace-opencov/EditMode/TestCoverageResults_0000.xml,Tests/workspace-opencov/PlayMode/TestCoverageResults_0000.xml
/d:sonar.coverage.exclusions=Assets/Mirror/Runtime/Transport/Telepathy/**/*.cs,Assets/Mirror/Runtime/Transport/SimpleWebTransport/**,Assets/Mirror/Runtime/Transport/KCP/kcp2k/**,Assets/Mirror/Cloud/**/*.cs,Assets/Mirror/Examples/**/*.cs,Assets/Mirror/Tests/**/*.cs
/d:sonar.exclusions=Assets/Mirror/Runtime/Transport/SimpleWebTransport/**
# files ignored in code coverage:
# Assets/Mirror/Runtime/Transport/Telepathy/** - has its own test in the Telepathy repo
# Assets/Mirror/Runtime/Transport/SimpleWebTransport/** - fully exclude this because it has sonar running on its repo
# Assets/Mirror/Runtime/Transport/KCP/kcp2k/** - has its own test in the kcp2k repo
# Assets/Mirror/Cloud/** - has its own tests in private cloud repo
# Assets/Mirror/Examples/** - examples dont need test coverage
# Assets/Mirror/Tests/** - tests dont need test coverage
env:
FrameworkPathOverride: /opt/Unity/Editor/Data/MonoBleedingEdge/
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Release:
runs-on: windows-latest
needs: CI
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Delete Tests
run: |
Remove-Item -Recurse -Force Assets\Mirror\Tests
Remove-Item -Recurse -Force Assets\Mirror\Tests.meta
- name: Setup dotnet
uses: actions/setup-dotnet@v1
with:
dotnet-version: '3.1.100'
- name: Install unity-packer
run: dotnet tool install -g unity-packer
- name: Package
run: |
unity-packer pack Mirror.unitypackage Assets/Mirror Assets/Mirror Assets/ScriptTemplates Assets/ScriptTemplates LICENSE Assets/Mirror/LICENSE
- uses: actions/upload-artifact@v1
with:
name: Mirror.unitypackage
path: Mirror.unitypackage
- name: Release
uses: cycjimmy/semantic-release-action@v2
with:
extra_plugins: |
@semantic-release/exec
@semantic-release/changelog
@semantic-release/git
branch: master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}