-
-
Notifications
You must be signed in to change notification settings - Fork 331
91 lines (77 loc) · 3.45 KB
/
Copy pathbuild.yaml
File metadata and controls
91 lines (77 loc) · 3.45 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
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: build
on:
workflow_dispatch:
push:
branches:
- master
pull_request:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ macos-latest, ubuntu-latest, windows-latest ]
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_CLI_TELEMETRY_OPTOUT: 1
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7
- name: Set up dotnet
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # 6.0.0
with:
dotnet-version: 10
dotnet-quality: ga
- name: Build
run: |
dotnet build ./src/log4net.sln
- name: Test
run: |
dotnet test ./src/log4net.sln
# Runs the same probes twice, JIT compiled and published with Native AOT, so that a
# difference between the two is caused by AOT rather than by the platform. The project
# knows which probes are expected to fail in each mode and exits non-zero when reality
# does not match, in either direction.
- name: AOT probes
shell: pwsh
env:
"log4net.AotEnvironmentProbe": from-environment
run: |
dotnet run --project ./src/log4net.Tests.Aot/log4net.Tests.Aot.csproj -c Release
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
dotnet publish ./src/log4net.Tests.Aot/log4net.Tests.Aot.csproj -c Release -o ./aot-probes
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& "./aot-probes/log4net.Tests.Aot$($IsWindows ? '.exe' : '')"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
# A process that hosts the runtime natively has no entry assembly, so the configuration
# system cannot work out where the config file is (issue #162). The check owns the process
# from its first statement, because the configuration system caches its initialization and
# log4net reads its first setting from a static constructor, so it cannot be one of the
# probes above.
#
# JIT only, deliberately: under Native AOT the configuration system is trimmed away, so the
# first setting read fails as a missing constructor long before it can fail for want of an
# entry assembly. The published executable passes this check with the fix reverted, which
# makes it a green that cannot fail for the reason the check exists.
- name: AOT probes, no entry assembly
shell: pwsh
run: |
dotnet run --project ./src/log4net.Tests.Aot/log4net.Tests.Aot.csproj -c Release -- --no-entry-assembly
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }