diff --git a/.github/workflows/build_source_release.yml b/.github/workflows/build_source_release.yml index f2567459..90a2dd9a 100644 --- a/.github/workflows/build_source_release.yml +++ b/.github/workflows/build_source_release.yml @@ -8,32 +8,29 @@ on: jobs: build: - name: build + name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - with: - submodules: true + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true - - name: archive - id: archive - run: | - VERSION=${{ github.event.release.tag_name }} - PKGNAME="SoftEtherVPN-$VERSION" - mkdir -p /tmp/$PKGNAME - mv * /tmp/$PKGNAME - mv /tmp/$PKGNAME . - TARBALL=$PKGNAME.tar.xz - tar cJf $TARBALL $PKGNAME - echo "tarball=$TARBALL" >> $GITHUB_OUTPUT + - name: Archive + id: archive + run: | + VERSION=${{ github.event.release.tag_name }} + PKGNAME="SoftEtherVPN-$VERSION" + mkdir -p /tmp/$PKGNAME + mv * /tmp/$PKGNAME + mv /tmp/$PKGNAME . + TARBALL=$PKGNAME.tar.xz + tar cJf $TARBALL $PKGNAME + echo "tarball=$TARBALL" >> $GITHUB_OUTPUT - - name: upload tarball - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./${{ steps.archive.outputs.tarball }} - asset_name: ${{ steps.archive.outputs.tarball }} - asset_content_type: application/gzip + - name: Upload tarball + uses: softprops/action-gh-release@v2 + with: + files: ./${{ steps.archive.outputs.tarball }} + name: ${{ steps.archive.outputs.tarball }} \ No newline at end of file diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 513f3df5..f71ae760 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -1,43 +1,50 @@ - name: Coverity on: schedule: - - cron: "0 0 * * *" + - cron: "0 0 * * *" permissions: contents: read jobs: scan: + name: Scan runs-on: ubuntu-latest - if: ${{ github.repository_owner == 'SoftEtherVPN' }} + if: github.repository_owner == 'SoftEtherVPN' steps: - - uses: actions/checkout@v2 - with: - submodules: true - - name: Install apt dependencies - run: | - sudo apt-get update - sudo apt-get install -y cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev libsodium-dev - - name: Download Coverity build tool - run: | - wget -c -N https://scan.coverity.com/download/linux64 --post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=SoftEtherVPN%2FSoftEtherVPN" -O coverity_tool.tar.gz - mkdir coverity_tool - tar xzf coverity_tool.tar.gz --strip 1 -C coverity_tool - - name: Configure - run: | - ./configure - - name: Build with Coverity build tool - run: | - export PATH=`pwd`/coverity_tool/bin:$PATH - cov-build --dir cov-int make -C build - - name: Submit build result to Coverity Scan - run: | - tar czvf cov.tar.gz cov-int - curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \ - --form email=chipitsine@gmail.com \ - --form file=@cov.tar.gz \ - --form version="Commit $GITHUB_SHA" \ - --form description="Build submitted via CI" \ - https://scan.coverity.com/builds?project=SoftEtherVPN%2FSoftEtherVPN + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev libsodium-dev + + - name: Download Coverity build tool + run: | + wget -c -N https://scan.coverity.com/download/linux64 --post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=SoftEtherVPN%2FSoftEtherVPN" -O coverity_tool.tar.gz + mkdir coverity_tool + tar xzf coverity_tool.tar.gz --strip 1 -C coverity_tool + + - name: Configure + run: | + ./configure + + - name: Build with Coverity build tool + run: | + export PATH=`pwd`/coverity_tool/bin:$PATH + cov-build --dir cov-int make -C build + + - name: Submit build result to Coverity Scan + run: | + tar czvf cov.tar.gz cov-int + curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \ + --form email=chipitsine@gmail.com \ + --form file=@cov.tar.gz \ + --form version="Commit $GITHUB_SHA" \ + --form description="Build submitted via CI" \ + https://scan.coverity.com/builds?project=SoftEtherVPN%2FSoftEtherVPN \ No newline at end of file diff --git a/.github/workflows/fedora-rawhide.yml b/.github/workflows/fedora-rawhide.yml index 66c7116b..c22dd33b 100644 --- a/.github/workflows/fedora-rawhide.yml +++ b/.github/workflows/fedora-rawhide.yml @@ -7,28 +7,30 @@ on: pull_request: workflow_dispatch: -permissions: - contents: read - jobs: build_and_test: strategy: matrix: - cc: [ gcc, clang ] + cc: + - gcc + - clang name: ${{ matrix.cc }} runs-on: ubuntu-latest container: image: fedora:rawhide steps: - - uses: actions/checkout@v1 - with: - submodules: true - - name: Install dependencies - run: | - dnf -y install git cmake ncurses-devel openssl-devel-engine libsodium-devel readline-devel zlib-devel gcc-c++ clang - - name: Compile with ${{ matrix.cc }} - run: | - export CC=${{ matrix.cc }} - ./configure - make -C build + - name: Install dependencies + run: | + dnf -y install git cmake ncurses-devel openssl-devel-engine libsodium-devel readline-devel zlib-devel gcc-c++ clang + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Compile with ${{ matrix.cc }} + run: | + export CC=${{ matrix.cc }} + ./configure + make -C build \ No newline at end of file diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 799f4b8f..7fa27a75 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -1,34 +1,40 @@ -on: [push, pull_request] +name: Linux -permissions: - contents: read +on: + push: + pull_request: jobs: build_and_test: + name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Install dependencies - run: sudo apt update && sudo apt-get -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libsodium-dev libssl-dev make zlib1g-dev liblz4-dev libnl-genl-3-dev + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true - - name: Build - run: | - mkdir build - cd build - cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo .. - cmake --build . + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libsodium-dev libssl-dev make zlib1g-dev liblz4-dev libnl-genl-3-dev - - name: Build deb packages - run: | - cd build - cpack -C Release -G DEB + - name: Build + run: | + mkdir build + cd build + cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + cmake --build . - - name: Test - run: | - .ci/appveyor-deb-install-test.sh - sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip libcap-ng-dev # To build OpenVPN - sudo .ci/start-se-openvpn.sh - sudo .ci/run-openvpn-tests.sh + - name: Build deb packages + run: | + cd build + cpack -C Release -G DEB + + - name: Test + run: | + .ci/appveyor-deb-install-test.sh + sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip libcap-ng-dev # To build OpenVPN + sudo .ci/start-se-openvpn.sh + sudo .ci/run-openvpn-tests.sh \ No newline at end of file diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f6821b9b..03442b7e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -1,28 +1,37 @@ -on: [push, pull_request, workflow_dispatch] +name: macOS -permissions: - contents: read +on: + push: + pull_request: + workflow_dispatch: jobs: build_and_test: strategy: matrix: - os: [macos-14, macos-13, macos-12] + os: + - macos-14 + - macos-13 + - macos-12 name: ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 - with: - submodules: true - - name: Install dependencies - run: | - brew install libsodium - - name: Compile - run: | - ./configure - make -C build - - name: Test - run: | - otool -L build/vpnserver - .ci/memory-leak-test.sh + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install dependencies + run: | + brew install libsodium + + - name: Compile + run: | + ./configure + make -C build + + - name: Test + run: | + otool -L build/vpnserver + .ci/memory-leak-test.sh \ No newline at end of file diff --git a/.github/workflows/musl.yml b/.github/workflows/musl.yml index 240b6a25..9bb7389b 100644 --- a/.github/workflows/musl.yml +++ b/.github/workflows/musl.yml @@ -1,23 +1,30 @@ -name: alpine/musl +name: Alpine/musl -on: [push, pull_request] - -permissions: - contents: read +on: + push: + pull_request: jobs: musl: - name: gcc - runs-on: ubuntu-latest - container: - image: alpine:latest - steps: - - uses: actions/checkout@v1 + name: gcc + runs-on: ubuntu-latest + container: + image: alpine:latest + steps: + + - name: Install dependencies + run: | + apk add binutils --no-cache build-base readline-dev openssl-dev ncurses-dev git cmake zlib-dev libsodium-dev gnu-libiconv + + - name: Checkout + uses: actions/checkout@v4 with: submodules: true - - name: Install dependencies - run: apk add binutils --no-cache build-base readline-dev openssl-dev ncurses-dev git cmake zlib-dev libsodium-dev gnu-libiconv + - name: Configure - run: ./configure + run: | + ./configure + - name: make - run: make -C build \ No newline at end of file + run: | + make -C build \ No newline at end of file diff --git a/.github/workflows/stb_check.yml b/.github/workflows/stb_check.yml index 5353250e..877a5d47 100644 --- a/.github/workflows/stb_check.yml +++ b/.github/workflows/stb_check.yml @@ -1,16 +1,21 @@ -on: [push, pull_request] +name: STB Check -permissions: - contents: read +on: + push: + pull_request: jobs: check: + name: Check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - with: - submodules: true - - name: Check - run: | - cd developer_tools/stbchecker - dotnet run ../../src/bin/hamcore \ No newline at end of file + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Check + run: | + cd developer_tools/stbchecker + dotnet run ../../src/bin/hamcore \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d5cccba3..a97e5208 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -1,63 +1,83 @@ -on: [push, pull_request] +name: Windows -permissions: - contents: read +on: + push: + pull_request: jobs: build_and_test: strategy: matrix: platform: [ - { ARCHITECTURE: x86, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", VCPKG_TRIPLET: "x86-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat"}, - { ARCHITECTURE: x64, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", VCPKG_TRIPLET: "x64-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"} + { + ARCHITECTURE: x86, + COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", + VCPKG_TRIPLET: "x86-windows-static", + VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat" + }, + { + ARCHITECTURE: x64, + COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", + VCPKG_TRIPLET: "x64-windows-static", + VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" + } ] runs-on: windows-latest name: ${{ matrix.platform.ARCHITECTURE }} steps: - - uses: actions/checkout@v4 - with: - submodules: true - - name: Cache vcpkg - uses: actions/cache@v4 - with: - path: 'build/vcpkg_installed/' - key: vcpkg-${{ matrix.platform.VCPKG_TRIPLET }} - - name: Set version variables - run: | - $v = python version.py - echo "VERSION=$v" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - shell: pwsh - - name: Build - env: - ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }} - COMPILER_PATH: ${{ matrix.platform.COMPILER_PATH }} - VCPKG_TRIPLET: ${{ matrix.platform.VCPKG_TRIPLET }} - VCVARS_PATH: ${{ matrix.platform.VCVARS_PATH }} - run: | - set BUILD_NUMBER=0 - mkdir build - cd build - call "%VCVARS_PATH%" - cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=%VCPKG_TRIPLET% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="%COMPILER_PATH%" -DCMAKE_CXX_COMPILER="%COMPILER_PATH%" -DBUILD_NUMBER=%BUILD_NUMBER% .. - cmake --build . - mkdir installers - vpnsetup /SFXMODE:vpnclient /SFXOUT:"installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" - vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" - shell: cmd - - name: Test - shell: powershell - run: | - . .ci/appveyor-vpntest.ps1 - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: Binaries-${{ matrix.platform.ARCHITECTURE }} - path: | - build/*.exe - build/*.pdb - build/*.se2 - - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: Installers-${{ matrix.platform.ARCHITECTURE }} - path: build/installers \ No newline at end of file + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Cache vcpkg + uses: actions/cache@v4 + with: + path: 'build/vcpkg_installed/' + key: vcpkg-${{ matrix.platform.VCPKG_TRIPLET }} + + - name: Set version variables + run: | + Write-Output "VERSION=$(python version.py)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding UTF8 -Append + shell: pwsh + + - name: Build + env: + ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }} + COMPILER_PATH: ${{ matrix.platform.COMPILER_PATH }} + VCPKG_TRIPLET: ${{ matrix.platform.VCPKG_TRIPLET }} + VCVARS_PATH: ${{ matrix.platform.VCVARS_PATH }} + run: | + set BUILD_NUMBER=0 + mkdir build + cd build + call "%VCVARS_PATH%" + cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=%VCPKG_TRIPLET% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="%COMPILER_PATH%" -DCMAKE_CXX_COMPILER="%COMPILER_PATH%" -DBUILD_NUMBER=%BUILD_NUMBER% .. + cmake --build . + mkdir installers + vpnsetup /SFXMODE:vpnclient /SFXOUT:"installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" + shell: cmd + + - name: Test + shell: powershell + run: | + . .ci/appveyor-vpntest.ps1 + + - name: Upload built binaries + uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: Binaries-${{ matrix.platform.ARCHITECTURE }} + path: | + build/*.exe + build/*.pdb + build/*.se2 + + - name: Upload installers + uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + name: Installers-${{ matrix.platform.ARCHITECTURE }} + path: build/installers \ No newline at end of file diff --git a/.github/workflows/windows_release.yml b/.github/workflows/windows_release.yml index d9198934..0d2c912b 100644 --- a/.github/workflows/windows_release.yml +++ b/.github/workflows/windows_release.yml @@ -1,4 +1,4 @@ -name: "Release" +name: Release on: push: @@ -14,43 +14,60 @@ permissions: jobs: release: + name: Release runs-on: windows-latest outputs: upload_url: "${{ steps.create_release.outputs.upload_url }}" steps: - - name: "Checkout repository" + + - name: Checkout uses: actions/checkout@v4 - - name: "Create GitHub release" + - name: Create GitHub release id: create_release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 + build-windows: name: ${{ matrix.platform.ARCHITECTURE }} runs-on: windows-latest - needs: ["release"] + needs: release strategy: matrix: platform: [ - { ARCHITECTURE: x86, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", VCPKG_TRIPLET: "x86-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat"}, - { ARCHITECTURE: x64, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", VCPKG_TRIPLET: "x64-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"} + { + ARCHITECTURE: x86, + COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", + VCPKG_TRIPLET: "x86-windows-static", + VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat" + }, + { + ARCHITECTURE: x64, + COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", + VCPKG_TRIPLET: "x64-windows-static", + VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat" + } ] steps: - - name: "Checkout repository" + + - name: Checkout uses: actions/checkout@v4 with: submodules: true + - name: Cache vcpkg uses: actions/cache@v4 with: path: 'build/vcpkg_installed/' key: vcpkg-release-${{ matrix.platform.VCPKG_TRIPLET }} + - name: Set version variables run: | - $b=(Get-Content CMakeSettings.json | Out-String | ConvertFrom-Json).environments.BuildNumber - echo "BUILD_NUMBER=$b" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append - $v = python version.py - echo "VERSION=$v" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append + @( + "BUILD_NUMBER=$((Get-Content CMakeSettings.json | Out-String | ConvertFrom-Json).environments.BuildNumber)" + "VERSION=$(python version.py)" + ) | Out-File -FilePath $Env:GITHUB_ENV -Encoding UTF8 -Append shell: pwsh + - name: Build env: ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }} @@ -68,27 +85,19 @@ jobs: vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" shell: cmd - - name: dir + - name: Show directory items run: | Get-ChildItem -Recurse build/installers shell: pwsh - - name: "Upload softether-vpnclient" - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: "${{ github.token }}" + - name: Upload softether-vpnclient + uses: softprops/action-gh-release@v2 with: - upload_url: "${{ needs.release.outputs.upload_url }}" - asset_path: "build/installers/softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" - asset_name: "softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" - asset_content_type: "application/octet-stream" - - name: "Upload softether-vpnserver_vpnbridge" - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: "${{ github.token }}" + files: "build/installers/softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + name: "softether-vpnclient-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + + - name: Upload softether-vpnserver_vpnbridge + uses: softprops/action-gh-release@v2 with: - upload_url: "${{ needs.release.outputs.upload_url }}" - asset_path: "build/installers/softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" - asset_name: "softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" - asset_content_type: "application/octet-stream" - + files: "build/installers/softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" + name: "softether-vpnserver_vpnbridge-${{ env.VERSION }}.${{ env.BUILD_NUMBER }}.${{ matrix.platform.ARCHITECTURE }}.exe" \ No newline at end of file