-
Notifications
You must be signed in to change notification settings - Fork 5
142 lines (129 loc) · 4.37 KB
/
release-csharp-bindings.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
name: C# Bindings
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
workflow_dispatch:
inputs:
ref:
description: 'The reference (branch/tag/commit) to checkout'
required: false
release-type:
type: choice
required: false
default: 'none'
description: 'Indicates whether we want to make a release and if which one'
options:
- release
- none
env:
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'workflow_dispatch' && 'manual' || github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build - ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-apple-darwin
os: ubuntu-latest
- target: x86_64-apple-darwin
os: ubuntu-latest
- target: x86_64-pc-windows-gnu
os: windows-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
target: ${{ matrix.target }}
- name: Install cargo-binstall
uses: taiki-e/install-action@cargo-binstall
- name: Install Zig
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.10.1
- name: Install cargo-zigbuild
run: cargo binstall --no-confirm cargo-zigbuild
- name: Run compile script
run: |
chmod +x .github/scripts/compile_all_targets_c_sharp_new.sh
.github/scripts/compile_all_targets_c_sharp_new.sh ${{ matrix.target }}
shell: bash
- name: Upload dynamic libs
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: bindings/csharp/csharp_code/EthKZG.bindings/runtimes/${{ matrix.target }}
test:
name: Test - ${{ matrix.target }}
needs: build
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-unknown-linux-gnu
os: linux-arm64
- target: x86_64-apple-darwin
os: macos-13
- target: aarch64-apple-darwin
os: macos-14
- target: x86_64-pc-windows-gnu
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: ${{ matrix.target }}
path: bindings/csharp/csharp_code/EthKZG.bindings/runtimes/${{ matrix.target }}
- name: Set up .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Restore .NET dependencies
run: dotnet restore
working-directory: bindings/csharp/csharp_code
- name: Build .NET project
run: dotnet build --no-restore
working-directory: bindings/csharp/csharp_code
- name: Run .NET tests
run: dotnet test --no-build --verbosity normal
working-directory: bindings/csharp/csharp_code
publish:
name: Publish
if: ${{ inputs.release-type != 'none' && github.event_name == 'workflow_dispatch' }}
needs: [build, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: bindings/csharp/csharp_code/EthKZG.bindings/runtimes
- name: Restore NuGet packages
working-directory: bindings/csharp/csharp_code/EthKZG.bindings
run: dotnet restore
- name: Package with dotnet pack
working-directory: bindings/csharp/csharp_code/EthKZG.bindings
run: dotnet pack -c release --no-restore -o nupkgs -p:ContinuousIntegrationBuild=true
- name: Publish to Nuget
working-directory: bindings/csharp/csharp_code/EthKZG.bindings
run: dotnet nuget push nupkgs/*.nupkg --api-key ${{ secrets.NUGET_RELEASE_TOKEN }} --source https://api.nuget.org/v3/index.json