Git Product home page Git Product logo

anton-yurchenko / git-release Goto Github PK

View Code? Open in Web Editor NEW
166.0 3.0 14.0 133.45 MB

Publish a GitHub Release :package: with Assets :file_folder: and Changelog :bookmark:

Home Page: https://github.com/marketplace/actions/git-release

License: MIT License

Dockerfile 0.97% Go 95.57% Makefile 1.98% JavaScript 1.48%
ci cd github actions action github-actions release github-releases version changelog

git-release's Introduction

git-release's People

Contributors

anton-yurchenko avatar dependabot-preview[bot] avatar dependabot[bot] avatar imgbotapp avatar paulrberg avatar rgriebl avatar tajobe avatar treee111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

git-release's Issues

Regression in v4.2+

Description

Thanks for providing such a useful action!
There seems to be a regression introduced in v4.2.0, as the action does not work for this version or v4.2.1. I get the following output:

INFO release created successfully ๐ŸŽ‰               
INFO uploading asset                               asset=asset.zip
WARNING error uploading asset: Post "https://uploads.github.com/[...]": read tcp xxx.xx.xxx.xx:xxx->yyy.yy.yyy.yy:yyy: read: connection reset by peer  asset=asset.zip
INFO retrying (2/4) uploading asset in 9 seconds   asset=asset.zip

This is retried four times.
The release is added, but the assets are not uploaded.

If I revert to v.4.1.2, the action works as intended.
This is for a private repository.

Tag

v4.2.0 and v4.2.1

Workflow

(This is added after a build job.)

release:
    name: Create Release
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'push' }}
    needs: build
    steps:
      - uses: actions/checkout@v2
      - uses: actions/download-artifact@v2
        with:
          path: build
      - run: zip -r asset.zip Build
        working-directory: ./build
      - name: Release
        uses: docker://antonyurchenko/git-release:v4.1.2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PRE_RELEASE: "true"
          CHANGELOG_FILE: "CHANGELOG.md"
          ALLOW_EMPTY_CHANGELOG: "true"
          RELEASE_NAME_PREFIX: "Release: "
        with:
          args: |
            ./build/*.zip

Allow taking the latest changelog version instead of using TAG_PREFIX_REGEX

Description

In release candidate branches, we're having a suffix with the commit name (as we release version to test our code by some branch naming convention and we don' want conflicts on every push), I find it useful to just take the latest version in the changelog instead of searching for the specific version - which couldn't be used in my case, as it depends on the commit hash which is unknown.

Reference

Screenshots

Publish `action` on GitHub Marketplace

Description

GitHub actions release with git-release require additional steps in order to distribute the release on Marketplace.
It seems very natural for git-release to take care of that as well.

Automate adding a footer to the release note

Taking the release message from the CHANGELOG.md is a great way to automate releases, but I still have to manually amend each new release note with a "Please have a look (link here) for the installation instructions". (and this doesn't belong in the changelog).
It would be nice to have a new option (like e.g. RELEASE_NOTE_APPEND="<string that gets appended to the changelog md>" to automate this workflow.

CHANGELOG.md with empty Headings

Description

If you have a CHANGELOG that contains Headings that do not have a content, so the next hading will directly follow, it leads to strance formatting issues in the release change log. The list of changes then shows unter dirrerent heading. This is really bad, because for example Added will then show up under Removed.

Tag

v4.1.1

Workflow

https://github.com/BetonQuest/BetonQuest/blob/master/.github/workflows/build.yml

name: Build
on: [ push, pull_request ]

jobs:
  prepare:
    name: Prepare Build Variables
    runs-on: ubuntu-latest

    outputs:
      VERSION: ${{ steps.save_version.outputs.version }}
      VERSION_TYPE: ${{ steps.save_type.outputs.version_type }}
      PREVIOUS_VERSION_TAG: ${{ steps.save_tag.outputs.previous_version_tag }}
      CHANGES_IN_DOCS_ONLY: ${{ steps.save_changes.outputs.changes_in_docs_only }}

    steps:
      - name: Validate that a fork does not create a version tag
        if: "github.repository != 'BetonQuest/BetonQuest' && startsWith(github.ref,'refs/tags/v')"
        run: |
          echo "Version tags are not supported in forks!"
          exit 1
      - name: Checkout source code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Read version from pom.xml
        run: |
          MAVEN_VERSION=$(mvn help:evaluate -Dexpression=version -q -DforceStdout)
          echo "MAVEN_VERSION=$MAVEN_VERSION" >> $GITHUB_ENV
          echo "Collected the pom.xml version. The version is '$MAVEN_VERSION'"
      - name: Get the previous build-number tag from Development Build
        id: save_tag
        if: "github.repository == 'BetonQuest/BetonQuest' && ( github.ref == 'refs/heads/master' || startsWith(github.ref,'refs/heads/master_v') || startsWith(github.ref,'refs/tags/v') )"
        run: |
          PREVIOUS_VERSION_TAG=$(git tag -l ${MAVEN_VERSION}-build-number-* | head -n 1)
          echo "PREVIOUS_VERSION_TAG=$PREVIOUS_VERSION_TAG" >> $GITHUB_ENV
          echo ::set-output name=previous_version_tag::$PREVIOUS_VERSION_TAG
          echo "Collected the previous build-number tag. The tag is '$PREVIOUS_VERSION_TAG'"
      - name: Check for difference in documentation only
        id: save_changes
        if: "github.repository == 'BetonQuest/BetonQuest' && ( github.ref == 'refs/heads/master' || startsWith(github.ref,'refs/heads/master_v') )"
        run: |
          DIFF_OUTSIDE=$(git diff --quiet ${PREVIOUS_VERSION_TAG} -- . ':(exclude)documentation/' && echo Nothing || echo Changes)
          DIFF_INSIDE=$(git diff --quiet ${PREVIOUS_VERSION_TAG} -- documentation/ && echo Nothing || echo Changes)
          if [[ $DIFF_OUTSIDE == Nothing && $DIFF_INSIDE == Changes ]]; then CHANGES_IN_DOCS_ONLY=true; else CHANGES_IN_DOCS_ONLY=false; fi
          echo "CHANGES_IN_DOCS_ONLY=$CHANGES_IN_DOCS_ONLY" >> $GITHUB_ENV
          echo ::set-output name=changes_in_docs_only::$CHANGES_IN_DOCS_ONLY
          echo "Check for difference in documentation only. The value is '$CHANGES_IN_DOCS_ONLY'"
      - name: Generate build number for Development Build
        if: "github.repository == 'BetonQuest/BetonQuest' && ( github.ref == 'refs/heads/master' || startsWith(github.ref,'refs/heads/master_v') ) && env.CHANGES_IN_DOCS_ONLY == 'false'"
        uses: einaregilsson/build-number@v3
        with:
          token: ${{ secrets.github_token }}
          prefix: ${{ env.MAVEN_VERSION }}
      - name: Set version for 'Release Build'
        if: "startsWith(github.ref,'refs/tags/v')"
        run: |
          TAG_VERSION=${GITHUB_REF:11}
          echo "Collected the tag version. The version is '$TAG_VERSION'"
          if [ $TAG_VERSION != $MAVEN_VERSION ]; then echo "::error::The version of the tag and the version of the pom are not equal! Tag is '$TAG_VERSION' and pom is '$MAVEN_VERSION'."; exit 1; fi
          echo "MAVEN_VERSION=$MAVEN_VERSION" >> $GITHUB_ENV
          echo "VERSION_TYPE=release" >> $GITHUB_ENV
      - name: Set version for 'Development Build'
        if: "github.repository == 'BetonQuest/BetonQuest' && ( github.ref == 'refs/heads/master' || startsWith(github.ref,'refs/heads/master_v') )"
        run: |
          if [ $CHANGES_IN_DOCS_ONLY == true ]; then MAVEN_VERSION=${PREVIOUS_VERSION_TAG/build-number/DEV}; else MAVEN_VERSION=${MAVEN_VERSION}-DEV-${BUILD_NUMBER}; fi
          echo "MAVEN_VERSION=$MAVEN_VERSION" >> $GITHUB_ENV
          echo "VERSION_TYPE=developement" >> $GITHUB_ENV
      - name: Set version for 'Artifact Build'
        if: "github.repository != 'BetonQuest/BetonQuest' || !startsWith(github.ref,'refs/tags/v') && github.ref != 'refs/heads/master' && !startsWith(github.ref,'refs/heads/master_v')"
        run: |
          if [ ${{ github.repository }} != 'BetonQuest/BetonQuest' ]; then REPO=${{ github.repository }}-; fi
          MAVEN_VERSION=${MAVEN_VERSION}-DEV-ARTIFACT-${REPO}${{ github.run_number }}
          echo "MAVEN_VERSION=$MAVEN_VERSION" >> $GITHUB_ENV
          echo "VERSION_TYPE=artifact" >> $GITHUB_ENV
      - name: Save version to output variable
        id: save_version
        run: |
          echo "The version is '$MAVEN_VERSION'"
          echo ::set-output name=version::$MAVEN_VERSION
      - name: Save version type to output variable
        id: save_type
        run: |
          echo "The version type is '$VERSION_TYPE'"
          echo ::set-output name=version_type::$VERSION_TYPE

  build-artifacts:
    name: Build Artifacts
    needs: [ prepare ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Setup JDK 1.8
        uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: 8
      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Remove SNAPSHOT version for Release Build
        if: "env.VERSION_TYPE == 'release'"
        run: |
          mvn versions:set -DremoveSnapshot
      - name: Set CHANGELOG.md version
        run: |
          sed -i "s~## \[Unreleased\]~## \[${VERSION}\]~g" ./CHANGELOG.md
      - name: Set plugin version
        run: |
          sed -i "s~\${maven-version}~${VERSION}~g" ./src/main/resources/plugin.yml
      - name: Activate lf line ending check in editorconfig
        run: |
          sed -i "s~#end_of_line = ~end_of_line = ~g" ./.editorconfig
      - name: Set mirror for all repositories in settings.xml
        uses: whelk-io/maven-settings-xml-action@v15
        with:
          mirrors: |
            [
              {
                "id": "betonquest-mirror",
                "mirrorOf": "*",
                "url": "https://betonquest.org/nexus/repository/default/"
              }
            ]
      - name: Build with Maven. Phase 'package'
        if: "github.event_name == 'pull_request'"
        run: |
          mvn -B package
      - name: Build with Maven. Phase 'verify'
        run: |
          mvn -B verify
          mkdir -p build/artifacts
          cp -r target/artifacts/* build/artifacts/
          git diff > build/artifacts/changes.patch
      - name: Upload Artifact
        uses: actions/upload-artifact@v2
        with:
          name: BetonQuest-Artifacts
          path: build/artifacts

  build-documentation:
    name: Build Documentation
    needs: [ prepare ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Create LFS file list
        run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
      - name: Restore LFS cache
        uses: actions/cache@v2
        id: lfs-cache
        with:
          path: .git/lfs
          key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
      - name: Git LFS Pull
        run: git lfs pull
      - name: Setup Python 3.6
        uses: actions/setup-python@v2
        with:
          python-version: '3.6'
          architecture: 'x64'
      - name: Select mkDocs requirements
        run: |
          [ -z $MKDOCS_MATERIAL_INSIDERS ] && TXT=docs-requirements.txt || TXT=docs-requirements-insiders.txt
          echo "TXT=$TXT" >> $GITHUB_ENV
        env:
          MKDOCS_MATERIAL_INSIDERS: ${{ secrets.MKDOCS_MATERIAL_INSIDERS }}
      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/config/${{ env.TXT }}') }}
          restore-keys: |
            ${{ runner.os }}-pip-
      - name: Install dependencies
        run: |
          python3 -m pip install --upgrade pip
          pip install -r ./config/$TXT
        env:
          MKDOCS_MATERIAL_INSIDERS: ${{ secrets.MKDOCS_MATERIAL_INSIDERS }}
      - name: Set CHANGELOG.md version
        run: |
          sed -i "s~## \[Unreleased\]~## \[${VERSION}\]~g" ./CHANGELOG.md
          DATE=$(date +%Y-%m-%d)
          sed -i "s~\${current-date}~$DATE~g" ./CHANGELOG.md
          cp ./CHANGELOG.md './documentation/User-Documentation/CHANGELOG.md'
      - name: Build with mkdocs
        run: |
          mkdocs build
          mkdir -p build/documentation
          cp -r target/documentation/* build/documentation/
          git diff > build/documentation/changes.patch
      - name: Upload documentation
        uses: actions/upload-artifact@v2
        with:
          name: BetonQuest-Documentation
          path: build/documentation

  deploy-artifacts:
    name: Deploy Artifacts
    if: "needs.prepare.outputs.VERSION_TYPE == 'release' || needs.prepare.outputs.VERSION_TYPE == 'developement' && needs.prepare.outputs.CHANGES_IN_DOCS_ONLY == 'false'"
    needs: [ prepare, build-artifacts, build-documentation ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Setup JDK 1.8
        uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: 8
      - name: Download Artifacts
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Artifacts
          path: build/artifacts/
      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-
      - name: Load target folder and patch file
        run: |
          mkdir -p target/artifacts
          cp -r build/artifacts/* target/artifacts/
          git apply build/artifacts/changes.patch
          rm build/artifacts/changes.patch
      - name: Set mirror for all repositories in settings.xml
        uses: whelk-io/maven-settings-xml-action@v15
        with:
          servers: |
            [
              {
                "id": "betonquest",
                "username": "${env.REPOSITORY_USER}",
                "password": "${env.REPOSITORY_PASS}",
                "configuration": {
                  "httpConfiguration": {
                    "all": {
                      "usePreemptive": "true"
                    }
                  }
                }
              }
            ]
          mirrors: |
            [
              {
                "id": "betonquest-mirror",
                "mirrorOf": "*",
                "url": "https://betonquest.org/nexus/repository/default/"
              }
            ]
      - name: Publish to Maven Repository
        run: |
          mvn -B deploy
        env:
          REPOSITORY_URL: ${{ secrets.REPOSITORY_URL }}
          REPOSITORY_USER: ${{ secrets.REPOSITORY_USER }}
          REPOSITORY_PASS: ${{ secrets.REPOSITORY_PASS }}

  deploy-documentation:
    name: Deploy Documentation
    concurrency: gh-pages-deploy
    if: "needs.prepare.outputs.VERSION_TYPE == 'release' || needs.prepare.outputs.VERSION_TYPE == 'developement'"
    needs: [ prepare, build-artifacts, build-documentation ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Create LFS file list
        run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
      - name: Restore LFS cache
        uses: actions/cache@v2
        id: lfs-cache
        with:
          path: .git/lfs
          key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
      - name: Git LFS Pull
        run: git lfs pull
      - name: Setup Python 3.6
        uses: actions/setup-python@v2
        with:
          python-version: '3.6'
          architecture: 'x64'
      - name: Download Documentation
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Documentation
          path: build/documentation/
      - name: Select mkDocs requirements
        run: |
          [ -z $MKDOCS_MATERIAL_INSIDERS ] && TXT=docs-requirements.txt || TXT=docs-requirements-insiders.txt
          echo "TXT=$TXT" >> $GITHUB_ENV
        env:
          MKDOCS_MATERIAL_INSIDERS: ${{ secrets.MKDOCS_MATERIAL_INSIDERS }}
      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/config/${{ env.TXT }}') }}
          restore-keys: |
            ${{ runner.os }}-pip-
      - name: Install dependencies
        run: |
          python3 -m pip install --upgrade pip
          pip install -r ./config/$TXT
        env:
          MKDOCS_MATERIAL_INSIDERS: ${{ secrets.MKDOCS_MATERIAL_INSIDERS }}
      - name: Load target folder and patch file
        run: |
          mkdir -p target/documentation
          cp -r build/documentation/* target/documentation/
          git apply build/documentation/changes.patch
          rm build/documentation/changes.patch
      - name: Deploy Release to Github Pages
        if: "env.VERSION_TYPE == 'release'"
        run: |
          git config --global user.name "BetonQuest-Bot"
          git config --global user.email "[email protected]"

          mike deploy --push --update-aliases ${VERSION} RELEASE
          mike delete --push ${VERSION}-DEV
      - name: Deploy Developement to Github Pages
        if: "env.VERSION_TYPE == 'developement'"
        run: |
          git config --global user.name "BetonQuest-Bot"
          git config --global user.email "[email protected]"

          IFS='-' read -r -a array <<< "$VERSION"
          [ ${{ github.ref }} == 'refs/heads/master' ] && mike deploy --push --update-aliases ${array[0]}-DEV DEV || mike deploy --push --update-aliases ${array[0]}-DEV

  create-release:
    name: Create Release Build
    if: "always() && !cancelled() && needs.prepare.outputs.VERSION_TYPE == 'release'"
    needs: [ prepare, deploy-artifacts, deploy-documentation ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Check previous Jobs
        if: "needs.deploy-artifacts.result != 'success' || needs.deploy-documentation.result != 'success'"
        run: |
          exit 1
      - name: Download Artifacts
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Artifacts
          path: build/artifacts/
      - name: Download Documentation
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Documentation
          path: build/documentation/
      - name: Load target folder
        run: |
          mkdir -p target/artifacts
          mkdir -p target/documentation
          cp -r build/artifacts/* target/artifacts/
          cp -r build/documentation/* target/documentation/
          rm build/artifacts/changes.patch
          rm build/documentation/changes.patch
      - name: Zip Documentation
        run: |
          cd build/documentation/
          find . -name \*.mp4 -type f -delete
          zip -r Documentation.zip .
          cd ../..
      - name: Set CHANGELOG.md version
        run: |
          sed -i "s~## \[Unreleased\]~## \[${VERSION}\]~g" ./CHANGELOG.md
          DATE=$(date +%Y-%m-%d)
          sed -i "s~\${current-date}~$DATE~g" ./CHANGELOG.md
      - name: Create release
        uses: docker://antonyurchenko/git-release:latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          DRAFT_RELEASE: false
          PRE_RELEASE: false
          CHANGELOG_FILE: CHANGELOG.md
          RELEASE_NAME: BetonQuest ${{ env.VERSION }}
        with:
          args: |
            build/artifacts/BetonQuest.jar
            build/documentation/Documentation.zip
      - name: Delete obsolete git tag
        run: |
          git push origin :${PREVIOUS_VERSION_TAG}
      - name: Publish to Discord
        if: "always()"
        run: |
          bash .github/scripts/discord.sh
        env:
          JOB_STATUS: ${{ job.status }}
          WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }}
          VERSION: ${{ env.VERSION }}
          RELEASE: "release"

  create-developement:
    name: Create Developement Build
    if: "always() && !cancelled() && needs.prepare.outputs.VERSION_TYPE == 'developement' && needs.prepare.outputs.CHANGES_IN_DOCS_ONLY != 'true'"
    needs: [ prepare, deploy-artifacts, deploy-documentation ]
    runs-on: ubuntu-latest

    steps:
      - name: Set variables from 'Prepare Build Variables'
        run: |
          echo "VERSION=${{ needs.prepare.outputs.VERSION }}" >> $GITHUB_ENV
          echo "VERSION_TYPE=${{ needs.prepare.outputs.VERSION_TYPE }}" >> $GITHUB_ENV
          echo "PREVIOUS_VERSION_TAG=${{ needs.prepare.outputs.PREVIOUS_VERSION_TAG }}" >> $GITHUB_ENV
          echo "CHANGES_IN_DOCS_ONLY=${{ needs.prepare.outputs.CHANGES_IN_DOCS_ONLY }}" >> $GITHUB_ENV
      - name: Checkout source code
        uses: actions/checkout@v2
      - name: Check previous Jobs
        if: "needs.deploy-artifacts.result != 'success' || needs.deploy-documentation.result != 'success'"
        run: |
          exit 1
      - name: Download Artifacts
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Artifacts
          path: build/artifacts/
      - name: Download Documentation
        uses: actions/download-artifact@v2
        with:
          name: BetonQuest-Documentation
          path: build/documentation/
      - name: Load target folder
        run: |
          mkdir -p target/artifacts
          mkdir -p target/documentation
          cp -r build/artifacts/* target/artifacts/
          cp -r build/documentation/* target/documentation/
          rm build/artifacts/changes.patch
          rm build/documentation/changes.patch
      - name: Zip Documentation
        run: |
          cd build/documentation/
          find . -name \*.mp4 -type f -delete
          zip -r Documentation.zip .
          cd ../..
      - name: Prepare developement variables
        run: |
          IFS='-' read -r -a array <<< "$VERSION"
          echo "VERSION_KEY=${array[0]}" >> $GITHUB_ENV
          echo "VERSION_NUMBER=${array[2]}" >> $GITHUB_ENV
          echo "BRANCH_NAME=${GITHUB_REF:11}" >> $GITHUB_ENV
      - name: Create developement
        run: |
          if [ -z "$PASSWORD" ]; then echo "WARNING! You need to pass the SNAPSHOT_UPLOAD_PASSWORD environment variable."; exit 1; fi
          RESPONSE="$(curl --form-string "secret=$PASSWORD" --form-string "version=$VERSION_KEY" --form-string "versionNumber=$VERSION_NUMBER" --form-string "runID=$RUN_ID" --form-string "branch=$BRANCH_NAME" --form-string "commitHash=$COMMIT_HASH" --form "plugin=@\"$PLUGIN\"" --form "docs=@\"$DOCS\"" https://betonquest.org/api/v1/builds/upload)"
          if [ "$RESPONSE" != "Upload successful" ]; then echo "WARNING! The upload was not successful. The response was '$RESPONSE'"; exit 1; fi
        env:
          PASSWORD: ${{ secrets.SNAPSHOT_UPLOAD_PASSWORD }}
          RUN_ID: ${{ github.run_id }}
          COMMIT_HASH: ${{ github.sha }}
          PLUGIN: "build/artifacts/BetonQuest.jar"
          DOCS: "build/documentation/Documentation.zip"
      - name: Publish to Discord
        if: "always()"
        run: |
          bash .github/scripts/discord.sh
        env:
          JOB_STATUS: ${{ job.status }}
          WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }}

Changelog

https://github.com/BetonQuest/BetonQuest/blob/master/CHANGELOG.md

# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased] - ${current-date}
### Added
### Changed
### Deprecated
### Removed
### Fixes
### Security

## [1.12.6] - 2021-10-14
### Added
### Changed
- `action` objective cancels now the event, before other plugins check for it (better third-party support)
### Deprecated
### Removed
### Fixes
- added missing config options to the default config
- version check for ProtocolLibIntegrator
- quest item empty name comparison
- customized built-in messages that use the advancementIO
- BlockSelector without a namespace but starting with `:` did not work and threw an exception
### Security

## [1.12.5] - 2021-08-11
### Added
- Version checks for ProtocolLib and Shopkeepers support
### Changed
### Deprecated
### Removed
### Fixes
- MMOCoreClassCondition used the class display name instead of the class ID to compare classes.
- the take event called Paper's ItemStack.getI18NDisplayName() instead of Spigot's ItemStack.getItemMeta().getDisplayName
- fixed hooking in ProtocolLib
- max_npc_distance was set to 5.3 to prevent instant quiting of conversations
- conversation IO menu sometimes leave an armorstand spawned
- sometimes messages in a conversation are not send when packet interceptor is used
### Security

## [1.12.4] - 2021-07-05
### Added
- Vietnamese translation
- added invOrder setting to (mmoitem)take event
- the mmoitemtake event & mmoitem condition now also check the backpack
  - this will not work until the item rework / until the backpack contains NBT data
### Changed
- `/q create package` command does now create an empty package
### Deprecated
### Removed
### Fixes
- `brew` objective triggers all the time and counts correctly
- only generate default package if BetonQuest folder is empty
- fix backpack passing references instead of clones
- fixed combat event packet that changed with MC 1.17
### Security
- the take event is now threadsafe

## [1.12.3] - 2021-05-05
### Added
- FastAsyncWorldEdit compatibility
- craft objective variable `total`
- curly braces in math.calc variables for using variables with math symbols
- player attribute to QuestCompassTargetChangeEvent
### Changed
### Deprecated
- math variable now allows rounding output with the ~ operator
### Removed
### Fixes
- parsing of math variable
- craft objective: multi-craft, drop-craft, hotbar/offhand-craft, shift-Q-craft and any illegal crafting is correctly detected,
- craft objective variables `left` and `amount` were swapped
- NPC hider for not spawned NPCs
- Conversation IO Chest load NPC skull async from Citizens instead of sync
- block selector didn't respect regex boundary
- block selector regex errors are now properly handled
- `default_journal_slot: -1` now uses the first free slot instead of the last hotbar slot
- mmobkill objective notify argument not working correctly
- `fish` objective didn't count the amount of fish caught in one go (if modified by e.g. mcMMO)
- fixed smelt objective: only taking out normally did count, shift-extract got canceled
- empty values in `variable` objective now don't break on player join
- PacketInterceptor sync wait lag
- notifications using the chatIO were catched by the conversation interceptor
- case insensitive `password` objective did not work if the password contained upper case letters
- global variables didn't work in quester names
- quest items couldn't interact with any blocks, which also prevented them from mining blocks
- the shear objective's sheep couldn't have underscores in their names
- backpack passing references instead of clones
- compass event now allows global variables
### Security
- it was possible to put a QuestItem into a chest

## [1.12.2] - 2021-03-14
### Added
### Changed
### Deprecated
### Removed
### Fixes
- `npcrange` objective is triggered at wrong time
- Citizens compatibility for not spawned NPCs
- NotifyIOs are case-sensitive
- all mmo objectives trigger for everyone
- command event includes 'conditions:...' into the command
- tags and points are now thread safe
- compatibility for packet interceptor on papermc
- fix books not parsing color codes
### Security

## [1.12.1] - 2021-02-05
### Added
- Ingame update notification if the updater found an update
### Changed
### Deprecated
### Removed
### Fixes
- The Autoupdater got a small fix, and the fail safety for broken downloads was improved
- `npcrange` objective does not throw errors when the player is in a different world than the NPC
- The block objectives notify could not be disabled
- fixed ConcurrentModificationException in EntityHider
- fixed notify enabled by default for some objectives
- fixed some grammar mistakes in debug messages
- fixed npc teleport and walk operations in unloaded chunks
- fixed inaccurate location variable decimal rounding
- fixed NullPointerException for NPCs with conversation
- fixed resuming to path finding when conversation interrupt movement
- fixes Die objective teleporting player during the tick
### Security

## [1.12.0] - 2021-01-10
### Added
- Tags and Objectives can now be removed with a static event for all players, even if they are not online
  * deletepoint event can now also be called to delete all points for all players
  * journal del event can now also be called as static
- Added integration for TeamRequiem plugins (MMOCore, MMOItems, MMOLib)
  * Conditions:
    - MMOClass condition (type & class)
    - MMOProfession condition
    - MMOAttribute condition
    - MMOItems item condition (item in inventory)
    - MMOItems hand condition (item in main/offhand)
    - MMOLib stats condition  (a ton of stats from Core and Items combined)
  * Objectives:
    - Level X Profession to X Level
    - Craft / Upgrade X Item within Inventory
    - Craft X item
    - Apply Gem Stone to Item
    - Upgrade Item via Consumable
    - Cast Item ability
    - Cast Class ability
    - Mine MMOBlock
  * Events:
    - Add mmo class level or exp
    -๏ธ Add mmo professional level or exp
    -๏ธ๏ธ Add Skill points
    -๏ธ๏ธ Add attribute points
    -๏ธ๏ธ Add attribute reallocation points
    -๏ธ๏ธ Add class points
    -๏ธ๏ธ Give Item ๏ธ
    -๏ธ Take Item
- equal argument for condition 'empty'
- Condition 'wand' can now have an option '
- Implementing 1.15 support for Events and Conditions
- New Chat event, that write chat messages for a player
- Added 'pickup' objective
- Added stopnpc event, that will stop the movenpc event
- Added teleportnpc event, that will stop the movenpc event and teleport the npc to a given location
- Added option check_interval for holograms in custom.yml and added GlobalVariable support
- Added deletepoint event to delete player points
- Added mythicmobdistance condition that will check if a specific MythicMobs entity is near the player
- Added level argument to 'experience' objective and condition
- Added prefix argument in password objective
- Added level argument to 'experience' objective and condition
- Added prefix argument in password objective
- Added fail argument in password objective
- Added notify option to point event
- Added an interceptor that does not intercept: 'none'
- Added ConditionVariable. It returns true or false based on whether a player meets a condition.
- Improved bStats
- Added login objective
- Added period argument to folder event
- Added variable support to the Notify system
- Added variable support to the PickRandomEvent
- Added "acceptNPCLeftClick: true / false" config option
- Added optional "minlevel" and "maxlevel" arguments to mmobkill objective
- Added new options 'inside/outside' for npcrange objective, support for multiple npcs and improved performance
- Added new Event QuestCompassTargetChangeEvent that is triggered when a new CompassTarget is set. It is also possible to cancel it
- added multi language support for Notify system
- Added 'notifyall' event to broadcast a notification
- Added new notification IO 'sound'
- Added 'jump' objective
- Added left, amount and total properties to player kill objective
- Added 'neutralMobDeathAllPlayers' argument to the `mmobkill` objective
- Added custom model data support for items
- Added new config option 'npcInteractionLimit' default 500 that limits the click on an NPC to every x milliseconds
- Added PlayerHider to hide specific players for specified players
### Changed
- devbuilds always show notifications for new devbuilds, even when the user is not on a _DEV strategy
- Items for HolographicDisplays are now defines in items.yml
- Command 'bq rename' can now be used for globalpoints
- The old updater was replaced with a new one
- AchievementCondition is replaced with AdvancementCondition
- Renamed objective Potion to Brew
- Renamed 'monsters' condition to 'entities'
- Renamed 'xp' event to 'experience'
- new config option mysql.enabled
    - if you already have an installation, you can add this manually to get rid of the mysql warning during startup
- events in conversation options are now executed before npc or player responses are printed
- message event now ignores chat interceptors during conversation
- tame objective now works with all tamable mobs, including possible future ones
- improved chestput waring for locations without a chest
- reworked location variable: %location.(xyz|x|y|z|yaw|pitch|world|ulfShort|ulfLong)(.NUMBER)%
- multiple conditions and objectives now use the block selector. The same applies for the setblock event.
- static events now allow comma separated event list
- changed the `npc_effects` behavior to be package wide instead of global if no NPC is defined in the custom.yml
- EventHandlers in general updated to ignore cancelled events
- improved performance for condition checks (Bug where it took seconds to check for conditions)
- improved performance for conversation checks (Bug where it took seconds to check for conversation options)
- The plugin will no longer be loaded before the worlds are loaded
- Citizens Holograms are now more robust on reload and reload faster
- Added player death/respawn behavior to Region Objective and improved performance
- changed smelting and fish objective from material to BlockSelector
### Deprecated
- Marked message event for removal in BQ 2.0
- Marked playsound event for removal in BQ 2.0
- Marked title event for removal in BQ 2.0
### Removed
- Removed Deprecated Exceptions
- Removed RacesAndClasses support
- Removed LegendQuest support
- Removed BoutifulAPI support
- Removed the CLAY NPC
- removed legacy material support
- removed BetonLangAPI support
- removed PlayerPoints support(this can still be used via Vault)
### Fixes
- event priority for block objective
- linebreaks in strings
- notify:1 for block objective did not work
- asynchronous database access for objectives
- Renaming an NPC will not cause an NPE for a NPC Hologram
- Objective 'craft' now supports shift-clicking
- Fixed generation of default package
- fixed line breaks
- fixed events notify interval of 1
- fixed potion/brew objective notify
- fixed the bug and removed its workaround when chest converationIO has no available start points
- fixed journal line breaking
- fixed movement of movenpc event
- fixed npcmove event
- fixed a bug, where a player causes an exception when he spams right left clicks in menu conversationIO
- fixed outdated Brewery dependency
- fixed message duplication when using the packet interceptor
- fixed Journal interaction with Lectern
- fixed QuestItems ignoring durability
- fixed QuestItem interaction with Lectern, Campfire and Composter
- update journal after closing magic inventory
- fixed lever event not toggling the lever
- fixed ConcurrentModificationException in PlayerData
- fixed issue where the PacketInterceptor prints the message tag in the chat
- fixed database backups breaking with some languages
- fixed when PlaceholderAPI variables contains dots
- fixed quester name not support & as color code
- fixed Region Objective listen to player teleport event
- packet Interceptor stops 1 second AFTER the end of the conversation to allow slow messages to still have its chat protection
- fixed notify couldn't use variables that contain `:`
- improved stability for brew objective when other plugins affect brewing
- fixed region and npcregion condition
- fixed debugging dose not start on server startup
- fixed ghost holograms caused by reloading BQ
- fixed deadlock(Server crash) in Conversations with a large amount of npc and player options with a large amount of conditions
- fixed door event not working correctly
- fixed `1 give` command exceptions
### Security
- fixed issue, where objectives that count things are out of sync with the database. This has also affected BungeeCord support

## [1.11.0] - 2020-01-02
### Added
- Support Minecraft 1.8 - 1.13.2+
- New Block Selector to select blocks by material and attributes. Can use wildcards as well.
- New 'mooncycle' condition - Determine what phase the moon is in
- Chest ConversationIO can now be configured to show NPC text per option.
- New 'extends' keyword in conversation to allow inheritance
- New 'conversation' condition that will return true if there is at least 1 conversation option available to an NPC
- New 'nujobs_canlevel' condition - True if player can level in Jobs Reborn
- New 'nujobs_hasjob' condition - True if player has job in Jobs Reborn
- New 'nujobs_jobfull' condition - True if a job is full in Jobs Reborn
- New 'nujobs_joblevel' condition - True if player has level in Jobs Reborn
- New 'nujobs_addexp' event - Add experience to player in Jobs Reborn
- New 'nujobs_addlevel' event - Add a level to player in Jobs Reborn
- New 'nujobs_dellevel' event - Remove a level from player in Jobs Reborn
- New 'nujobs_joinjob' event - Joins a player to a job in Jobs Reborn
- New 'nujobs_leavejob' event - Leaves a job in Jobs Reborn
- New 'nujobs_setlevel' event - Set a player's level in Jobs Reborn
- New 'nujobs_joinjob' objective - Triggers when player joins job in Jobs Reborn
- New 'nujobs_leavejob' objective - Triggers when a player leaves job in Jobs Reborn
- New 'nujobs_levelup' objective - Triggers when a player levels up in Jobs Reborn
- New 'nujobs_payment' objective - Triggers when a player receives money from Jobs Reborn
- New Notification System
- New 'notify' event - Create custom notifications on the ActionBar, BossBar, Title, Subtitle and Achievement
- New 'menu' conversation IO - Requires ProtocolLib. See: https://www.youtube.com/watch?v=Qtn7Dpdf4jw&lc
- New 'packet' chat interceptor - Requires ProtocolLib.
- new '/q debug' command - Enable or disable the debug mode
### Changes
- Event 'effect' can have 'ambient', 'hidden' and 'noicon' parameters
- Event 'effect' has '--ambient' parameter deprecated with a non fatal warning.
- Priority for 'journal_main_page' entries not unique anymore, it only orders the entries. Same priority sort it alphabetic
- Objective 'interact' can have 'loc', 'range' parameters
- Objective 'region' can optionally have 'entry' and/or 'exit' to only trigger when entering or exiting named region
- The old 'Debug' class was replaced by a more useful and powerful 'LogUtils' class
### Fixed
- Resolve variables in journal pages.
- WATER and LAVA can be specified in Action Objective
- Journals without dates now don't leave blank lines
- Journal separator can be disabled or customized
- NPCs now spawn correct, if they have a npc_hologram
- fixed NPE when no journal entry exists
- The default package is now compatible with all versions

## [1.10] - 2019-09-16
- Development versions can be full of bugs. If you find any, please report them on GitHub Issues.
- This version is only compatible to Shopkeepers v2.2.0 and above
### Added
- npc holograms above the head that follow the npc (requires HolographicDisplays)
- New 'facing' condition - check if player is facing a direction 
- New 'looking' condition - check if player looks at a block
- New 'deleffect' event - delete potion effects of a player
- New '%citizen%' variable - display a npcs name or coordinates (requires Citizens)
- New 'npcrange' objective - player has to go towards a npc (requires Citizens)
- New 'npcdistance' condition - check if a player is close to a npc (requires Citizens)
- New 'npclocation' condition - check if a npc is at a location (requires Citizens)
- New 'npcregion' condition - check if a npc is inside a region (requires Citizens & WorldGuard)
- New 'killmob' event - remove the mobs that you spawned with 'spawn' event
- New '/q version' command - get the version used
- New 'partialdate' condition - check if the date matches a pattern
- New 'dayofweek' condition - check if its weekend or monday
- New 'realtime' condition - check if its a specific time
- New 'xp' event - give a player xp.
- Global objecties (objectives that  are active for all players directly after start)
- Global tags and points (tags ad points that are not set for one specific player)
- New 'globaltag' event 
- New 'globaltag' condition
- New 'globalpoint' event 
- New 'globalpoint' condition
- New 'opsudo' event - Sudo commands with op permissions
- Brewery integration ('drunk', 'drunkquality' and 'hasbrew'conditions, 'givebrew' and 'takebrew' events) 
- New 'title' event - display titles without the whole command hassle
- New 'playsound' event - plays a sound
- New 'fly' condition - check if the player is flying with Elytra
- New 'biome' condition - check the player's current biome
- New 'interact' objective - interact with an entity
- Conversations can individually override conversation IO type
- NPCs can be individually hidden from players if ProtocolLib is installed
### Changes
- 'compass' event can now directly set a players compass
- holograms from HolographicDisplays now can display items
- 'movenpc' event now allows multiple locations to create a path
- 'enchant' objective now allows multiple enchantments
- 'particle' event can now create client side only particles
- 'chest' converstionIO now dosn't display messages to chat for the old behaviour use 'combined'
- 'money' event can now notify you about how much you recieved
- 'mmobkill' objective now allows multiple mobs
- Translation system is integrated with BetonLangAPI
- NPC heads in "chest" conversation IO will display correct Citizens skin
- NPC particles (EffectLib integration) can be displayed to individual players
- Condition command allows checking static conditions
- 'testforblock' condition can now check for specific data value
- 'delay' objective and 'folder' event accept more time units
- 'password' objective also accepts commands
- Commands can be tab-completed
### Fixed
- Fixed bug where players could take out items from the chest conversationIO
- Removed possibilities of dropping/transfering quest items and the journal
- Lots of smaller bugfixes

## [1.9.6] - 2017-11-27
### Fixed
- Update version to 1.9.6

## [1.9.5] - 2017-11-27
### Fixed
- Fixed global locations loading before the worlds
- Fixed loading order of Citizens/EffectLib integration
- Fixed restarting of persistent objectives not working correctly
- Fixed "unbreakable" tag not being read from items

## [1.9.4] - 2017-11-02
### Fixed
- Fixed broken integration loading

## [1.9.3] - 2017-11-01
### Fixed
- NPC and mob kills will be correctly registered when killed by indirect means
- Replaced error with a nice message when config updating fails to start
- Unbreakable items are no longer breakable in newer Spigot releases
- Moved compatibility hooks to the first server tick to hook into lazy plugins
- Colors of text in "chest" conversations are now correctly applied over text breaks
- Added a nice message when conversation option is missing "text"
- Fixed a rare crash when NPC was stopped and its target was outside of loaded chunks
- Fixed checking item amounts in the backpack
- Allowed negative data in items for compatibility with dark magics
- Removed Denizen script checking, since it didn't work sometimes

## [1.9.2] - 2017-07-09
### Fixed
- Conversations won't allow taking items from GUI windows
- When using wrong 'point' or 'item' variable there will be a nice error message
- NPCs can be safely despawned while in the middle of a conversation
- Error on '/q reload' when NPC particles are disabled is now gone
- Items for compass buttons are now correctly loaded
### Changes
- These events are now correctly persistent: clear, explosion, lightning, setblock, spawn
- BetonQuest is using bStats instead of McStats

## [1.9.1] - 2017-04-18
### Fixed
- Holograms are now correctly loaded

## [1.9] - 2017-04-03
Notes:
- This version breaks compatibility with plugins hooking into BetonQuest. I'm sorry for that. Ask devs to update these plugins.
- The error reporting feature was improved. If you see a lot of error messages when reloading the plugin (not stack traces, just regular, human-readable messages), it's probably because there are real problems in your quests.
- BetonQuest won't accept ".yml" extensions at the end of conversation names in "main.yml". If your conversations aren't working (the plugin says they don't exist), check if you have these extensions IN THE "MAIN.YML" file and remove them.
### Fixed
- 'action' objective now detects fire interaction
- 'empty' condition now skips armor and off-hand slots
- Items can be used cross-package
- New sound names are now used by default
- Fixed doubled quest items when dropping them is blocked by another plugin
- Lore and name now appear on heads and written books with custom data
- Fix error when trying to add air (empty hand) with "/q item" command
- Main page now can exceed a single page in the journal
- The plugin will reconnect to the database if something goes wrong
- Fishing objective now only accepts stuff from water
- Properties in 'mobkill' objective (left and amount) has switched places
### Changes
- Complete rewrite of item conditioning - read the docs to discover new features (previous syntax is still working without any behavior changes)
- Books in items.yml now automatically wrap pages, like the journal and main page
- Main page and entries in the journal can manually split pages with '|' character
- New lines in conversations can be made with "\n"
- Interval in 'delay' objective is now configurable
- 'craft' and 'potion' objectives now use items defined in items.yml file
- Potion items are now defined with 'type:' argument instead of data value
- You can now use spaces between "first" options in conversations
- Static events can now be fired with "/q event - eventID" command
- Locations can have vectors defined directly in instruction strings
- Locations can be variables which resolve to location format
- Point condition can now check exact point amount with 'equal' argument
- In 'chest' conversation IO items can be specified with durability values after a colon
- Mobs spawned with 'spawn' event can have armor, items in hands and custom drops
- Unbreakability of quest items can be disabled (if you want to use "unbreakable" tag instead)
- Ranges in locations are now a separate argument ("10;20;30;world;4" is now "10;20;30;world 4")
- "main.yml" is now the only required file in the package. Empty files can be deleted
- Custom settings (i.e. EffectLib particle effects) are moved from "main.yml" to "custom.yml"
### Added
- Compatibility with Shopkeepers ('shopkeeper' event, 'shopamount' condition)
- Compatibility with PlaceholderAPI ('ph' variable and 'betonquest' placeholder)
- Compatibility with HolographicDisplays (holograms visible based on conditions)
- Compatibility with RacesAndClasses (race, class, exp, level, mana conditions/events/variables)
- Compatibility with LegendQuest (race, class, attribute, karma conditions/variables)
- Compatibility with WorldEdit ('paste' a schematic event)
- New condition 'riding' - check if the player is riding an entity
- New condition 'world' - check the world in which the player is
- New condition 'gamemode' - check player's game mode
- New condition 'achievement' - check if the player has an achievement
- New condition 'variable' - check if a variable matches a pattern
- New event 'lever' - switches a lever
- New event 'door' - opens/closes doors, trapdoors and gates
- New event 'if' - run one of two events, depending on condition
- New event 'movenpc' - move Citizens NPC to a location
- New event 'variable' - set a variable in "variable" objective
- New objective 'vehicle' - entering a vehicle entity
- New objective 'variable' - lets players define their own variables for you to use
- New objective 'kill' - kill players who meet specified conditions
- New objective 'breed' - breed animals (only 1.10.2+)
- New variable '%location%' - resolves to player's location
- Keyword "unbreakable" can be used in items to make them unbreakable
- When a conversation option is selected, a Bukkit event is called (for developers)
- Chat can be paused while in conversation, it will display when finished
- Objectives can be completed for players with "/q objective player complete"
- Option 'full_main_page' controls if the main page is a separate page in the journal
- Mobs spawned with 'spawn' can be "marked"; you can require marked mobs in 'mobkill' objective
- Firework support in items
- Relative package paths, where '_' means "one package up"

## [1.8.5] - 2016-05-14
### Fixed
- Objectives are now correctly deleted with "objective delete" event and do notreappear after "/q reload".
- Objectives are no longer duplicated in the database when using "/q reload".

## [1.8.4] - 2016-05-06
### Fixed
- Conversations are no longer started twice

## [1.8.3] - 2016-05-06
### Fixed
- Events are no longer run in async thread when completing "password" objective
- Replaced stacktrace with error message when objective is incorrect in "objective" event
- Made color codes work with "one_entry_per_page" setting enabled
- Fixed a bug where taken backpack items were not removed from the database
- Quest items can now be equipped
- "die" objective now correctly handles damage done to the player
- Fixed error when conversation is started without any possible options
- Fixed error when killing NPCs with equipment
- Fixed problems with relogging while in conversations with "stop" option enabled
- Fixed error when loading corrupted item from the database
### Changes
- Updater is now based on GitHub Releases, no longer downloads major updates automatically, it is more configurable and can also download development versions with "/q update --dev"
### Added
- Added console message about the cause of "/q give" errors (tells you what is wrong with item instruction string)

## [1.8.2] - 2016-02-18
### Fixed
- Fixed NPE when killing a mob without any "mobkill" objectives

## [1.8.1] - 2016-02-18
### Fixed
- Removing journal entries from the database now works correctly
- MobKill objective now correctly handles kills
- Nested package names are now correctly resolved
- The formatting at the end of every main page line is reset
- Fixed Apache dependency problem
- Material name is no longer displayed in "chest" GUI conversations
- Fixed "notify" option in give/take events

## [1.8] - 2016-02-13
Notes:
- As always in big updates, compatibility with plugins hooking into BetonQuest is broken. You need to check if everything is working.
### Fixed
- Die objective now reacts to death caused by other plugins
- Static events now are started correctly
- Static events now are canceled correctly
- Action objective now correctly checks locations
- Combat tag is removed after death
- Block, Craft and MythicMobs MobKill objectives now correctly save data
- Take event now correctly takes items from inventory, armor slots and backpack
### Added
- New variable system in conversations (check out the documentation)
- More options for journal, including one entry per page and removing date
- Compatibility with mcMMO (level condition and experience event)
- Compatibility with EffectLib ('particle' event, NPC particles)
- Compatibility with PlayerPoints (points event and condition)
- Compatibility with Heroes (class and skill condition, experience event, Heroes kills in 'mobkill' objective)
- Compatibility with Magic ('wand' condition)
- Compatibility with Denizen (running task scripts with 'script' event)
- Compatibility with SkillAPI (class and level condition)
- Compatibility with Quests (checking for done quests, starting them, custom event reward, custom condition requirement)
- Optional prefix for conversations (contributed by Jack McKalling)
- Optional material for buttons in "chest" conversation IO
- Configurable main page in the journal
- New argument in objectives: "persistent" - makes them repeat after completing
- New condition 'check' - allows for specifying multiple instructions in one
- New condition 'objective' - checks if the player has an active objective
- New condition 'score' - check scores on scoreboards
- New condition 'chestitem' - checks if a chest contains items
- New event 'run' - allows for specifying multiple instructions in one
- New event 'givejournal' - gives journal to the player
- New event 'sudo' - forces the player to run a command
- New event 'compass' - point player's compass to a location
- New event 'cancel' - cancels a quest (as in main.yml)
- New event 'score' - modify scores on scoreboards
- New events 'chestgive', 'chesttake' and 'chestclear' - put and remove items in chests
- New objective 'logout' - the player needs to leave the server
- New objective 'password' - the player needs to type the password in the chat
- New objective 'fish' - catching fish
- New objective 'enchant' - enchanting an item
- New objective 'shear' - shearing a sheep
- New objective 'chestput' - putting items in a chest
- New objective 'potion' - brewing a potion
- New commands: /cancelquest and /compass - directly open backpack sub-pages
- New subcommand '/q delete' - delete all specific tags/points/objectives/entries
- New subcommand '/q rename' - rename all specific tags/points/objectives/entries
- New subcommand '/q give' - gives you an item from items.yml
### Changes
- Administrative messages are now English-only in new installations
- Journal event can remove entries from the journal
- In conversations, %quester% variable changed to %npc%
- In inventory GUI there is NPC's text in every option, for convenience
- Conversations can point to NPC options in other conversations within the package
- You can use spaces between events, conditions and pointers in conversations
- All tags and points are internally associated with a package now
- Some conditions are now static and persistent (just like events)
- Point event can now multiply points
- Vault Money event can now multiply money
- Journal event can now use "update" argument for updating variables on the main page
- Packages can now be moved to another directories
- Quest cancelers are now defined in a more convenient way
- /q command renamed to /betonquest, /j to /journal; previous forms are now aliases
- Conditions and events in objective instructions (and conditions in event instructions) can now be defined with "condition:" and "event:" argument (without "s" at the end)

## [1.7.6] - 2015-10-17
### Fixed
- Conversation can no longer be started multiple times at once if it happens on the same tick
### Added
- Dutch translation by Jack McKalling

## [1.7.5] - 2015-09-12
### Fixed
- Restored compatibility with MythicMobs 2.1.0

## [1.7.4] - 2015-08-29
### Fixed
- Fixed error when player was quitting with active "stop" conversation while he had not changed his language with /ql command
### Changes
- Inventory GUI will close itself if there's nothing left to display

## [1.7.3] - 2015-08-20
### Fixed
- Combat tagging does not work if the attack has been canceled
### Changes
- Options in conversation can also be defined using "event:", "condition:" and "pointers:" argument names (with and without 's' at the end). "text:" argument is unchanged.

## [1.7.2] - 2015-07-27
### Fixed
- "mobkill" objective now displays correct amount of mobs left to kill
- "delay" objective can be set to 0 delay

## [1.7.1] - 2015-07-19
### Fixed
- Quests are loaded after other plugins register their types
- Journal condition correctly resolves package names
### Changes
- Updated French translation

## [1.7] - 2015-07-17
Notes:
- BetonQuest no longer supports servers without UUID handling
- There were a lot of changes since previous version, check carefully if everything is working
- Compatibility with plugins hooking INTO BetonQuest is broken, they need to update
### Fixed
- Objectives no longer mysteriously double events
- Greatly improved performance in almost every aspect
- Finally fixed issues with special characters on some servers
- Fixed database saving/loading issues
- Fixed player options in conversations being white on next lines when using tellraw
### Added
- Quest canceling system
- New inventory GUI for conversations
- Added the "random" parameter in "folder" event - choose randomly X events to fire
- Action objective can be "canceled" - the click will not do anything
- Added "static events" mechanism for firing events at specified time of the day
- Optional message when the player is pulled back by stop option
- Optional message for take and give events
- Optional message when advancing in "block" and "mobkill" objectives
- Variable system for quick changing quest parameters (for example location of a quest)
- "/q vector" command for easy calculating location vector variables
- New "empty" condition - amount of empty inventory slots
- New "party" condition - manages the conditions in the party
- New "monsters" condition - true if there are monsters in the area
- New "clear" event - kills specified monsters in the area
- New "region" objective - reach WorldGuard region
- Blacklist of commands which cannot be used while in conversation
- Option to disable compatibility with other plugins
- Added remove_items_after_respawn option - for servers using keepInventory gamerule
### Changes
- The plugin now uses package system: configuration has been moved into "default" package
- Objectives has returned to "objectives.yml" - it's improving performance
- The database is now updated in real time
- All quests can (but don't have to) be translated into multiple languages
- Players can change their language with /questlang command
- Conversations with stop option are resumed when the player logs out and in again
- Metrics are now toggled in PluginMetrics/config.yml
- All conditions, events, objectives, conversations etc. are loaded when the plugin starts/reloads
- Citizens NPC will stop when talked to
- Quest blocks cannot be placed, quest items will not break
- Conversations cannot be started while in combat
- Cannot fight while in conversation
- Tellraw conversations no longer spam the console
- Mobs can be spawned with a name (spawnmob event, "name:" argument)
- /q command is now more beautiful
- Removed unnecessary argument prefixes from conditions and events
- Removed "tag:" from objective instruction strings
- Conversations no longer need those empty lines everywhere ('')
- Dependencies updated: WorldGuard/WorldEdit 6.1, MythicMobs 2.0.4

## [1.6.2] - 2015-04-10
- Fixed errors on data loading when MySQL is being used.
- Changes messages system to use simple file as default. If you want to use advanced translation just rename "advanced-messages.yml" to "messages.yml".

## [1.6.1] - 2015-03-26
- Fixed errors on updating journals when using MySQL.

## [1.6] - 2015-03-16
Notes:
- There is a bug/feature in 1.8 which adds 'ยง0' at the end of every line in books generated by plugins. This breaks the conditions/events based on books with more than one line of text. The detailed instruction on how to work it around is in "Other important stuff" chapter, in the part about items.
### Fixed
- Items given by event that don't fit in the inventory will now drop instead of being deleted This does not apply to quest items, they will be added to backpack
- Events fired from conversations won't throw async errors
- Conversation can be started after plugin's reload without relogging
- /q reload no longer lags the server
- Corrected description in /q command
- Added input validation for global locations - if event is incorrect it will display an error instead of breaking the whole functionality
- The plugin should run fine on machines not supporting some special characters
- Inverted item condition now behave correctly
- Time condition now checks time correctly
### Added
- Added backpack for storing quest items, which cannot be dropped in any way
- Added database backups
- Added prefix for the database. New installations will use "betonquest_" prefix for tables, existing configuration will use empty prefix to maintain compatibility with other programs
- Players can chat while in conversations by prefixing their messages with '#' character
- New "random" condition - true with specified probability
- New "sneak" condition - true if player is sneaking
- New "journal" condition - true if player has journal entry
- New "testforblock" condition - true if block at given location matches given material
- New "arrow" objective - completed when arrow hits the specified target
- New "experience" objective - completed when player reaches certain level
- New "npcinteract" objective - completed when player right-clicks Citizens NPC
- New "damage" event - damages the player
- Skript support (event, effect and condition)
- WorldGuard support (region condition)
- Errors are logged to the "error.log" file in "logs" directory
- Debug option in config.yml for logging plugin's activity to "debug.log" file
- New commands for opening backpack: b, bb, backpack, bbackpack or betonbackpack
- Items are now aware of leather armor color, head owner and enchantments in books
### Changes
- Added and changed a lot of subcommands in /q command:
    - event and condition can be run for every online player
    - tag, point, objective and (new) journal can edit every (even offline) player
    - config (new) can set configuration files from command line
    - backup (new) backups the whole configuration and database
- Folder event now runs these events even after the player logs out: command, tag, objective, delete, point, setblock
- Changed /j command to open the backpack instead of just giving the journal
- Tellraw clicking on options in conversation now ignores old (used) options
- Using color codes in journal entries is now possible
- Give/take events and item condition can now check for multiple items with syntax 'give stick:2,stone:4,sword'
- Give/take events and item/hand conditions can now check for items only without enchantments/effects/name/lore etc.
- Inverting condition is now done by prefixing their name with "!" (in the place where you use them, like conversation, not in conditions.yml)
- Configuration updater is no longer based on plugin's version
- Backup files are now kept in "backups" directory, old ones are moved to it
- Changed internal structure of the code (may matter to developers - QuestEvent, Condition and Objective classes has been moved from "core" package to "api", update your imports)

## [1.5.4] - 2015-03-12
- This version is almost the same as 1.5.3. The only difference is that it can load database backups created by 1.6 version. When updating to 1.6, the database format will change, so it won't be possible to go back, unless by loading the backup using this version of the plugin.

## [1.5.3] - 2014-12-26
- Small fix of /q purge command not working on offline players.

## [1.5.2] - 2014-12-23
- Fixed errors that were spamming the console when a player with active Location objective was teleporting to other worlds.

## [1.5.1] - 2014-12-22
### Changes
- Multiple tags in one event are now possible
- Change /q event command to run from console
- Add color codes to item's name and lore
- Fix "stop" option in conversations not working
- Fix NPE on unknown answer in conversations

## [1.5] - 2014-12-21
### Changes
- Added support for MythicMobs and Vault (see wiki for more info)
- AutoUpdater is now enabled by default! If you want you can change this and reload the plugin, nothing will be downloaded in that case
- Books saving format has changed. All books were automatically converted, but you need to check them if everything looks like it's supposed to.
- Command event accepts multiple commands separated by "|", eg. "command say beton|say quest"
- Event command now accepts optional <name> argument at the end; this will fire event for <name> player. eg. "/q event wood_reward Steve"
- Journal title and lore can now use colors (&4 etc.) and journal is colorful; options in config.yml
- Added aliases for /q command: bq, bquest, bquests, betonquest, betonquests, quest, quests
- Added aliases for /j command: bj, journal, bjournal, betonjournal
- Objectives are now defined directly in event instruction, not in objectives.yml (which was deleted, if you want to restore something check the backup)
- Replies in conversations are now optionally clickable (tellraw option in config.yml)
- Added permission for starting a conversation: betonquest.conversation
- Conversation starting/ending, updating journal, plugin's update and full inventory can now make sounds; you can find a list of possible values here: jd.bukkit.org/rb/apidocs/org/bukkit/Sound.html
- Conditions for events are now defined as 'event_conditions:' instead of simply 'conditions:'. This is to distinguish conditions for objectives and for events, as both of them can exist in one instruction
- Updater is now run when disabling the plugin (it does matter if your server restarts every night)
Notes:
- All Objective events has been converted to new format. The objectives.yml file has been deleted, so if it contained any objectives that weren't covered by an event they may seem lost. However there is a backup file and you can easily extract everything from it. Please refer to the wiki to learn how objectives are now defined or just study converted ones (it's pretty straightforward).
- AutoUpdater is now enabled by default. Every future update will be working exactly like before, all changes will be automatically updated by a converter, there is always a backup and you are informed about all changes in this file. So it's pretty safe to say that keeping this plugin up to date won't give you any trouble. If you don't want to have latest fixes and features you can disable updating but this will make the developer sad.
- Because of changes in how books behave since 1.8 you may experience some strange bugs with saving books to items.yml. Generally you should open a book before saving it using /q item command. And don't start or end your books with " character, as it's part of a workaround of this bug/feature.

## [1.4.3] - 2014-12-15
- Removed debug messages from ActionObjective. You could have told me, any of you guys...

## [1.4.2] - 2014-12-09
- Really fixed an updater.

## [1.4.1] - 2014-12-09
- Fixed few bugs in Action objective.
- Fixed updater, hopefully.

## [1.4] - 2014-12-07
### Changes
- Conversations are now divided into multiple files in "conversations" directory
- Items are now saved to items.yml file and referenced by "take", "give", "item" and "hand" events/conditions
- Added /q item <itemID> command which saves currently held item to the config as specified itemID
- Added location to Action objective, which checks the location of the block (unlike location condition which checks location of the player)
- Added /q event <eventID> command which fires specified event
- Fixed multiple bugs with conversation starting and ending
- Block NPCs can now be used with Citizens enabled
- Added NPCKill objective for killing NPCs
- Added SetBlock event for setting a block at specified location
- Improved Material matching in configs
- Modified Action objective for greater flexibility:
    - It is now possible to detect clicking in air
    - It is no longer possible to detect clicking on any block (as this accepts clicking on air)
    - Can be used to detect book reading (with help of updated Hand condition)
- Added AutoUpdater; it's disabled by default
Notes:
- Conversion of configuration should have been done automatically, you don't have to worry about anything. If something went wrong you can revert changes from generated backup file, which contains all your previous configs.
- You can enable AutoUpdater by setting "autoupdate" to true in config.yml. It is completely safe because all next versions will generate backups and convert all files automatically. You will be notified on joining the server about new changelog file.
- Please refer to the wiki for changes in formatting instruction strings for various things: https://github.com/Co0sh/BetonQuest/wiki
- You probably should also change names of converted items to something else than "item12". But that works too of course.

## [1.3] - 2014-11-30
### Changes
- UUID support (optional)
- NPCs made from a clay block, head and sign, for servers without Citizens2 plugin
- Global, long and persistent delay for events (as an objective)
- Folder event for multiple events, with optional short delay
- French translation (thanks to fastlockel)
- If you want to convert names to UUIDs run the plugin once and then change in the config "uuid: false" to true. Do not touch the "convert: true" option unless you want your database wiped! Conversion will happen on next plugin reload (eg. /q reload). This is not revertable!
- Remember to backup your config files before updating! It shouldn't destroy anything but you never know.

## [1.2] - 2014-11-23
- Global locations now automatically run only once, no need for blocking it with tags and conditions. They use however tags that follow the syntax "global_<tag>", where <tag> is global location objective tag.
- Added optional respawn location for cancelled death objective, just add "respawn:100.5;200;300.5;world;90;0" to instruction string.
- Added German translation, thanks to coalaa!
- Added optional movement blocking while in conversation, just add option "stop: true" or "stop: false" in every conversation.
- Changed priority of conversation chat event to lowest, should work even for muted players.
- Fixed data values in block objective.
- Added metrics, you can disable them by setting "metrics: false" in config.yml
- Added support for SQLite, plugin will use it when connecting to MySQL fails.
- Fixed death objective not working every time and not removing all effects.

## [1.1] - 2014-11-08
- Fixed many bugs including but not limited to:
    - negated conjunction condition
    - unnecessary debug messages
    - not working global locations
- Replaced config examples with default quest
- Leaving data values in item's definition will make plugin ignore data value in most cases
- Improved journal to stop text leaks
- Item names now replace _ with spaces

## [1.0] - 2014-11-06
- Initial release

Log

https://github.com/BetonQuest/BetonQuest/runs/3899642173?check_suite_focus=true

Run docker://antonyurchenko/git-release:latest
  with:
    args: build/artifacts/BetonQuest.jar
  build/documentation/Documentation.zip
  
  env:
    VERSION: 1.12.6
    VERSION_TYPE: release
    PREVIOUS_VERSION_TAG: 1.12.6-build-number-17
    CHANGES_IN_DOCS_ONLY: 
    GITHUB_TOKEN: ***
    DRAFT_RELEASE: false
    PRE_RELEASE: false
    CHANGELOG_FILE: CHANGELOG.md
    RELEASE_NAME: BetonQuest 1.12.6
/usr/bin/docker run --name antonyurchenkogitreleaselatest_126b13 --label fa4e14 --workdir /github/workspace --rm -e VERSION -e VERSION_TYPE -e PREVIOUS_VERSION_TAG -e CHANGES_IN_DOCS_ONLY -e GITHUB_TOKEN -e DRAFT_RELEASE -e PRE_RELEASE -e CHANGELOG_FILE -e RELEASE_NAME -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/BetonQuest/BetonQuest":"/github/workspace" antonyurchenko/git-release:latest build/artifacts/BetonQuest.jar
build/documentation/Documentation.zip
DEBUG git-release v4.1.1                           
INFO creating BetonQuest 1.12.6 release           
INFO release created successfully ๐ŸŽ‰               
INFO uploading asset: Documentation.zip           
INFO uploading asset: BetonQuest.jar              
INFO assets uploaded successfully ๐ŸŽ‰  

Screenshots

If applicable, add screenshots to help explain your problem.

Interpret CHANGELOG.md headlines with "v"

Description

I want to use git-chglog for generaing my CHANGELOG.md file in the future.

  • It creates the CHANGELOG ##-headlines with the beginning "v": [v0.10.0-pre3]
  • In other words: it uses the tag as is and not cutting the "v"
<a name="v0.10.0-pre3"></a>
## [v0.10.0-pre3] - 2021-10-21
### Bug Fixes
- Storing and interpretation of CLI arguments ([#48](https://github.com/treee111/wahooMapsCreator/issues/48)) [`81fe795`](https://github.com/treee111/wahooMapsCreator/commit/81fe795eb693178381b30d41624fe191fc83a6c0)

### Features
- Create Wahoo tile present/version indicator files like 84.map.lzma.v12 ([#49](https://github.com/treee111/wahooMapsCreator/issues/49)) [`2b4adb0`](https://github.com/treee111/wahooMapsCreator/commit/2b4adb019295abad1c6b4096ad43ce0b1ed2310e)
- Enhance check for existing (already downloaded) polygons and .osm.pbf files ([#43](https://github.com/treee111/wahooMapsCreator/issues/43)) [`bbdedd1`](https://github.com/treee111/wahooMapsCreator/commit/bbdedd176bc119b143a55f639641367e1275533f)
- Add check for required input parameter for CLI and GUI ([#41](https://github.com/treee111/wahooMapsCreator/issues/41)) [`4994f13`](https://github.com/treee111/wahooMapsCreator/commit/4994f13b6ae150faaeaf4586ec7b8232fa7b095e)

because of that, git-release does not recognice this CHANGELOG-entries / headline and aborts with the following error:
grafik

The way I manually created the CHANGELOG (as suggested by you) worked flawless.

  • This was the style I had before. ##-headlines like [0.10.0-pre3]
## [0.9.0] - 2021-10-19
### Added
- have more different tag-wahoo-xml files and move them to folders. Modify tag-wahoo.xml to differently display some "place"-tags [PR34](https://github.com/treee111/wahooMapsCreator/issues/34)
- tag-wahoo-v12.xml which is a updated version of the current tag-wahoo-hidrive2.xml. Bus_guideways have been removed and the zoom-appear levels are copied from the original wahoo maps. This really should replace tag-wahoo.xml eventually when v12 maps are created. [PR38](https://github.com/treee111/wahooMapsCreator/pull/38)

It took me some time to actually get why git-release failed and I tried a lot (inkl. TAG_PREFIX_REGEX) but didn't came up with a solution. In the Issus I also found nothing similar.
Possible solutions in my mind:

  • I just didn't found a possibility to adjust git-release to work with the "v" in the CHANGELOG.md headlines
  • adjust the git-chglog template to cut the "v" of the tag and therefore keep the CHANGELOG.md style like before
    • it is fairly easy: [{{ trimPrefix "v" .Tag.Name }}]

Did I miss something, did someone came up with a similar requirement?
Or maybe you have a even easier approach for me to follow.

Thanks in advance!

Reference

git-chglog

Screenshots

I have included them above

Release with CHANGELOG.md, old entries appearing in release

Description:

My scenario is that i updated a existing project, that has already published releases. The last release was the version 1.11, that is not in the semver.org format with 3 digets. If this is the case, the 1.12.0 release Changelog, that will apear on the github releases page will contain the changelog, until there is a valid 3 diget version. I could simply fix this by changing the changelog version of 1.11 to 1.11.0.

If this is something that could not be simply fixed, is this a solution, for everyone, who is wondering about the same issue and has to find a solution.

Tag:

v1.12.0

Changelog:

# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## [Unreleased] - ${current-date}
### Added
- Condition 'wand' can now have an option 'amount'
### Changed
- Items for HolographicDisplays are now defines in items.yml
- Command 'bq rename' can now be used for globalpoints
### Deprecated
### Removed
- Removed Deprecated Exceptions
### Fixes
- Renaming an NPC will not cause an NPE for a NPC Hologram
- Objective 'craft' now supports shift-clicking
### Security

## [1.11] - 2020-01-02
### Added
- Support Minecraft 1.8 - 1.13.2+
- New Block Selector to select blocks by material and attributes. Can use wildcards as well.
- New 'mooncycle' condition - Determine what phase the moon is in
- Chest ConversationIO can now be configured to show NPC text per option.
- New 'extends' keyword in conversation to allow inheritance
- New 'conversation' condition that will return true if there is at least 1 conversation option available to an NPC
- New 'nujobs_canlevel' condition - True if player can level in Jobs Reborn
- New 'nujobs_hasjob' condition - True if player has job in Jobs Reborn
- New 'nujobs_jobfull' condition - True if a job is full in Jobs Reborn
- New 'nujobs_joblevel' condition - True if player has level in Jobs Reborn
- New 'nujobs_addexp' event - Add experience to player in Jobs Reborn
- New 'nujobs_addlevel' event - Add a level to player in Jobs Reborn
- New 'nujobs_dellevel' event - Remove a level from player in Jobs Reborn
- New 'nujobs_joinjob' event - Joins a player to a job in Jobs Reborn
- New 'nujobs_leavejob' event - Leaves a job in Jobs Reborn
- New 'nujobs_setlevel' event - Set a players level in Jobs Reborn
- New 'nujobs_joinjob' objective - Triggers when player joins job in Jobs Reborn
- New 'nujobs_leavejob' objective - Triggers when a player leaves job in Jobs Reborn
- New 'nujobs_levelup' objective - Triggers when a player levels up in Jobs Reborn
- New 'nujobs_payment' objective - Triggers when a player is paid in Jobs Reborn
- New Notification System
- New 'notify' event - Create custom notifications on the ActionBar, BossBar, Title, Subtitle and Achievement
- New 'menu' conversation IO - Requires ProtocolLib. See: https://www.youtube.com/watch?v=Qtn7Dpdf4jw&lc
- New 'packet' chat interceptor - Requires ProtocolLib.
- new '/q debug' command - Enable or disable the debug mode
### Changes
- Event 'effect' can have 'ambient', 'hidden' and 'noicon' parameters
- Event 'effect' has '--ambient' parameter deprecated with a non fatal warning.
- Priority for 'journal_main_page' entries not unique anymore, it only orders the entries. Same priority sort it alphabetic
- Objective 'interact' can have 'loc', 'range' parameters
- Objective 'region' can optionally have 'entry' and/or 'exit' to only trigger when entering or exiting named region
- The old 'Debug' class was replaced by a more useful and powerful 'LogUtils' class
### Fixed
- Resolve variables in journal pages.
- WATER and LAVA can be specified in Action Objective
- Journals without dates now don't leave blank lines
- Journal separator can be disabled or customized
- NPCs now spawn correct, if they have a npc_hologram
- fixed NPE when no journal entry exists
- The default package is now compatible with all versions

## [1.10] - 2019-09-16
- Development versions can be full of bugs. If you find any, please report them on GitHub Issues.
- This version is only compatible to Shopkeepers v2.2.0 and above
### Added
- npc holograms above the head that follow the npc (requires HolographicDisplays)
- New 'facing' condition - check if player is facing a direction 
- New 'looking' condition - check if player looks at a block
- New 'deleffect' event - delete potion effects of a player
- New '%citizen%' variable - display a npcs name or coordinates (requires Citizens)
- New 'npcrange' objective - player has to go towards a npc (requires Citizens)
- New 'npcdistance' condition - check if a player is close to a npc (requires Citizens)
- New 'npclocation' condition - check if a npc is at a location (requires Citizens)
- New 'npcregion' condition - check if a npc is inside a region (requires Citizens & WorldGuard)
- New 'killmob' event - remove the mobs that you spawned with 'spawn' event
- New '/q version' command - get the version used
- New 'partialdate' condition - check if the date matches a pattern
- New 'dayofweek' condition - check if its weekend or monday
- New 'realtime' condition - check if its a specific time
- New 'xp' event - give a player xp.
- Global objecties (objectives that  are active for all players directly after start)
- Global tags and points (tags ad points that are not set for one specific player)
- New 'globaltag' event 
- New 'globaltag' condition
- New 'globalpoint' event 
- New 'globalpoint' condition
- New 'opsudo' event - Sudo commands with op permissions
- Brewery integration ('drunk', 'drunkquality' and 'hasbrew'conditions, 'givebrew' and 'takebrew' events) 
- New 'title' event - display titles without the whole command hassle
- New 'playsound' event - plays a sound
- New 'fly' condition - check if the player is flying with Elytra
- New 'biome' condition - check the player's current biome
- New 'interact' objective - interact with an entity
- Conversations can individually override conversation IO type
- NPCs can be individually hidden from players if ProtocolLib is installed
### Changes
- 'compass' event can now directly set a players compass
- holograms from HolographicDisplays now can display items
- 'movenpc' event now allows multiple locations to create a path
- 'enchant' objective now allows multiple enchantments
- 'particle' event can now create client side only particles
- 'chest' converstionIO now dosn't display messages to chat for the old behaviour use 'combined'
- 'money' event can now notify you about how much you recieved
- 'mmobkill' objective now allows multiple mobs
- Translation system is integrated with BetonLangAPI
- NPC heads in "chest" conversation IO will display correct Citizens skin
- NPC particles (EffectLib integration) can be displayed to individual players
- Condition command allows checking static conditions
- 'testforblock' condition can now check for specific data value
- 'delay' objective and 'folder' event accept more time units
- 'password' objective also accepts commands
- Commands can be tab-completed
### Fixed
- Fixed bug where players could take out items from the chest conversationIO
- Removed possibilities of dropping/transfering quest items and the journal
- Lots of smaller bugfixes

## [1.9.6] - 2017-11-27
### Fixed
- Update version to 1.9.6
...

self-hosted runner issues

Hello...

Two different issues....

The workspace seems to be hardcoded for github and the self_hosted_runners use a different path. I tried to put and absolute patch and that did not work

Run docker://antonyurchenko/git-release:latest
  with:
    args: dist/artifacts/*
  
  env:
    GITHUB_TOKEN: ***
    CHANGELOG_FILE: /k3os_builder/CHANGES.md
    DRAFT_RELEASE: false
    PRE_RELEASE: 
    ALLOW_EMPTY_CHANGELOG: false
    ALLOW_TAG_PREFIX: true
/usr/bin/docker run --name antonyurchenkogitreleaselatest_efc5ea --label fc8a87 --workdir /github/workspace --rm -e GITHUB_TOKEN -e CHANGELOG_FILE -e DRAFT_RELEASE -e PRE_RELEASE -e ALLOW_EMPTY_CHANGELOG -e ALLOW_TAG_PREFIX -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/liottar/actions-runner/_work/_temp/_github_home":"/github/home" -v "/home/liottar/actions-runner/_work/_temp/_github_workflow":"/github/workflow" -v "/home/liottar/actions-runner/_work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/liottar/actions-runner/_work/k3os_builder/k3os_builder":"/github/workspace" antonyurchenko/git-release:latest dist/artifacts/*
INFO 'git-release' version: 3.4.4                 
WARNING 'PRE_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'ALLOW_TAG_PREFIX' enabled                   
FATAL changelog file '/github/workspace//k3os_builder/CHANGES.md' not found! 

I am also building for ARM64 and have this...

Run docker://antonyurchenko/git-release:latest
/usr/bin/docker run --name antonyurchenkogitreleaselatest_4ff6bf --label fc8a87 --workdir /github/workspace --rm -e GITHUB_TOKEN -e CHANGELOG_FILE -e DRAFT_RELEASE -e PRE_RELEASE -e ALLOW_EMPTY_CHANGELOG -e ALLOW_TAG_PREFIX -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/liottar/actions-runner/_work/_temp/_github_home":"/github/home" -v "/home/liottar/actions-runner/_work/_temp/_github_workflow":"/github/workflow" -v "/home/liottar/actions-runner/_work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/liottar/actions-runner/_work/k3os_builder/k3os_builder":"/github/workspace" antonyurchenko/git-release:latest dist/artifacts/*
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
standard_init_linux.go:219: exec user process caused: exec format error

Get an error when I want to create a release

INFO reading changelog: CHANGELOG.md panic: runtime error: index out of range [1] with length 1 goroutine 1 [running]: main.main() /opt/src/main.go:105 +0x803 ##[error]Docker run failed with exit code 2

Here's my markdown

## [3.0.1] - 2019-12-05
### Added
- Feature 1.
- Feature 2.

### Changed
- Logger timestamp.

### Removed
- Old library.
- Configuration file.

FATAL error reading changelog: changelog file does not contain version 1.1.2

Description

git-release fails to do a GitHub release.

Tag

1.1.2

Workflow

name: Release
on:
  push:
    tags: ['*']
permissions:
  contents: write
jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Create GitHub release
        uses: docker://antonyurchenko/git-release:v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Changelog

# Changelog
_This changelog follows the [Common Changelog] conventions._

## [1.1.2] - 2023-12-05
### Fixed
- GitHub action uses docker instead of wrapper ([`bf45b3a`](https://github.com/gratiahealth/terraform-module-template/commit/bf45b3a))

## [1.1.1] - 2023-12-05
### Fixed
- GitHub action version change from `latest` to `main` ([`68ccd9a`](https://github.com/gratiahealth/terraform-module-template/commit/68ccd9a))

## [1.1.0] - 2023-12-05
### Added
- Add automatic GitHub release creation ([`4d8c651`](https://github.com/gratiahealth/terraform-module-template/commit/53bd922))

## [1.0.0] - 2023-12-05

_Initial release_

[1.1.2]: https://github.com/gratiahealth/terraform-module-template/releases/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/gratiahealth/terraform-module-template/releases/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/gratiahealth/terraform-module-template/releases/compare/1.0.0...1.1.0
[1.0.0]: https://github.com/gratiahealth/terraform-module-template/releases/tag/1.0.0
[Common Changelog]: https://common-changelog.org/

Log

Run docker://antonyurchenko/git-release:v5
  env:
    GITHUB_TOKEN: ***
/usr/bin/docker run --name antonyurchenkogitreleasev5_14ab2c --label be150a --workdir /github/workspace --rm -e "GITHUB_TOKEN" -e "HOME" -e "GITHUB_JOB" -e "GITHUB_REF" -e "GITHUB_SHA" -e "GITHUB_REPOSITORY" -e "GITHUB_REPOSITORY_OWNER" -e "GITHUB_REPOSITORY_OWNER_ID" -e "GITHUB_RUN_ID" -e "GITHUB_RUN_NUMBER" -e "GITHUB_RETENTION_DAYS" -e "GITHUB_RUN_ATTEMPT" -e "GITHUB_REPOSITORY_ID" -e "GITHUB_ACTOR_ID" -e "GITHUB_ACTOR" -e "GITHUB_TRIGGERING_ACTOR" -e "GITHUB_WORKFLOW" -e "GITHUB_HEAD_REF" -e "GITHUB_BASE_REF" -e "GITHUB_EVENT_NAME" -e "GITHUB_SERVER_URL" -e "GITHUB_API_URL" -e "GITHUB_GRAPHQL_URL" -e "GITHUB_REF_NAME" -e "GITHUB_REF_PROTECTED" -e "GITHUB_REF_TYPE" -e "GITHUB_WORKFLOW_REF" -e "GITHUB_WORKFLOW_SHA" -e "GITHUB_WORKSPACE" -e "GITHUB_ACTION" -e "GITHUB_EVENT_PATH" -e "GITHUB_ACTION_REPOSITORY" -e "GITHUB_ACTION_REF" -e "GITHUB_PATH" -e "GITHUB_ENV" -e "GITHUB_STEP_SUMMARY" -e "GITHUB_STATE" -e "GITHUB_OUTPUT" -e "RUNNER_OS" -e "RUNNER_ARCH" -e "RUNNER_NAME" -e "RUNNER_ENVIRONMENT" -e "RUNNER_TOOL_CACHE" -e "RUNNER_TEMP" -e "RUNNER_WORKSPACE" -e "ACTIONS_RUNTIME_URL" -e "ACTIONS_RUNTIME_TOKEN" -e "ACTIONS_CACHE_URL" -e "ACTIONS_RESULTS_URL" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/terraform-module-template/terraform-module-template":"/github/workspace" antonyurchenko/git-release:v5
DEBUG git-release v5.0.2                           
FATAL error reading changelog: changelog file does not contain version 1.1.2 

Happy to share more if needed. Can't share direct links due to private repo.

SIGSEGV on v5 when no changes for a version (Unreleased)

Description

When attempting to create a release with no changes, the git-release action panics with a SIGSEGV.

This might seem like an unusual thing to do, but it is an artifact of CI on commit, where my intention is to always produce a latest Unreleased snapshot for any commit to master. Some commits may be non-functional and further this makes a workflow immediately following a tagged release fail every time.

Tag

v5.0.0

Workflow

https://github.com/dotRun/MCVotifierLib/blob/master/.github/workflows/publish-workflow.yml

Changelog

https://github.com/dotRun/MCVotifierLib/blob/ea11c2a594d8fa63f8b931dc996ba0ec6fc57048/CHANGELOG.md

Log

 DEBUG git-release v5.0.0                           
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x65dcae]

goroutine 1 [running]:
github.com/anton-yurchenko/go-changelog.(*Changes).ToString(0x0)
	/go/pkg/mod/github.com/anton-yurchenko/[email protected]/changes.go:24 +0x2e
main.(*Configuration).GetChangelog(0xc00005c360, {0x75d400?, 0x91e9d0}, 0xc00007c240)
	/opt/src/config.go:106 +0xe5
main.main()
	/opt/src/main.go:71 +0x1e9

Isn't the default release name the tag?

Description

The README currently says that the default value of RELEASE_NAME is the empty string (""), however I don't think that this is the case.

I've recently used git-release with the first example workflow suggested here, and the title of the generated release was the tag itself.

For the avoidance of doubt - I like it that it uses the tag, it's just that I think the documentation for the RELEASE_NAME env var should be updated to reflect this behavior.

Side note: will you enable discussions in this repository? I would have preferred to create a discussion rather than an issue.

Reference

Wildcard or environment variables in args:

This is more of a question:

I want to pass the version number or a wildcard the the args like this:
env:
RELEASE_VERSION="v0.1.2"
args: |
testpv.yaml
bob-plugins-*.tgz
bob-plugins-$RELEASE_NAME.tgz

This is simplified for an example of course.

The first fails for invalid syntax and the second does not expand variable

Running into post errors with the release endpoint

Description:

A clear and concise description of what the bug is
image

Tag:

ml-fast-api-server0.1.0

Workflow:


on:
  push:
    tags: #anytime a new tag is pushed that matches this pattern, trigger the workflow
     - "ml-fastapi-server/*"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Get the version from the github tag
        id: get_version
        run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF##*/}
      - name: Echo the version tag
        run: |
          echo ${{ env.RELEASE_VERSION }}
      - name: Release
        uses: docker://antonyurchenko/git-release:latest
        env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            DRAFT_RELEASE: "false"
            PRE_RELEASE: "false"
            CHANGELOG_FILE: "ml-fastapi-server/CHANGELOG.md"
            ALLOW_EMPTY_CHANGELOG: "false"
            ALLOW_TAG_PREFIX: "true"
        with:
          args: |
            ml-fastapi-server/dist/ml_fastapi_server-${{ env.RELEASE_VERSION }}-py3-none-any.whl
            ml-fastapi-server/dist/ml-fastapi-server-${{ env.RELEASE_VERSION }}.tar.gz

Changelog:

## [0.1.0] - 2020-04-07

## Added

- First PR to test changelog

### Changed

- Nothing

### Removed

- Nothing

PRE_RELEASE/UNRELEASED always creates a new DRAFT release

Description

When attempting to always release a latest snapshot for each push to main, DRAFT releases are continuously created instead of a single prerelease being updated/replaced.

Tag

5.0.2 (using docker v5)

Workflow

This is the workflow I use to create a pre-release for main branch updates or a "true" release on semantic version tag.

name: Publish
on:
  push:
    branches: [ 'main' ]
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"

jobs:
  build:
    uses: ./.github/workflows/build.yml
    with:
      push: true
    secrets: inherit
  publish:
    needs: build
    name: Publish Release
    runs-on: ubuntu-22.04
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Download dist
        uses: actions/download-artifact@v3
        id: download
        with:
          name: dist
          path: dist
      - name: Release
        uses: docker://antonyurchenko/git-release:v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RELEASE_NAME: ${{ needs.build.outputs.version }}
          PRE_RELEASE: ${{ github.ref_type == 'branch' }}
          UNRELEASED: ${{ github.ref_type == 'branch' && 'update' || '' }}
          UNRELEASED_TAG: latest-snapshot
          DRAFT_RELEASE: false
          ALLOW_EMPTY_CHANGELOG: ${{ github.ref_type == 'branch' && 'true' || 'false' }}
        with:
          args: |
            dist/libs/*-all.jar
            dist/distributions/*-shadow-*.tar.gz

Changelog

Attach a full changelog

I can't do that, but I don't think it's relevant here, and the releases are appropriately getting the changelog entries.

Log

Run docker://antonyurchenko/git-release:v5
  with:
    args: dist/libs/*-all.jar
  dist/distributions/*-shadow-*.tar.gz
  
  env:
    GITHUB_TOKEN: ***
    RELEASE_NAME: 0.7.1-SNAPSHOT
    PRE_RELEASE: true
    UNRELEASED: update
    UNRELEASED_TAG: latest-snapshot
    DRAFT_RELEASE: false
    ALLOW_EMPTY_CHANGELOG: true
/usr/bin/docker run --name antonyurchenkogitreleasev5_8749b8 --label 86c800 --workdir /github/workspace --rm -e "GITHUB_TOKEN" -e "RELEASE_NAME" -e "PRE_RELEASE" -e "UNRELEASED" -e "UNRELEASED_TAG" -e "DRAFT_RELEASE" -e "ALLOW_EMPTY_CHANGELOG" -e "INPUT_ARGS" -e "HOME" -e "GITHUB_JOB" -e "GITHUB_REF" -e "GITHUB_SHA" -e "GITHUB_REPOSITORY" -e "GITHUB_REPOSITORY_OWNER" -e "GITHUB_REPOSITORY_OWNER_ID" -e "GITHUB_RUN_ID" -e "GITHUB_RUN_NUMBER" -e "GITHUB_RETENTION_DAYS" -e "GITHUB_RUN_ATTEMPT" -e "GITHUB_REPOSITORY_ID" -e "GITHUB_ACTOR_ID" -e "GITHUB_ACTOR" -e "GITHUB_TRIGGERING_ACTOR" -e "GITHUB_WORKFLOW" -e "GITHUB_HEAD_REF" -e "GITHUB_BASE_REF" -e "GITHUB_EVENT_NAME" -e "GITHUB_SERVER_URL" -e "GITHUB_API_URL" -e "GITHUB_GRAPHQL_URL" -e "GITHUB_REF_NAME" -e "GITHUB_REF_PROTECTED" -e "GITHUB_REF_TYPE" -e "GITHUB_WORKFLOW_REF" -e "GITHUB_WORKFLOW_SHA" -e "GITHUB_WORKSPACE" -e "GITHUB_ACTION" -e "GITHUB_EVENT_PATH" -e "GITHUB_ACTION_REPOSITORY" -e "GITHUB_ACTION_REF" -e "GITHUB_PATH" -e "GITHUB_ENV" -e "GITHUB_STEP_SUMMARY" -e "GITHUB_STATE" -e "GITHUB_OUTPUT" -e "RUNNER_OS" -e "RUNNER_ARCH" -e "RUNNER_NAME" -e "RUNNER_ENVIRONMENT" -e "RUNNER_TOOL_CACHE" -e "RUNNER_TEMP" -e "RUNNER_WORKSPACE" -e "ACTIONS_RUNTIME_URL" -e "ACTIONS_RUNTIME_TOKEN" -e "ACTIONS_CACHE_URL" -e "ACTIONS_RESULTS_URL" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/<*snip*>":"/github/workspace" antonyurchenko/git-release:v5 dist/libs/*-all.jar
dist/distributions/*-shadow-*.tar.gz
DEBUG git-release v5.0.2                           
WARNING deleting precedent release โ—                 
WARNING precedent release not found                  
INFO creating 0.7.1-SNAPSHOT release              
INFO release created successfully ๐ŸŽ‰               
INFO uploading asset                               asset=<*snip*>-0.7.1-SNAPSHOT.tar.gz
INFO uploading asset                               asset=<*snip*>-0.7.1-SNAPSHOT-all.jar
INFO assets uploaded successfully ๐ŸŽ‰              

Screenshots

If applicable, add screenshots to help explain your problem.

Unfortunately I just cleaned up all the draft releases (a couple dozen of them), but I will try to add a screenshot when more merges to main happen. Ultimately it's creating draft releases when I don't think it should, and thus cannot find the previous prerelease to update for latest.

Support for GitLab?

I was just thinking of needing something like this for GitLab and found this. What are your thoughts of supporting making a release on GitLab, too? Is this in-scope of this project?

How to restict folders and files for the Release?

Hi,

I do not want to include all files of my repo into the release .zip file.
Is this possible with your plugin?

I tried the following already to only have files of the common_resources folder in the created release .zip files but each time it copied everything from the repository into the .zip files:

name: Git Release

on:
  push:
    tags:
    - 'v*'

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Release
        uses: docker://antonyurchenko/git-release:latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RELEASE_NAME_PREFIX: "Release "
        with:
          args: common_resources/*

and

        with:
          args: |
            common_resources/*.zip

and

        with:
          args: |
            common_resources/*

malformed env.var 'GITHUB_REF' (control tag prefix via env.var 'ALLOW_TAG_PREFIX'): expected to match regex

Description

I found the error came from. But I don't understand. Am I broke semver or keepachangelog. This is the repository.

return errors.New(fmt.Sprintf("malformed env.var 'GITHUB_REF' (control tag prefix via env.var 'ALLOW_TAG_PREFIX'): expected to match regex '%s', got '%v'", expression, o))

Tag

Tried both V1.0.0 and V1.0

Workflow

name: release

on:
  push:
    branches:
    - main
    tags:
    - 'v*'

env:
  ACTION_NAME: release-please-action

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Release
      uses: docker://antonyurchenko/git-release:latest
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        ALLOW_TAG_PREFIX: "false"
        CHANGELOG_FILE: "CHANGELOG.md"
        ALLOW_EMPTY_CHANGELOG: "false"
        PRE_RELEASE: "true"
      with:
        args: build/*.zip

Changelog

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
And this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2021-03-29

### Added

- Heroku one click deploy button.
- Both support `praw.ini` and `environment variables`(for heroku).

Log

Run docker://antonyurchenko/git-release:latest
  with:
    args: build/*.zip
  env:
    ACTION_NAME: release-please-action
    GITHUB_TOKEN: ***
    ALLOW_TAG_PREFIX: false
    CHANGELOG_FILE: CHANGELOG.md
    ALLOW_EMPTY_CHANGELOG: false
    PRE_RELEASE: true
/usr/bin/docker run --name antonyurchenkogitreleaselatest_ed83d7 --label 5588e4 --workdir /github/workspace --rm -e ACTION_NAME -e GITHUB_TOKEN -e ALLOW_TAG_PREFIX -e CHANGELOG_FILE -e ALLOW_EMPTY_CHANGELOG -e PRE_RELEASE -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/FloooDBot/FloooDBot":"/github/workspace" antonyurchenko/git-release:latest build/*.zip
INFO 'git-release' version: 3.4.4                 
WARNING 'DRAFT_RELEASE' is not equal to 'true', assuming 'false' 
FATAL malformed env.var 'GITHUB_REF' (control tag prefix via env.var 'ALLOW_TAG_PREFIX'): expected to match regex '^refs/tags/(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:(?P<sep1>-)(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:(?P<sep2>\+)(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$', got 'refs/heads/main' 

Support a "Unreleased" pre-release

Hello @anton-yurchenko

Description

https://keepachangelog.com/ defines the Unreleased section. I propose to create/update/replace a pre-release whenever a specific tag is updated e.g. a latest tag? As a pre-release it is identified as non-production ready. Also the latest tag is potentially moved with every merge to the main branch.

The benefit from my point of view is that you can automatically deliver something users can test with.

This is how it could be used:

on:
  push:
    tags:
    - 'latest'

...

    - name: Latest Release
      uses: docker://antonyurchenko/git-release:latest
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        DRAFT_RELEASE: "false"
        PRE_RELEASE: "true"
        CHANGELOG_FILE: "CHANGELOG.md"
        CHANGELOG_SECTION: "Unreleased"
        ALLOW_EMPTY_CHANGELOG: "false"
      with:
        args: |
            build/*-amd64.zip

What do you think about that?

PS: From the docs: Note: The release event is not triggered for draft releases.

Reference

Multiple releases from matrix strategy

Description:

When running a matrix strategy, each providing one release file, the action ends up creating one (draft) release for each matrix run, all with the same name. It seems it would make more sense to create a single release with all build products.

Reference:

Here is the workflow I'm using, for reference.

This workflow creates 3 draft releases, all named "Release XXX", each with one installation file for Windows for Python versions 3.6, 3.7 and 3.8.

Is there any configuration I'm missing that would create a single release with all 3 files?

(Thanks for the great action, btw!)

[QUESTION] How to do prerelease like on suffix?

Description

In your example, you do the prerelease like prerelease-1.0.0. So, I have question on how to do a pre-release like v1.0.0-alpha based on your configuration? This is more following the semVer guideline. Hope that you can give the suggestion on how to do it with this Action.

Thumbs up๐Ÿ‘ for the contibution. It helps me a lot!๐Ÿ˜€

Reference

Development tags are not matched correctly

Description

Development tags are not matched correctly

Tag

v0.0.1

Workflow

name: release
on:
  push:
    tags:
      - v[0-9]+.[0-9]+.[0-9]+

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - name: Init
        uses: actions/setup-go@v2
        with:
          go-version: 1.16
        id: go

      - name: Checkout
        uses: actions/checkout@v2

      - name: Install Dependencies
        run: |
          go get -v -t -d ./...

      - name: Lint
        run: |
          export PATH=$PATH:$(go env GOPATH)/bin
          curl -s https://api.github.com/repos/golangci/golangci-lint/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d : -f 2,3 | tr -d \" | wget -i -
          tar -xvf golangci-lint-*-linux-amd64.tar.gz --strip=1 --no-anchored golangci-lint
          ./golangci-lint run ./...

      - name: Test
        run: go test -v $(go list ./... | grep -v vendor | grep -v mocks) -race -coverprofile=coverage.txt -covermode=atomic

  scan:
    name: Security Scan
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v1
        with:
          languages: go

      - name: Autobuild
        uses: github/codeql-action/autobuild@v1

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v1

  release:
    name: Release
    runs-on: ubuntu-latest
    needs: [test, scan]
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Release
        uses: docker://antonyurchenko/git-release:latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Changelog

# Changelog

## [0.0.1] - 2021-05-19

_Initial release_

[0.0.1]: https://github.com/anton-yurchenko/go-changelog/releases/tag/v0.0.1

Log

INFO 'git-release' version: 3.5.0                 
WARNING 'DRAFT_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'PRE_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'CHANGELOG_FILE' is not defined, assuming 'CHANGELOG.md' 
FATAL malformed env.var 'GITHUB_REF' (control tag prefix via env.var 'ALLOW_TAG_PREFIX'): expected to match regex '^refs/tags/(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:(?P<sep1>-)(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:(?P<sep2>\+)(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$', got 'refs/tags/v0.0.1'

Screenshots

image

Any ideas why this is fails? Changelog does not contain changes for requested project version

Take a look at this action:
https://github.com/RIP21/react-hanger-clone-for-course/runs/1141443576?check_suite_focus=true
(I hope it can be accessed)

I have the following changelog format:

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).

## [v0.0.2](https://github.com//RIP21/react-hanger-clone-for-course.git/compare/v0.0.1...v0.0.2)

### Commits

- Meaningful change [`de69c9d`](https://github.com//RIP21/react-hanger-clone-for-course.git/commit/de69c9d93b579cfaabc64c2b9c54c2c2fe1c227b)
- Meaningful change [`2b4a229`](https://github.com//RIP21/react-hanger-clone-for-course.git/commit/2b4a2295c1a3a0ef0523a09cc780e109d0e808c0)

## [v0.0.1](https://github.com//RIP21/react-hanger-clone-for-course.git/compare/v0.0.1-0...v0.0.1) - 2020-09-21

It argues that it can't find proper changelog version. Is it because it contains v inside like[v0.0.2] instead of [0.0.2]?

Output is following:

INFO version: 3.4.1                               
WARNING 'DRAFT_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'PRE_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'ALLOW_TAG_PREFIX' enabled                   
WARNING 'CHANGELOG_FILE' is not defined, assuming 'CHANGELOG.md' 
FATAL changelog does not contain changes for requested project version 

This is when it runs on a v0.0.2 tag push.

Thanks!

GHE Support

Hello Anton Yurchenko

Description

We'd like to use git-release in a GitHub enterprise setup where we run our own github instance. We get the following output:

Run docker://antonyurchenko/git-release:latest
/usr/local/bin/docker run --name antonyurchenkogitreleaselatest_a422c4 --label 60e226 --workdir /github/workspace --rm -e CGO_ENABLED -e GOROOT -e GITHUB_TOKEN -e CHANGELOG_FILE -e ALLOW_EMPTY_CHANGELOG -e ALLOW_TAG_PREFIX -e INPUT_ARGS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/runner/_work/_temp/_github_home":"/github/home" -v "/runner/_work/_temp/_github_workflow":"/github/workflow" -v "/runner/_work/_temp/_runner_file_commands":"/github/file_commands" -v "/runner/_work/lbswtch/lbswtch":"/github/workspace" antonyurchenko/git-release:latest cmd/lbswtchd/lbswtchd
cmd/lbswtchctl/lbswtchctl
INFO 'git-release' version: 3.5.0                 
WARNING 'DRAFT_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'PRE_RELEASE' is not equal to 'true', assuming 'false' 
WARNING 'ALLOW_EMPTY_CHANGELOG' enabled              
WARNING 'ALLOW_TAG_PREFIX' enabled                   
WARNING 'CHANGELOG_FILE' is set to 'none'            
INFO creating release: 'v0.0.0'                   
FATAL POST https://api.github.com/repos/db/lbswtch/releases: 401 Bad credentials [] 

In the last line, you see that it tries to connect to github.com and not to the github enterprise instance.

The above is based on the following yaml:

    - name: release
      uses: docker://antonyurchenko/git-release:latest
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        CHANGELOG_FILE: "none"
        ALLOW_EMPTY_CHANGELOG: "true"
        ALLOW_TAG_PREFIX: "true"
      with:
        args: |
            cmd/lbswtchd/lbswtchd
            cmd/lbswtchctl/lbswtchctl

If it is ok for you we are willing to invest into this with a little bit of guidance.

Github Badge

I am running my workflow and the last step is the git-release. No matter what I do, badge for workflow is 'failing'. Here is my workflow:

#Workflows
name: publish_release
on: 
  push:
    tags:
    - "v[0-9]+.[1-9]+.[0-9]*"
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - run: |
          export POSTFIX=" (Codename: '$(cat CODENAME)')"
          echo "::set-env name=RELEASE_NAME_POSTFIX::$POSTFIX"
      - name: Print Release Version
        run: |
          export RELEASE_VERSION=$(echo $GITHUB_REF | awk -F\/ '{print $3}')
          echo "::set-env name=RELEASE_VERSION::$RELEASE_VERSION"
          echo "Release Version is $RELEASE_VERSION"
          echo "$RELEASE_VERSION" > VERSION
      - name: Create Plugins
        run: |
          bash -c "chmod 755 ./plugins.sh; ./plugins.sh"
          bash -c "cd plugins/kubectl;  tar zcvf ../../bob-plugins-${{ env.RELEASE_VERSION }}.tgz *; cd ../.."
      - name: Build Action 
        env: # Or as an environment variable
            docker_login: ${{ secrets.DOCKER_ID }}
            docker_token: ${{ secrets.DOCKER_TOKEN }}      
        run: |
          bash -c "chmod 755 files/*; chmod 644 files/*.conf files/README"
          bash -c "chmod 755 ./init.sh; LATEST=true TAG=$RELEASE_VERSION DOCKERFILE=dockerfiles/Dockerfile       ./init.sh bob-core"
          bash -c "chmod 755 ./init.sh; LATEST=true TAG=$RELEASE_VERSION DOCKERFILE=dockerfiles/Dockerfile.proxy ./init.sh bob-proxy"
          bash -c "chmod 755 ./init.sh; LATEST=true TAG=$RELEASE_VERSION DOCKERFILE=dockerfiles/Dockerfile.mini  ./init.sh bob"
          bash -c "chmod 755 ./charts.sh; ./charts.sh"
      - name: push
        uses: github-actions-x/[email protected]
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          push-branch: 'master'
          commit-message: 'publish'
          force-add: 'true'
          files: VERSION docs/index.yaml docs/*.tgz
          name: rsliotta
          email: [email protected]
      - name: Release
        uses: docker://antonyurchenko/git-release:latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          CHANGELOG_FILE: "docs/changes.md"
          DRAFT_RELEASE: "false"
          PRE_RELEASE: "false"
          ALLOW_EMPTY_CHANGELOG: "false"
          ALLOW_TAG_PREFIX: "true"
        with:
          args: |
            examples/testpv.yaml
            bob-plugins-${{ env.RELEASE_VERSION }}.tgz
            plugins/installer.sh

Tag as parameter

Description:

Would it be possible to pass the tag as a parameter? As github actions can't be chained. So if I have an action that create a tag, this tag could be used to read the changelog and create the release.

Also, giving the release name a prefix like: Release {tag} would be nice!

Reference:

Screenshots:

Upload error

Description

We created a new release, but during the upload of the artifacts there was an issue. It says that the artifacts where not uploaded, but the are actually uploaded successfully. I am not sure it this is a bug, but may it should be checked. If you think there is nothings suspicious, you can simply close this.

Tag

v1.12.9

Workflow

https://github.com/BetonQuest/BetonQuest/blob/master/.github/workflows/build.yml

Changelog

https://github.com/BetonQuest/BetonQuest/blob/master_v1.12/CHANGELOG.md

Log

https://github.com/BetonQuest/BetonQuest/runs/7001487096?check_suite_focus=true

Screenshots

image

Empty tag prefix

Description

How to match a version that does not use any tag prefix. Should I use *?

Accept build artifact name(s)

Description:

It seems prudent to assemble release assets using build artifacts. In particular, we may use separate jobs for different assets, e.g. using a build matrix, so we will never have all assets in the same working directory (without further work).

git-release should accept names of build artifacts, and internally download the included files.
I can think of two ways to do this (short of re-wrapping the action as JS action, which seems to open up possibilities for richer user interfaces than Docker actions):

Option A:

Arguments can be either:

- uses: docker://antonyurchenko/git-release:v3
  with:
    args: |
      Release Assets
      some-other-file.md

Problem: What if artifact and workspace file names conflict?

Option B: Addition environment variable

- uses: docker://antonyurchenko/git-release:v3
  env:
    RELEASE_ARTIFACT: "Release Assets"
  args: |
      some-other-file.md

Problem: Doesn't scale well to multiple artifacts.

Workaround

Download the artifact and list its content manually:

- uses: actions/download-artifact@v2
  with:
    name: "Release Assets"
    path: "release_assets"

- id: asset_names
  run: echo ::set-output name=LIST::$(find release_assets)

- uses: docker://antonyurchenko/git-release:v3
  with:
    args: "${{ steps.asset_names.outputs.LIST }}"

See something similar in action here.

Releasing from the first changelog entry

Description:

Inconsistent generation of releases for the first changelog entry

Tag:

0.0.1-beta1

Workflow:

- name: Release
  uses: docker://antonyurchenko/git-release:v3
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    DRAFT_RELEASE: "true"
    PRE_RELEASE: "false"
    CHANGELOG_FILE: "CHANGELOG.md"
    ALLOW_EMPTY_CHANGELOG: "true"
    ALLOW_TAG_PREFIX: "false"

Changelog:

# Changelog

## [0.0.1-beta1](https://github.com/croct-tech/plug-js/tree/0.0.1-beta1) (2020-03-22)

[Full Changelog](https://github.com/croct-tech/plug-js/compare/20cdc015ba4f2f5b2ec9881e9bd72ea09b6bc381...0.0.1-beta1)

Log:

WARNING 'ALLOW_EMPTY_CHANGELOG' enabled              
FATAL empty changelog for requested version: '0.0.1-beta1' 

Problem:

This regex will match the line starting with [Full Changelog] and return one line above.

Is there a reason for this check before returning len(content)? This matching will cause all releases from a first entry that have any line starting with a link to have an incomplete body, and is not consistent with what would happen with multiple entries.
With multiple entries like:

# Changelog

## [0.0.1-beta2](https://github.com/croct-tech/plug-js/tree/0.0.1-beta2) (2020-03-22)

[Full Changelog](https://github.com/croct-tech/plug-js/compare/0.0.1-beta1...0.0.1-beta2)

## [0.0.1-beta1](https://github.com/croct-tech/plug-js/tree/0.0.1-beta1) (2020-03-22)

Some message
[Full Changelog](https://github.com/croct-tech/plug-js/compare/20cdc015ba4f2f5b2ec9881e9bd72ea09b6bc381...0.0.1-beta1)

generating a release for the tag 0.0.1-beta2 will include the full changelog link on the release body, but would not on 0.0.1-beta1

Empty headlines in a release

Description

I already did a bug report for this: #54
but it seem to be not fixed, and also a new behavior showed up.

The changelog:

## [1.12.7] - 2021-12-11
### Added
### Changed
### Deprecated
### Removed
### Fixes
- exception during reload, when npc_holograms are disabled
- `entities` condition and `clear` event now support not living entities
- mmoitems item creation only worked with uppercase id's
### Security
- updated log4j to 2.15.0 which fixes CVE-2021-44228

ended up in a format like this:

## [1.12.7] - 2021-12-11
### Security
- updated log4j to 2.15.0 which fixes CVE-2021-44228
### Removed
- exception during reload, when npc_holograms are disabled
- `entities` condition and `clear` event now support not living entities
- mmoitems item creation only worked with uppercase id's
  1. The heading Fixes was renamed to Removed
  2. The order was inverted.

Tag

1.12.7

Workflow

https://github.com/BetonQuest/BetonQuest/blob/v1.12.7/.github/workflows/build.yml

Changelog

https://github.com/BetonQuest/BetonQuest/blob/v1.12.7/CHANGELOG.md

Log

https://github.com/BetonQuest/BetonQuest/runs/4494574003?check_suite_focus=true
The Job Create Release Build with the step Create Release

Screenshots

If applicable, add screenshots to help explain your problem.

add in documenation: UNRELEASED and DRAFT_RELEASE do not work together

Why this issue?

I don't know how I came to that configration and if it worked earlier or not.
Lately I saw it not updating the latest release and it took me some time to figure out what causes this issue.
The errormessages, in my opinion, did not lead to the misconfiguration. That's why I want to inform you about that, if you have a place for that to be documented, feel free to do so!

Description

UNRELEASED: "update" together with DRAFT_RELEASE: true does not work after the first time.
It works the first time but seams that the created draft-release can not be changed by the action on the second and all further runs.

  • non-working workflow configuration:
- name: Release
  uses: docker://antonyurchenko/git-release:latest
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    UNRELEASED: "update"
    ALLOW_EMPTY_CHANGELOG: true
    DRAFT_RELEASE: true
  • working workflow configuration:
- name: Release
  uses: docker://antonyurchenko/git-release:latest
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    UNRELEASED: "update"
    ALLOW_EMPTY_CHANGELOG: true

Reference

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.