name: Release on: push: tags: - "[0-9]+.[0-9]+.[0-9]+" env: BUILD_TYPE: Release jobs: release: name: Create Release runs-on: ubuntu-latest steps: - name: Get Ref Names id: ref_name run: | echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - name: Create Release id: create_release uses: actions/create-release@v1.1.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.ref_name.outputs.SOURCE_TAG }} release_name: ${{ steps.ref_name.outputs.SOURCE_TAG }} body: RtBrick BNG Blaster Version ${{ steps.ref_name.outputs.SOURCE_TAG }} build: name: Build Release ${{matrix.os}} needs: [release] runs-on: ${{matrix.os}} strategy: matrix: os: [ubuntu-18.04, ubuntu-20.04, ubuntu-22.04] steps: - uses: actions/checkout@v3 - name: Get Ref Names id: ref_name run: | echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - name: Download RtBrick libdict shell: bash run: wget https://github.com/rtbrick/libdict/releases/download/v1.0.1/libdict-debian.zip - name: Install RtBrick libdict shell: bash run: unzip libdict-debian.zip; sudo dpkg -i libdict_1.0.1_amd64.deb; sudo dpkg -i libdict-dev_1.0.1_amd64.deb - name: Install Dependencies shell: bash run: sudo apt install -y libcunit1-dev libncurses-dev libssl-dev libjansson-dev libcmocka-dev libpcap-dev - name: Set export SOURCE_DATE_EPOCH to git commit time run: | echo "SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)" >> $GITHUB_ENV - name: Create Build Environment run: cmake -E make_directory ${{ github.workspace }}/build - name: Configure CMake shell: bash working-directory: ${{ github.workspace }}/build run: cmake $GITHUB_WORKSPACE -DBNGBLASTER_VERSION=${{ steps.ref_name.outputs.SOURCE_TAG }} -DBNGBLASTER_TESTS=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBNGBLASTER_OS=${{matrix.os}} - name: Build working-directory: ${{ github.workspace }}/build shell: bash run: cmake --build . --config $BUILD_TYPE - name: Test working-directory: ${{ github.workspace }}/build shell: bash run: ctest -C $BUILD_TYPE - name: Package working-directory: ${{github.workspace}}/build shell: bash run: cpack -G DEB - name: Get Release id: get_release uses: bruceadams/get-release@v1.3.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.ref_name.outputs.SOURCE_TAG }} - name: Upload Debian Package id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_release.outputs.upload_url }} asset_path: build/bngblaster_${{ steps.ref_name.outputs.SOURCE_TAG }}_amd64.deb asset_name: bngblaster-${{ steps.ref_name.outputs.SOURCE_TAG }}-${{ matrix.os }}_amd64.deb asset_content_type: application/gzip