
* Add prebuilt submodule * Remove Android native library * Add links for Android prebuilt library * Update OpenSSL to prebuilt binaries * Setup links for prebuilt OpenSSL * Set correct OpenSSL header dir * Update prebuilt submodule * Use static OpenSSL for linux build * Use prebuilt binary from 3rd-prebuilt for Win installer * Use prebuilt binary from 3rd-prebuilt for Linux installer * Use prebuilt binary from 3rd-prebuilt for MacOS installer * Use Android prebuilt openvpn libs * Cleanup some unneeded code * Add new maven repo for gradle-versions-plugin * Use jitpack version of jsocks * Fix some unnecessary header copy * Fix issue with package name of original WG libs * Change submodule path to https (3rd-prebuilt) * Fix windows installer * MacOS deploy fixes * NetworkChange detection for OpenVPN protocol (#256) * NetworkChange detection for OpenVPN protocol * Update android native libs * Always on VPN mode for OpenVPN, Cloak+OpenVPN * Set foregroundService type * Android 14 require to set foregroundServiceType * Remove unused code and cleanup submodules * Cleanup gradle build script * Fix start button status * Pull OpenSSL prebuilt for MacOS, iOS * Update links for OpenSSL MacOS, iOS prebuilt * Update OpenSSL binaries path * Refactor some OpenSSL includes * Update MacOS OpenVPN binary with statically linked dependency * Use prebilt for LibSSH * Android resources cleanup * Set static runtime linux * Use shared LibSSH for Android * Update SS Android lib name * Fix Linux install path and file permissions * Feature/iOS GitHub actions (#265) * Move Android cpp code to openvpn-pt-android repo * Remove unused OpenVPN2 Android Libs * Cleanup Gemfile --------- Co-authored-by: Mazay B <pokamest@gmail.com>
335 lines
9.3 KiB
YAML
335 lines
9.3 KiB
YAML
name: 'Deploy workflow'
|
|
|
|
|
|
on: [push]
|
|
|
|
jobs:
|
|
Build-Linux-Ubuntu:
|
|
name: 'Build-Linux-Ubuntu'
|
|
runs-on: ubuntu-20.04
|
|
|
|
env:
|
|
QT_VERSION: 6.5.1
|
|
QIF_VERSION: 4.6
|
|
|
|
steps:
|
|
- name: 'Install Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'linux'
|
|
target: 'desktop'
|
|
arch: 'gcc_64'
|
|
modules: 'qtremoteobjects qt5compat qtshadertools'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
tools: 'tools_ifw'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Get sources'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
fetch-depth: 10
|
|
|
|
- name: 'Setup ccache'
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
- name: 'Build project'
|
|
run: |
|
|
sudo apt-get install libxkbcommon-x11-0
|
|
export QT_BIN_DIR=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/gcc_64/bin
|
|
export QIF_BIN_DIR=${{ runner.temp }}/Qt/Tools/QtInstallerFramework/${{ env.QIF_VERSION }}/bin
|
|
bash deploy/build_linux.sh
|
|
|
|
- name: 'Upload installer artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_Linux_installer
|
|
path: deploy/AmneziaVPN_Linux_Installer
|
|
retention-days: 7
|
|
- name: 'Upload unpacked artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_Linux_unpacked
|
|
path: deploy/AppDir
|
|
retention-days: 7
|
|
|
|
# ------------------------------------------------------
|
|
|
|
Build-Windows:
|
|
name: Build-Windows
|
|
runs-on: windows-latest
|
|
|
|
env:
|
|
QT_VERSION: 6.5.1
|
|
QIF_VERSION: 4.6
|
|
BUILD_ARCH: 64
|
|
|
|
steps:
|
|
- name: 'Get sources'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
fetch-depth: 10
|
|
|
|
- name: 'Setup ccache'
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
- name: 'Install Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'windows'
|
|
target: 'desktop'
|
|
arch: 'win64_msvc2019_64'
|
|
modules: 'qtremoteobjects qt5compat qtshadertools'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
tools: 'tools_ifw'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Setup mvsc'
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: 'x64'
|
|
|
|
- name: 'Build project'
|
|
shell: cmd
|
|
run: |
|
|
set BUILD_ARCH=${{ env.BUILD_ARCH }}
|
|
set QT_BIN_DIR="${{ runner.temp }}\\Qt\\${{ env.QT_VERSION }}\\msvc2019_64\\bin"
|
|
set QIF_BIN_DIR="${{ runner.temp }}\\Qt\\Tools\\QtInstallerFramework\\${{ env.QIF_VERSION }}\\bin"
|
|
call deploy\\build_windows.bat
|
|
|
|
- name: 'Upload installer artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_Windows_installer
|
|
path: AmneziaVPN_x${{ env.BUILD_ARCH }}.exe
|
|
retention-days: 7
|
|
- name: 'Upload unpacked artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_Windows_unpacked
|
|
path: deploy\\build_${{ env.BUILD_ARCH }}\\client\\Release
|
|
retention-days: 7
|
|
|
|
# ------------------------------------------------------
|
|
|
|
Build-IOS:
|
|
name: 'Build-IOS'
|
|
runs-on: macos-12
|
|
|
|
env:
|
|
QT_VERSION: 6.5.2
|
|
|
|
steps:
|
|
# Just select XCode
|
|
- name: 'Setup xcode'
|
|
uses: maxim-lobanov/setup-xcode@v1
|
|
with:
|
|
xcode-version: '14.2'
|
|
|
|
- name: 'Install desktop Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'mac'
|
|
target: 'desktop'
|
|
modules: 'qtremoteobjects qt5compat qtshadertools qtmultimedia'
|
|
arch: 'clang_64'
|
|
dir: ${{ runner.temp }}
|
|
set-env: 'true'
|
|
|
|
- name: 'Install iOS Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'mac'
|
|
target: 'ios'
|
|
modules: 'qtremoteobjects qt5compat qtshadertools qtmultimedia'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Install go'
|
|
uses: actions/setup-go@v3
|
|
|
|
- name: 'Setup gomobile'
|
|
run: |
|
|
export PATH=$PATH:~/go/bin
|
|
go install golang.org/x/mobile/cmd/gomobile@latest
|
|
gomobile init
|
|
|
|
- name: 'Get sources'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
fetch-depth: 10
|
|
|
|
- name: 'Setup ccache'
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
- name: Install dependencies
|
|
run: pip install jsonschema jinja2
|
|
|
|
- name: 'Build project'
|
|
run: |
|
|
export QT_BIN_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/ios/bin"
|
|
export QT_MACOS_ROOT_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos"
|
|
export PATH=$PATH:~/go/bin
|
|
sh deploy/build_ios.sh
|
|
env:
|
|
IOS_TRUST_CERT_BASE64: ${{ secrets.IOS_TRUST_CERT_BASE64 }}
|
|
IOS_SIGNING_CERT_BASE64: ${{ secrets.IOS_SIGNING_CERT_BASE64 }}
|
|
IOS_SIGNING_CERT_PASSWORD: ${{ secrets.IOS_SIGNING_CERT_PASSWORD }}
|
|
APPSTORE_CONNECT_KEY_ID: ${{ secrets.APPSTORE_CONNECT_KEY_ID }}
|
|
APPSTORE_CONNECT_ISSUER_ID: ${{ secrets.APPSTORE_CONNECT_ISSUER_ID }}
|
|
APPSTORE_CONNECT_PRIVATE_KEY: ${{ secrets.APPSTORE_CONNECT_PRIVATE_KEY }}
|
|
IOS_APP_PROVISIONING_PROFILE: ${{ secrets.IOS_APP_PROVISIONING_PROFILE }}
|
|
IOS_NE_PROVISIONING_PROFILE: ${{ secrets.IOS_NE_PROVISIONING_PROFILE }}
|
|
|
|
# - name: 'Upload appstore .ipa and dSYMs to artifacts'
|
|
# uses: actions/upload-artifact@v3
|
|
# with:
|
|
# name: app-store ipa & dsyms
|
|
# path: |
|
|
# ${{ github.workspace }}/AmneziaVPN-iOS.ipa
|
|
# ${{ github.workspace }}/*.app.dSYM.zip
|
|
# retention-days: 7
|
|
|
|
# ------------------------------------------------------
|
|
|
|
Build-MacOS:
|
|
name: 'Build-MacOS'
|
|
runs-on: macos-latest
|
|
|
|
env:
|
|
QT_VERSION: 6.5.1
|
|
QIF_VERSION: 4.6
|
|
|
|
steps:
|
|
- name: 'Setup xcode'
|
|
uses: maxim-lobanov/setup-xcode@v1
|
|
with:
|
|
xcode-version: '13.4'
|
|
|
|
- name: 'Install Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'mac'
|
|
target: 'desktop'
|
|
arch: 'clang_64'
|
|
modules: 'qtremoteobjects qt5compat qtshadertools'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
tools: 'tools_ifw'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Get sources'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
fetch-depth: 10
|
|
|
|
- name: 'Setup ccache'
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
- name: 'Build project'
|
|
run: |
|
|
export QT_BIN_DIR="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/macos/bin"
|
|
export QIF_BIN_DIR="${{ runner.temp }}/Qt/Tools/QtInstallerFramework/${{ env.QIF_VERSION }}/bin"
|
|
bash deploy/build_macos.sh
|
|
|
|
- name: 'Upload installer artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_MacOS_installer
|
|
path: AmneziaVPN.dmg
|
|
retention-days: 7
|
|
- name: 'Upload unpacked artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: AmneziaVPN_MacOS_unpacked
|
|
path: deploy/build/client/AmneziaVPN.app
|
|
retention-days: 7
|
|
|
|
# ------------------------------------------------------
|
|
|
|
Build-Android:
|
|
name: 'Build-Android'
|
|
runs-on: ubuntu-latest
|
|
continue-on-error: true
|
|
|
|
env:
|
|
QT_VERSION: 6.5.1
|
|
|
|
steps:
|
|
- name: 'Install desktop Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'linux'
|
|
target: 'desktop'
|
|
arch: 'gcc_64'
|
|
modules: 'qtremoteobjects qt5compat qtimageformats qtshadertools'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Install android Qt'
|
|
uses: jurplel/install-qt-action@v3
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
host: 'linux'
|
|
target: 'android'
|
|
arch: 'android_x86_64'
|
|
modules: 'qtremoteobjects qt5compat qtimageformats qtshadertools'
|
|
dir: ${{ runner.temp }}
|
|
setup-python: 'true'
|
|
set-env: 'true'
|
|
extra: '--external 7z'
|
|
|
|
- name: 'Install GO'
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.17
|
|
|
|
- name: 'Get sources'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'true'
|
|
fetch-depth: 10
|
|
|
|
- name: 'Setup ccache'
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
- name: 'Setup Java'
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '11'
|
|
|
|
- name: 'Build project'
|
|
run: |
|
|
export QT_HOST_PATH="${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/gcc_64"
|
|
export NDK_VERSION=23c
|
|
export ANDROID_NDK_PLATFORM=android-23
|
|
export ANDROID_NDK_HOME=${{ runner.temp }}/android-ndk-r${NDK_VERSION}
|
|
export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME
|
|
export ANDROID_CURRENT_ARCH=android_x86_64
|
|
|
|
if [ ! -f $ANDROID_NDK_ROOT/ndk-build ]; then
|
|
wget https://dl.google.com/android/repository/android-ndk-r${NDK_VERSION}-linux.zip -qO ${{ runner.temp }}/ndk.zip &&
|
|
unzip -q -d ${{ runner.temp }} ${{ runner.temp }}/ndk.zip ;
|
|
fi
|
|
|
|
export QT_BIN_DIR=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/android_x86_64/bin
|
|
bash deploy/build_android.sh
|