diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5903e2c..63c7601 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -2,8 +2,10 @@ name: Linux on: [push] + env: VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" + VCPKG_FORCE_SYSTEM_BINARIES: 1 CMAKE_BUILD_TYPE: "Release" jobs: @@ -12,6 +14,9 @@ jobs: container: image: debian:11 steps: + - name: get-cmake + uses: lukka/get-cmake@v3.28.1 + - name: Export GitHub Actions cache environment variables uses: actions/github-script@v6 with: @@ -62,11 +67,83 @@ jobs: - name: Test run: ./bin/BeamMP-Server-tests + debian-11-arm64-build: + runs-on: [Linux, ARM64] + container: + image: debian:11 + env: + VCPKG_DEFAULT_TRIPLET: "arm64-linux" + steps: + - uses: actions/setup-node@v4 + + - name: get-cmake + uses: lukka/get-cmake@v3.28.1 + + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v6 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + + - name: Install git + run: | + apt-get update -y + apt-get install -y git + + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Git config safe directory + shell: bash + run: bash ./scripts/debian-11/1.5-git-safe.sh + + - name: Install Dependencies + run: bash ./scripts/debian-11/1-install-deps.sh + + - name: Setup vcpkg + uses: lukka/run-vcpkg@v11 + with: + runVcpkgInstall: true + + - name: Create Build Environment + run: bash ./scripts/debian-11/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake' + + - name: Build Server + run: bash ./scripts/debian-11/3-build.sh + + - name: Archive server artifact + uses: actions/upload-artifact@v2 + with: + name: BeamMP-Server-debian.arm64 + path: ./bin/BeamMP-Server + + - name: Archive server debug info artifact + uses: actions/upload-artifact@v2 + with: + name: BeamMP-Server-debian.arm64.debug + path: ./bin/BeamMP-Server.debug + + - name: Build Tests + run: bash ./scripts/debian-11/3-build-tests.sh + + - name: Install Runtime Dependencies + run: bash ./scripts/debian-11/4-install-runtime-deps.sh + + - name: Test + run: ./bin/BeamMP-Server-tests + ubuntu-22-04-build: runs-on: ubuntu-latest container: image: ubuntu:22.04 steps: + - uses: actions/setup-node@v4 + + - name: get-cmake + uses: lukka/get-cmake@v3.28.1 + - name: Export GitHub Actions cache environment variables uses: actions/github-script@v6 with: @@ -120,4 +197,71 @@ jobs: run: bash ./scripts/ubuntu-22.04/4-install-runtime-deps.sh - name: Test - run: ./bin/BeamMP-Server-tests \ No newline at end of file + run: ./bin/BeamMP-Server-tests + + ubuntu-22-04-arm64-build: + runs-on: [Linux, ARM64] + container: + image: ubuntu:22.04 + env: + VCPKG_DEFAULT_TRIPLET: "arm64-linux" + steps: + - uses: actions/setup-node@v4 + + - name: get-cmake + uses: lukka/get-cmake@v3.28.1 + + - name: Export GitHub Actions cache environment variables + uses: actions/github-script@v6 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + + - name: Install git + run: | + apt-get update -y + apt-get install -y git + + - uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Git config safe directory + shell: bash + run: bash ./scripts/ubuntu-22.04/1.5-git-safe.sh + + - name: Install Dependencies + run: bash ./scripts/ubuntu-22.04/1-install-deps.sh + + - name: Setup vcpkg + uses: lukka/run-vcpkg@v11 + with: + runVcpkgInstall: true + + - name: Create Build Environment + run: bash ./scripts/ubuntu-22.04/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake' + + - name: Build Server + run: bash ./scripts/ubuntu-22.04/3-build.sh + + - name: Archive server artifact + uses: actions/upload-artifact@v2 + with: + name: BeamMP-Server-ubuntu.arm64 + path: ./bin/BeamMP-Server + + - name: Archive server debug info artifact + uses: actions/upload-artifact@v2 + with: + name: BeamMP-Server-ubuntu.arm64.debug + path: ./bin/BeamMP-Server.debug + + - name: Build Tests + run: bash ./scripts/ubuntu-22.04/3-build-tests.sh + + - name: Install Runtime Dependencies + run: bash ./scripts/ubuntu-22.04/4-install-runtime-deps.sh + + - name: Test + run: ./bin/BeamMP-Server-tests diff --git a/scripts/debian-11/1-install-deps.sh b/scripts/debian-11/1-install-deps.sh index a40bab4..49345d0 100755 --- a/scripts/debian-11/1-install-deps.sh +++ b/scripts/debian-11/1-install-deps.sh @@ -4,4 +4,4 @@ set -ex apt-get update -y -apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++ +apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++ ninja-build diff --git a/scripts/ubuntu-22.04/1-install-deps.sh b/scripts/ubuntu-22.04/1-install-deps.sh index a40bab4..49345d0 100755 --- a/scripts/ubuntu-22.04/1-install-deps.sh +++ b/scripts/ubuntu-22.04/1-install-deps.sh @@ -4,4 +4,4 @@ set -ex apt-get update -y -apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++ +apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++ ninja-build diff --git a/scripts/ubuntu-22.04/2-configure.sh b/scripts/ubuntu-22.04/2-configure.sh index a1efec9..19a44a8 100755 --- a/scripts/ubuntu-22.04/2-configure.sh +++ b/scripts/ubuntu-22.04/2-configure.sh @@ -2,4 +2,6 @@ set -ex +./vcpkg/bootstrap-vcpkg.sh + cmake . -B bin $1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -g -Wl,-z,norelro -Wl,--hash-style=gnu -Wl,--build-id=none -Wl,-z,noseparate-code -ffunction-sections -fdata-sections -Wl,--gc-sections" -DBeamMP-Server_ENABLE_LTO=ON diff --git a/vcpkg b/vcpkg index 7201090..8397227 160000 --- a/vcpkg +++ b/vcpkg @@ -1 +1 @@ -Subproject commit 72010900b7cee36cea77aebb97695095c9358eaf +Subproject commit 83972272512ce4ede5fc3b2ba98f6468b179f192