forked from shadowsocks/shadowsocks-windows
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (129 loc) · 6.15 KB
/
release.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
name: Release
on:
push:
tags:
- 'v*'
jobs:
publish_upload:
name: Publish and upload
strategy:
matrix:
os: [ubuntu-20.04, windows-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: Restore dependencies
if: matrix.os == 'windows-latest'
run: dotnet restore
- name: Build
if: matrix.os == 'windows-latest'
run: dotnet build --no-restore
- name: Test
if: matrix.os == 'windows-latest'
run: dotnet test --no-build --verbosity normal
# Publish CLI
- name: Define MSBuild properties
run: echo "MSBUILD_PROPS=-p:PublishSingleFile=true -p:PublishTrimmed=true -p:TrimMode=link -p:DebuggerSupport=false -p:EnableUnsafeBinaryFormatterSerialization=false -p:EnableUnsafeUTF7Encoding=false -p:InvariantGlobalization=true" >> $GITHUB_ENV
- name: Publish CLI framework-dependent
run: |
dotnet publish Shadowsocks.CLI -c Release
- name: Publish CLI self-contained for Linux ARM64
if: matrix.os == 'ubuntu-20.04'
run: |
dotnet publish Shadowsocks.CLI -c Release $MSBUILD_PROPS -r linux-arm64 --self-contained
- name: Publish CLI self-contained for Linux x64
if: matrix.os == 'ubuntu-20.04'
run: |
dotnet publish Shadowsocks.CLI -c Release $MSBUILD_PROPS -r linux-x64 --self-contained
- name: Publish CLI self-contained for Windows ARM64
if: matrix.os == 'windows-latest'
run: |
dotnet publish Shadowsocks.CLI -c Release $MSBUILD_PROPS -r win-arm64 --self-contained
- name: Publish CLI self-contained for Windows x64
if: matrix.os == 'windows-latest'
run: |
dotnet publish Shadowsocks.CLI -c Release $MSBUILD_PROPS -r win-x64 --self-contained
# Publish WPF
- name: Publish WPF framework-dependent
if: matrix.os == 'windows-latest'
run: dotnet publish Shadowsocks.WPF -c Release --no-restore
# - name: Publish WPF self-contained for Windows ARM64
# if: matrix.os == 'windows-latest'
# run: dotnet publish Shadowsocks.WPF -c Release -r win-arm64 --self-contained
- name: Publish WPF self-contained for Windows x64
if: matrix.os == 'windows-latest'
run: dotnet publish Shadowsocks.WPF -c Release -r win-x64 --self-contained
# Get version
- name: Get version
id: get_version
shell: bash
run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3)
# Package
- name: Package for Linux
if: matrix.os == 'ubuntu-20.04'
env:
ZSTD_CLEVEL: 19
ZSTD_NBTHREADS: 2
run: |
# Shadowsocks.CLI
cd Shadowsocks.CLI/bin/Release/net5.0/publish
tar -acf ../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-linux.tar.zst .
cd ../linux-arm64/publish
tar -acf ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-linux-arm64.tar.zst .
cd ../../linux-x64/publish
tar -acf ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-linux-x64.tar.zst .
- name: Package for Windows
if: matrix.os == 'windows-latest'
run: |
# WPF
cd Shadowsocks.WPF/bin/Release/net5.0-windows10.0.19041.0/publish
7z a -tzip -mx=9 -mfb=128 ../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows.7z .
# cd ../win-arm64/publish
# 7z a -tzip -mx=9 -mfb=128 ../../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows-arm64.zip .
# 7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows-arm64.7z .
cd ../../win-x64/publish
7z a -tzip -mx=9 -mfb=128 ../../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows-x64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../shadowsocks-wpf-${{ steps.get_version.outputs.VERSION }}-windows-x64.7z .
# CLI
cd ../../../../../Shadowsocks.CLI/bin/Release/net5.0/publish
7z a -tzip -mx=9 -mfb=128 ../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows.7z .
cd ../win-arm64/publish
7z a -tzip -mx=9 -mfb=128 ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows-arm64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows-arm64.7z .
cd ../../win-x64/publish
7z a -tzip -mx=9 -mfb=128 ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows-x64.zip .
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on ../../shadowsocks-cli-${{ steps.get_version.outputs.VERSION }}-windows-x64.7z .
# Release
- name: Upload release assets for Linux
uses: svenstaro/upload-release-action@v2
if: matrix.os == 'ubuntu-20.04'
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: Shadowsocks.CLI/bin/Release/net5.0/*.tar.zst
tag: ${{ github.ref }}
file_glob: true
prerelease: true
- name: Upload CLI release assets for Windows
if: matrix.os == 'windows-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: Shadowsocks.CLI/bin/Release/net5.0/shadowsocks-wpf-*
tag: ${{ github.ref }}
file_glob: true
prerelease: true
- name: Upload WPF release assets for Windows
if: matrix.os == 'windows-latest'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: Shadowsocks.WPF/bin/Release/net5.0-windows10.0.19041.0/shadowsocks-wpf-*
tag: ${{ github.ref }}
file_glob: true
prerelease: true