Linux build fix #1159
Workflow file for this run
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: '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/[email protected] | |
- 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/[email protected] | |
- 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/[email protected] | |
- name: Install dependencies | |
run: pip install jsonschema jinja2 | |
- name: 'Build project' | |
run: | | |
git submodule update --init --recursive | |
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: | |
# Keep compat with MacOS 10.15 aka Catalina by Qt 6.4 | |
QT_VERSION: 6.4.3 | |
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/[email protected] | |
- 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 | |
strategy: | |
matrix: | |
include: | |
- abi: 'x86_64' | |
qt_arch: 'android_x86_64' | |
- abi: 'x86' | |
qt_arch: 'android_x86' | |
- abi: 'armeabi-v7a' | |
qt_arch: 'android_armv7' | |
- abi: 'arm64-v8a' | |
qt_arch: 'android_arm64_v8a' | |
env: | |
QT_VERSION: 6.5.2 | |
ANDROID_BUILD_PLATFORM: android-33 | |
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: ${{ matrix.qt_arch }} | |
modules: 'qtremoteobjects qt5compat qtimageformats qtshadertools' | |
dir: ${{ runner.temp }} | |
setup-python: 'true' | |
set-env: 'true' | |
extra: '--external 7z' | |
- name: 'Grant execute permission for qt-cmake' | |
shell: bash | |
run: | | |
chmod +x ${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/${{ matrix.qt_arch }}/bin/qt-cmake | |
- name: 'Get sources' | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
- name: 'Setup ccache' | |
uses: hendrikmuhs/[email protected] | |
- name: 'Setup Java' | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
cache: 'gradle' | |
- name: 'Setup Android NDK' | |
id: setup-ndk | |
uses: nttld/setup-ndk@v1 | |
with: | |
ndk-version: 'r25c' | |
local-cache: 'true' | |
- name: 'Decode keystore secret to file' | |
env: | |
KEYSTORE_BASE64: ${{ secrets.ANDROID_RELEASE_KEYSTORE_BASE64 }} | |
shell: bash | |
run: | | |
echo $KEYSTORE_BASE64 | base64 --decode > android.keystore | |
- name: 'Build project' | |
env: | |
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} | |
QT_HOST_PATH: ${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/gcc_64 | |
QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/android.keystore | |
QT_ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_RELEASE_KEYSTORE_KEY_ALIAS }} | |
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_RELEASE_KEYSTORE_KEY_PASS }} | |
QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.ANDROID_RELEASE_KEYSTORE_KEY_PASS }} | |
shell: bash | |
run: ./deploy/build_android.sh --apk ${{ matrix.abi }} --platform ${{ env.ANDROID_BUILD_PLATFORM }} | |
- name: 'Upload apk' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: AmneziaVPN-android-${{ matrix.abi }} | |
path: deploy/build/AmneziaVPN-${{ matrix.abi }}-release-signed.apk | |
retention-days: 7 |