-
Notifications
You must be signed in to change notification settings - Fork 6
204 lines (179 loc) · 7.96 KB
/
build_openvpnadapter_apple.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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
name: Build OpenVPNAdapter for Apple
on: [push]
jobs:
build-macos:
name: 'OpenVPNAdapter for macOS NE'
runs-on: macos-latest
if: |
contains(github.event.head_commit.message, '[all]') ||
contains(github.event.head_commit.message, '[macos]') ||
contains(github.event.head_commit.message, '[openvpnadapter]')
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: 'Get OpenVPNAdapter'
uses: actions/checkout@v3
with:
repository: amnezia-vpn/OpenVPNAdapter
ref: feature/macox-network-extension
path: OpenVPNAdapter
- name: Configure amnezia.xcconfig
run: |
export WORKINGDIR=`pwd`
echo "Working directory: $WORKINGDIR"
echo "Configuring amnezia.xcconfig..."
cat $WORKINGDIR/OpenVPNAdapter/Configuration/Project-MacNE.xcconfig > $WORKINGDIR/OpenVPNAdapter/Configuration/amnezia.xcconfig
cat << EOF >> $WORKINGDIR/OpenVPNAdapter/Configuration/amnezia.xcconfig
PROJECT_TEMP_DIR = $WORKINGDIR/OpenVPNAdapter/build/OpenVPNAdapter.build
CONFIGURATION_BUILD_DIR = $WORKINGDIR/OpenVPNAdapter/build/Release-macos
BUILT_PRODUCTS_DIR = $WORKINGDIR/OpenVPNAdapter/build/Release-macos
EOF
- name: Get macOS SDK
id: sdk_version
run: |
MACOSX_SDK=$(xcrun --sdk macosx --show-sdk-path | sed -E 's/.*MacOSX([0-9]+\.[0-9]+)\.sdk/\1/')
echo "Using macOS SDK version: $MACOSX_SDK"
echo "::set-output name=sdk::$MACOSX_SDK"
- name: Build OpenVPNAdapter
run: |
cd OpenVPNAdapter
export XCODEBUILD="/usr/bin/xcodebuild"
$XCODEBUILD -scheme OpenVPNAdapter \
-configuration Release \
-xcconfig Configuration/amnezia.xcconfig \
-sdk macosx${{ steps.sdk_version.outputs.sdk }} \
-destination 'generic/platform=macOS' \
-project OpenVPNAdapter.xcodeproj
- name: Remove CodeSignature
run: |
export WORKINGDIR=`pwd`
echo "Removing CodeSignature if exists..."
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework/Versions/A/_CodeSignature
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework/Versions/Current/_CodeSignature
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/LZ4.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNClient.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/mbedTLS.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework.dSYM
- name: Generate Checksums for OpenVPNAdapter.framework
run: |
export WORKINGDIR=`pwd`
if [ -d "$WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework" ]; then
echo "Generating checksums for OpenVPNAdapter.framework..."
find $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework \
-type f \
-exec sh -c 'openssl dgst -sha256 -r "$1" > "$1.sha256"' _ {} \;
else
echo "Directory $WORKINGDIR/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework does not exist."
exit 1
fi
- name: Archive Build
uses: actions/upload-artifact@v3
with:
name: OpenVPNAdapter-macos
path: OpenVPNAdapter/build/Release-macos
build-ios:
name: 'OpenVPNAdapter for iOS'
runs-on: macos-latest
if: |
contains(github.event.head_commit.message, '[all]') ||
contains(github.event.head_commit.message, '[ios]') ||
contains(github.event.head_commit.message, '[openvpnadapter-ios]') ||
contains(github.event.head_commit.message, '[openvpnadapter]')
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: recursive
- name: 'Get OpenVPNAdapter'
uses: actions/checkout@v3
with:
repository: amnezia-vpn/OpenVPNAdapter
ref: 7c821a8d5c1ad5ad94e0763b4f25a875b5a6fe1b
path: OpenVPNAdapter
submodules: recursive
- name: Configure amnezia.xcconfig
run: |
export WORKINGDIR=`pwd`
echo "Configuring amnezia.xcconfig..."
cat $WORKINGDIR/OpenVPNAdapter/Configuration/Project.xcconfig > $WORKINGDIR/OpenVPNAdapter/Configuration/amnezia.xcconfig
cat << EOF >> $WORKINGDIR/OpenVPNAdapter/Configuration/amnezia.xcconfig
PROJECT_TEMP_DIR = $WORKINGDIR/OpenVPNAdapter/build/OpenVPNAdapter.build
CONFIGURATION_BUILD_DIR = $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos
BUILT_PRODUCTS_DIR = $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos
EOF
- name: Build OpenVPNAdapter for iOS
run: |
export SDK_PATH=`xcrun --sdk iphoneos --show-sdk-path`
export CLANG=`xcrun --sdk iphoneos --find clang`
export XCODEBUILD="/usr/bin/xcodebuild"
cd OpenVPNAdapter
$XCODEBUILD -scheme OpenVPNAdapter \
-configuration Release \
-xcconfig Configuration/amnezia.xcconfig \
-sdk iphoneos \
-destination 'generic/platform=iOS' \
-project OpenVPNAdapter.xcodeproj
- name: Remove CodeSignature
run: |
export WORKINGDIR=`pwd`
echo "Removing CodeSignature if exists..."
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework/Versions/A/_CodeSignature
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework/Versions/Current/_CodeSignature
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/LZ4.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNClient.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/mbedTLS.framework
rm -rf $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework.dSYM
- name: Generate Checksums for OpenVPNAdapter.framework
run: |
export WORKINGDIR=`pwd`
if [ -d "$WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework" ]; then
echo "Generating checksums for OpenVPNAdapter.framework..."
find $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework \
-type f \
-exec sh -c 'openssl dgst -sha256 -r "$1" > "$1.sha256"' _ {} \;
else
echo "Directory $WORKINGDIR/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework does not exist."
exit 1
fi
- name: Archive Build
uses: actions/upload-artifact@v3
with:
name: OpenVPNAdapter-ios
path: OpenVPNAdapter/build/Release-iphoneos
github-release:
name: GitHub Release
needs: [build-macos, build-ios]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Setup | Checkout
uses: actions/checkout@v3
- name: Setup | Download macOS Artifact
uses: actions/download-artifact@v3
with:
name: OpenVPNAdapter-macos
path: openvpnadapter-mac/
- name: Setup | Download iOS Artifact
uses: actions/download-artifact@v3
with:
name: OpenVPNAdapter-ios
path: openvpnadapter-ios/
- name: Create Combined Folder
run: |
mkdir -p openvpnadapter
cp -r openvpnadapter-mac/ openvpnadapter/
cp -r openvpnadapter-ios/ openvpnadapter/
- name: Zip Combined Artifacts
run: |
zip -r openvpnadapter.zip openvpnadapter/
shell: bash
- name: List Generated Files
run: ls -l
- name: Upload Binaries to GitHub Release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file: openvpnadapter.zip
file_glob: false