name: Release General on: push: tags: - '[0-9]+.[0-9]+*' permissions: contents: write jobs: release: name: Build and upload release tarball if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Installing dependencies ... run: | sudo apt-get -y update sudo apt-get -y install pkg-config jq libcap-dev wget https://github.com/troglobit/libuev/releases/download/v2.4.1/libuev-2.4.1.tar.xz wget https://github.com/troglobit/libite/releases/download/v2.6.2/libite-2.6.2.tar.gz tar xf libuev-2.4.1.tar.xz tar xf libite-2.6.2.tar.gz (cd libuev-2.4.1 && ./configure && make -j9 && sudo make install-strip) (cd libite-2.6.2 && ./configure && make -j9 && sudo make install-strip) sudo ldconfig - name: Setting release variables ... id: build run: | ver=${GITHUB_REF#refs/tags/} echo "ver=${ver}" >> $GITHUB_OUTPUT if echo $ver | grep -qE '^[0-9]+\.[0-9]+(\.[0-9]+)?(-alpha|-beta|-rc)[0-9]*$'; then echo "pre=true" >> $GITHUB_OUTPUT else echo "pre=false" >> $GITHUB_OUTPUT fi if echo $ver | grep -qE '^[0-9.]+\.[0-9.]+(\.[0-9]+)?$'; then echo "latest=true" >> $GITHUB_OUTPUT else echo "latest=false" >> $GITHUB_OUTPUT fi - name: Creating Makefiles ... run: | ./autogen.sh ./configure --prefix=/usr --exec-prefix= --sysconfdir=/etc \ --localstatedir=/var --enable-x11-common-plugin \ --enable-testserv-plugin --with-watchdog \ --with-keventd --with-libsystemd - name: Enable unprivileged userns (unshare) run: | sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 - name: Build release ... run: | # Get version for finding distcheck build directory ./configure --version | head -1 ver=$(./configure --version | head -1 | awk '{print $NF}') dir=finit-$ver/_build/sub make -j1 release || (cat $dir/test/test-suite.log; false) ls -lF ../ mkdir -p artifacts/ mv ../*.tar.* artifacts/ - name: Upload Test Results if: always() uses: actions/upload-artifact@v4 with: name: finit-release-test-logs path: finit-*/_build/sub/test/*.log - name: Extract ChangeLog entry ... run: | awk '/-----*/{if (x == 1) exit; x=1;next}x' doc/ChangeLog.md \ |head -n -1 > release.md cat release.md - uses: ncipollo/release-action@v1 with: name: Finit v${{ github.ref_name }} prerelease: ${{ steps.build.outputs.pre }} makeLatest: ${{ steps.build.outputs.latest }} bodyFile: "release.md" artifacts: "artifacts/*"