From b79dda41b52f1c6cd93ac413d808e72ab62285f6 Mon Sep 17 00:00:00 2001 From: Ofek Shaked <32914127+oshaked1@users.noreply.github.com> Date: Sun, 2 Jun 2024 18:16:15 +0300 Subject: [PATCH] Added workflow for creating a release build (#1) --- .../install-wireshark-headers-unix/action.yml | 22 ++++ .../action.yml | 14 +++ .github/workflows/release.yml | 115 ++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 .github/actions/install-wireshark-headers-unix/action.yml create mode 100644 .github/actions/install-wireshark-headers-windows/action.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/actions/install-wireshark-headers-unix/action.yml b/.github/actions/install-wireshark-headers-unix/action.yml new file mode 100644 index 0000000..6223d3c --- /dev/null +++ b/.github/actions/install-wireshark-headers-unix/action.yml @@ -0,0 +1,22 @@ +name: Install Wireshark headers (Unix) +runs: + using: 'composite' + steps: + - name: Configure Wireshark + run: | + mkdir wireshark/build + cmake -G Ninja -B wireshark/build -S wireshark -DENABLE_CCACHE=Yes + shell: bash + - name: Install headers + id: install_headers + run: sudo ninja -C wireshark/build install-headers + continue-on-error: true + shell: bash + # Install headers is not available in older versions, use the full installation instead + - name: Install Wireshark + id: install_wireshark + if: ${{ steps.install_headers.outcome == 'failure' }} + run: | + ninja -C wireshark/build -j$(nproc) + sudo ninja -C wireshark/build install + shell: bash \ No newline at end of file diff --git a/.github/actions/install-wireshark-headers-windows/action.yml b/.github/actions/install-wireshark-headers-windows/action.yml new file mode 100644 index 0000000..e623925 --- /dev/null +++ b/.github/actions/install-wireshark-headers-windows/action.yml @@ -0,0 +1,14 @@ +name: Install Wireshark headers (Windows) +runs: + using: 'composite' + steps: + - name: Configure Wireshark + run: | + mkdir build + cd build + set WIRESHARK_BASE_DIR=..\ + cmake -G "Visual Studio 17 2022" -A x64 -DENABLE_CCACHE=Yes ..\wireshark + shell: cmd + - name: Install headers + run: msbuild install-headers.vcxproj + shell: cmd \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..23a2aac --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,115 @@ +name: Release + +on: + workflow_dispatch: + inputs: + tag: + description: The tag to be released, e.g. v0.1.0 + required: true + release_body: + description: Description of the release + required: false + +jobs: + create-release: + name: Create release + runs-on: ubuntu-latest + steps: + - name: Create GitHub release + id: create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.event.inputs.tag }} + release_name: ${{ github.event.inputs.tag }} + body: ${{ github.event.inputs.release_body }} + draft: true + prerelease: true + outputs: + upload_url: ${{ steps.create-release.outputs.upload_url }} + + build: + name: Build + runs-on: ${{ matrix.os }} + needs: create-release + strategy: + matrix: + # macos-14 is ARM64, macos-13 is x86-64 + #os: [ubuntu-latest, macos-14, macos-13, windows-latest] + os: [windows-latest] + wireshark_version: [wireshark-4.2.5] + #include: + # Ubuntu 22.04 Wireshark package version + # - os: ubuntu-latest + # wireshark_version: wireshark-3.6.2 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs.tag }} + + - name: Clone Wireshark + run: git clone --depth 1 --branch ${{ matrix.wireshark_version }} https://github.com/wireshark/wireshark + + - name: Install dependencies (Ubuntu) + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt update + sudo apt install -y ninja-build + sudo wireshark/tools/debian-setup.sh + + - name: Install dependencies (Macos) + if: matrix.os == 'macos-14' || matrix.os == 'macos-13' + run: wireshark/tools/macos-setup-brew.sh + + - name: Add msbuild to PATH (Windows) + if: matrix.os == 'windows-latest' + uses: microsoft/setup-msbuild@v2 + + - name: Install Wireshark headers (Unix) + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + uses: ./.github/actions/install-wireshark-headers-unix + + - name: Install Wireshark headers (Windows) + if: matrix.os == 'windows-latest' + uses: ./.github/actions/install-wireshark-headers-windows + + - name: Build Traceeshark (Unix) + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + run: | + make cmake + make + + - name: Build Traceeshark (Windows) + if: matrix.os == 'windows-latest' + run: | + set WIRESHARK_BASE_DIR=. + scripts\make_cmake.bat + scripts\make.bat + + - name: Create distribution archive (Unix) + if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14' || matrix.os == 'macos-13' + run: | + make dist + DIST_PATH=$(ls dist/*.zip | head -n 1) + DIST_NAME=$(basename $DIST_PATH) + echo "dist_archive=$DIST_NAME" >> $GITHUB_ENV + + - name: Create distribution archive (Windows) + if: matrix.os == 'windows-latest' + run: | + scripts\make_dist.bat + $DIST_PATH = Get-ChildItem -Path "dist/*.zip" | Select-Object -First 1 + $DIST_NAME = $DIST_PATH.Name + + - name: Upload distribution archive + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: dist/${{ env.dist_archive }} + asset_name: ${{ env.dist_archive }} + asset_content_type: application/zip