diff options
| -rw-r--r-- | .github/workflows/release.yml | 54 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 54 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7269512 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,54 @@ +name: release + +on: + push: + tags: + - 'v*' + +# Needed to create the draft release. +permissions: + contents: write + +jobs: + draft-release: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v7 + with: + submodules: recursive + - name: Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -y build-essential zlib1g-dev gettext libtool libluajit-5.1-dev + # Build two hardened variants: a self-contained one with no Lua, and one + # that links the lua: filter backend. Each is packaged with a checksum. + - name: Build and package both variants + run: | + package() { # $1 = release-build.sh arg, $2 = tarball suffix + ./tools/release-build.sh $1 + dist="cgit-${GITHUB_REF_NAME}${2}" + mkdir -p "$dist" + cp build/cgit "$dist/cgit.cgi" + cp assets/cgit.css assets/cgit.js assets/cgit.png assets/favicon.ico assets/robots.txt "$dist/" + cp cgitrc.5.txt README.txt LICENSE.txt AUTHORS "$dist/" + # Ship the filter scripts and the example configs, hooks and + # server setups that the docs and cgitrc reference. + cp -r extensions examples "$dist/" + tar czf "${dist}.tar.gz" "$dist" + sha256sum "${dist}.tar.gz" > "${dist}.tar.gz.sha256" + } + package "" "" + package "lua" "-lua" + # Creates a DRAFT release only. Review and publish it by hand. + - name: Create draft release + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release create "${GITHUB_REF_NAME}" \ + --draft \ + --title "cgit ${GITHUB_REF_NAME}" \ + --generate-notes \ + "cgit-${GITHUB_REF_NAME}.tar.gz" \ + "cgit-${GITHUB_REF_NAME}.tar.gz.sha256" \ + "cgit-${GITHUB_REF_NAME}-lua.tar.gz" \ + "cgit-${GITHUB_REF_NAME}-lua.tar.gz.sha256" |
