Add MacOS euphoria action #100
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build OpenVPNAdapter for Apple | |
on: [push] | |
jobs: | |
build-macos: | |
name: 'OpenVPNAdapter for macOS' | |
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-macos]') || | |
contains(github.event.head_commit.message, '[openvpnadapter]') | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
repository: amnezia-vpn/OpenVPNAdapter | |
path: OpenVPNAdapter | |
ref: master-amnezia | |
submodules: recursive | |
- name: Build OpenVPNAdapter for macOS | |
run: | | |
echo "Building OpenVPNAdapter for macOS…" | |
xcrun xcodebuild \ | |
-project OpenVPNAdapter/OpenVPNAdapter.xcodeproj \ | |
-scheme OpenVPNAdapter \ | |
-destination 'generic/platform=macOS' \ | |
-configuration Release \ | |
-sdk macosx \ | |
PROJECT_TEMP_DIR=$(pwd)/OpenVPNAdapter/build/OpenVPNAdapter.build \ | |
CONFIGURATION_BUILD_DIR=$(pwd)/OpenVPNAdapter/build/Release-macos \ | |
BUILT_PRODUCTS_DIR=$(pwd)/OpenVPNAdapter/build/Release-macos \ | |
SKIP_INSTALL=NO \ | |
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ | |
CODE_SIGNING_ALLOWED=NO \ | |
CODE_SIGNING_REQUIRED=NO | |
- name: Generate Checksums for OpenVPNAdapter.framework | |
run: | | |
if [ -d "$(pwd)/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework" ]; then | |
echo "Generating checksums for OpenVPNAdapter.framework…" | |
find $(pwd)/OpenVPNAdapter/build/Release-macos \ | |
-type f \ | |
-exec sh -c 'openssl dgst -sha256 -r "$1" > "$1.sha256"' _ {} \; | |
else | |
echo "Directory $(pwd)/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework does not exist." | |
exit 1 | |
fi | |
- name: Create tarball preserving symlinks | |
run: tar -cvf OpenVPNAdapter-macos.tar -C OpenVPNAdapter/build/Release-macos . | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: OpenVPNAdapter-macos | |
path: OpenVPNAdapter-macos.tar | |
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: Get OpenVPNAdapter | |
uses: actions/checkout@v4 | |
with: | |
repository: amnezia-vpn/OpenVPNAdapter | |
ref: master-amnezia | |
path: OpenVPNAdapter | |
submodules: recursive | |
- name: Build OpenVPNAdapter for iOS | |
run: | | |
echo "Building OpenVPNAdapter for iOS…" | |
xcrun xcodebuild \ | |
-project OpenVPNAdapter/OpenVPNAdapter.xcodeproj \ | |
-scheme OpenVPNAdapter \ | |
-destination 'generic/platform=iOS' \ | |
-configuration Release \ | |
-sdk iphoneos \ | |
PROJECT_TEMP_DIR=$(pwd)/OpenVPNAdapter/build/OpenVPNAdapter.build \ | |
CONFIGURATION_BUILD_DIR=$(pwd)/OpenVPNAdapter/build/Release-iphoneos \ | |
BUILT_PRODUCTS_DIR=$(pwd)/OpenVPNAdapter/build/Release-iphoneos \ | |
SKIP_INSTALL=NO \ | |
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ | |
CODE_SIGNING_ALLOWED=NO \ | |
CODE_SIGNING_REQUIRED=NO | |
- name: Generate Checksums for OpenVPNAdapter.framework | |
run: | | |
if [ -d "$(pwd)/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework" ]; then | |
echo "Generating checksums for OpenVPNAdapter.framework…" | |
find "$(pwd)/OpenVPNAdapter/build/Release-iphoneos" -type f -exec sh -c \ | |
'if [ ! -L "$1" ]; then openssl dgst -sha256 -r "$1" > "$1.sha256"; fi' _ {} \; | |
else | |
echo "Directory $(pwd)/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework does not exist." | |
exit 1 | |
fi | |
- name: Create tarball preserving symlinks | |
run: tar -cvf OpenVPNAdapter-ios.tar -C OpenVPNAdapter/build/Release-iphoneos . | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: OpenVPNAdapter-ios | |
path: OpenVPNAdapter-ios.tar | |
github-release: | |
name: GitHub Release | |
needs: [build-ios, build-macos] | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Setup | Checkout | |
uses: actions/checkout@v4 | |
- name: Download iOS Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: OpenVPNAdapter-ios | |
path: openvpnadapter-ios/ | |
- name: Extract iOS Artifact | |
run: tar -xvf openvpnadapter-ios/OpenVPNAdapter-ios.tar -C openvpnadapter-ios/ | |
- name: Download macOS Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: OpenVPNAdapter-macos | |
path: openvpnadapter-macos/ | |
- name: Extract macOS Artifact | |
run: tar -xvf openvpnadapter-macos/OpenVPNAdapter-macos.tar -C openvpnadapter-macos/ | |
- name: Create Combined Folder | |
run: | | |
mkdir -p openvpnadapter/ios | |
mkdir -p openvpnadapter/macos | |
rsync -a openvpnadapter-ios/ openvpnadapter/ios/ | |
rsync -a openvpnadapter-macos/ openvpnadapter/macos/ | |
- name: Archive using tar | |
run: | | |
tar -czf openvpnadapter.tar.gz 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.tar.gz | |
file_glob: false |