diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..2a6484dea --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,112 @@ +name: GitHub Actions Release +permissions: + contents: read + contents: write +on: + push: + branches: + - master + tags: + - '*.*' + pull_request: + branches: + - master +jobs: + cppcheck-test: + runs-on: ubuntu-latest + steps: + - run: echo "This job was triggered by a ${{ github.event_name }} event." + - name: Checkout Repo + uses: actions/checkout@v5 + - name: install dependencies + run: | + sudo apt-get -y update && sudo apt-get install -y cppcheck && \ + cppcheck . --force --inline-suppr + build-test-ubuntu-ish: + strategy: + matrix: + os: [ubuntu-latest, ubuntu-22.04, ubuntu-22.04-arm] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v5 + - name: install dependencies + run: | + sudo apt-get -y update && sudo apt-get install -y build-essential + - name: build + run: | + ./configure && make && make check + timeout 300 src/iperf3 -s & + ./test_commands.sh localhost + build-test-macos-ish: + strategy: + matrix: + os: [macos-15, macos-14] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v5 + - name: install dependencies + run: | + brew install coreutils + - name: build + run: | + ./configure && make && make check + timeout 300 src/iperf3 -s & + ./test_commands.sh localhost + build-test-sanitizer-address: + runs-on: ubuntu-latest + steps: + - run: echo "Running address sanitzer" + - name: Checkout Repo + uses: actions/checkout@v5 + - name: install dependencies + run: | + sudo apt-get -y update && sudo apt-get install -y build-essential + - name: build + run: | + ./configure CFLAGS="-g -O0 -fsanitize=address" LDFLAGS="-fsanitize=address" && make && make check + timeout 300 src/iperf3 -s & + ./test_commands.sh localhost + release-draft: + name: Create Draft Release + runs-on: ubuntu-latest + needs: + - build-test-ubuntu-ish + - build-test-macos-ish + - build-test-sanitizer-address + steps: + - run: echo "Running release test " ${{ github.ref }} + - name: Checkout Repo + uses: actions/checkout@v5 + - name: install dependencies + run: | + sudo apt-get -y update && sudo apt-get install -y build-essential + - name: build + run: | + ./configure && make && make check + timeout 300 src/iperf3 -s & + ./test_commands.sh localhost + - name: create release tar + #./make_release tar ${{ github.ref}} + ./make_release tar 0.0.0 + - name: Test Release Version + run: | + ls + #tar -vxf iperf-${{ github.ref }}.tar + tar -vxf iperf-0.0.0.tar.gz + ./src/iperf3 --version + - name: Create draft release + #uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.ref_name }} + run: | + gh release create "$tag" \ + --repo="$GITHUB_REPOSITORY" \ + --title="${tag}" \ + --generate-notes + with: + draft: True + prerelease: True + tag_name: 0.0.0 + #tag_name: ${{ github.ref }} + #release_name: iperf-${{ github.ref }}