diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml new file mode 100644 index 0000000..ce46be9 --- /dev/null +++ b/.github/workflows/create-release.yaml @@ -0,0 +1,39 @@ +name: Create release + +on: + push: + tags: + - "*.*.*" + +permissions: + contents: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Build and create release + env: + # https://stackoverflow.com/a/71158878/2502647 + GH_TOKEN: ${{ github.TOKEN }} + run: | + # https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/contexts#github-context + tag_name="${{ github.ref_name }}" + + is_prerelease=false + if [[ "${tag_name}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z][A-Za-z0-9]+)$ ]]; then + is_prerelease=true + fi + + release_name="${tag_name}" + scripts/build-release "$release_name" + + # Delete release if it already exists. + gh release view "$release_name" > /dev/null 2>&1 && gh release delete "$release_name" --yes + if [ "$is_prerelease" = true ]; then + gh release create "$release_name" --prerelease --generate-notes *.tar.gz checksum.txt + else + gh release create "$release_name" --generate-notes *.tar.gz checksum.txt + fi diff --git a/.github/workflows/project.yaml b/.github/workflows/project.yaml index eda2324..31e5ffc 100644 --- a/.github/workflows/project.yaml +++ b/.github/workflows/project.yaml @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v5 - run: | - docker run --rm --volume "$PWD:/mnt" koalaman/shellcheck:stable scripts/code-analysis + docker run --rm --volume "$PWD:/mnt" koalaman/shellcheck:stable scripts/code-analysis scripts/build-release code-analysis-phpstan: name: code-analysis/phpstan diff --git a/CHANGELOG.md b/CHANGELOG.md index ca809b1..093cec1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +* [PR-25](https://github.com/rimi-itk/dpl_pretix/pull/25) + * Set up creating releases on GitHub * [PR-22](https://github.com/rimi-itk/dpl_pretix/pull/22) * Added and improved event form settings * Made if possible to disallow deleting event instances diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/dpl_pretix.info.yml b/dpl_pretix.info.yml index 1871d94..20bbd22 100644 --- a/dpl_pretix.info.yml +++ b/dpl_pretix.info.yml @@ -13,4 +13,4 @@ dependencies: configure: dpl_pretix.settings "interface translation project": dpl_pretix -"interface translation server pattern": https://git.drupalcode.org/project/%project/-/raw/%version/translations/%project.%language.po +"interface translation server pattern": https://raw.githubusercontent.com/rimi-itk/%project/refs/tags/%version/translations/%project.%language.po diff --git a/scripts/build-release b/scripts/build-release new file mode 100755 index 0000000..4bfd221 --- /dev/null +++ b/scripts/build-release @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -o errexit -o errtrace -o noclobber -o nounset -o pipefail +IFS=$'\n\t' + +script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +script_name=$(basename "${BASH_SOURCE[0]}") +project_dir=$(cd "$(dirname "$script_dir")" && pwd) + +version="${1:-}" + +if [ -z "${version}" ]; then + (>&2 echo "Usage: $script_name version") + exit 1 +fi + +if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z][A-Za-z0-9]+)?$ ]]; then + (>&2 echo "Invalid version: ${version}") + exit 1 +fi + +project=dpl_pretix + +cd "$project_dir" + +release_dir="release/${project}" +release_name="$project-$version.tar.gz" + +rm -fr "${release_dir}" +mkdir -p "${release_dir}" + +git clone . "${release_dir}" +rm -fr "${release_dir}/.git" + +tar --directory "$(dirname "${release_dir}")" -cvf "${release_name}" "$(basename "${project}")" +sha256sum "${release_name}" >| checksum.txt + +ls "${release_name}" checksum.txt + +rm -fr "$(dirname "${release_dir}")"