softprops / action-gh-release

📦 :octocat: GitHub Action for creating GitHub Releases
MIT License
4.04k stars 449 forks source link

Fixing workflow configuration file #504

Open lordofscripts opened 2 weeks ago

lordofscripts commented 2 weeks ago

I am new to workflows and have a cross-build workflow in my project which uses this action-gh-release. For now I have it triggered on watch so that I don't have to make fake releases just to test the workflow.

# workflow name
name: CrossBuild

# on events
on:
  watch:
    types:
      - started

# This crossbuild from Kuechlin/gotris
#on:
#  push:
#    # Sequence of patterns matched against refs/tags
#    tags:
#      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

permissions:
  contents: write

defaults:
  run:
    shell: bash

# jobs
jobs:
  # Build
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        goosarch:
          - 'linux/386'
#          - 'linux/amd64'
          - 'windows/386'
#          - 'windows/amd64'
          - 'linux/arm'
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: '1.22.1'
      - name: Get OS and arch info
        run: |
          GOOSARCH=${{matrix.goosarch}}
          GOOS=${GOOSARCH%/*}
          GOARCH=${GOOSARCH#*/}
          BINARY_NAME=${{github.repository}}-$GOOS-$GOARCH
          echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV
          echo "GOOS=$GOOS" >> $GITHUB_ENV
          echo "GOARCH=$GOARCH" >> $GITHUB_ENV
      - name: Build
        run: |
          go build -o "$BINARY_NAME" -v
      - name: Release Notes
        run:
          git log $(git describe HEAD~ --tags --abbrev=0)..HEAD --pretty='format:* %h %s%n  * %an <%ae>' --no-merges >> ".github/RELEASE-TEMPLATE.md"
      - name: Release with Notes
        uses: softprops/action-gh-release@v2
        with:
          body_path: ".github/RELEASE-TEMPLATE.md"
          draft: true
          files: ${{env.BINARY_NAME}}

As you can see in the last part I am using action-gh-release but I wonder what should I do with that body_path? I don't see that file is created, so is it actually an input file? and if so, which keywords are expected by action-gh-releasewithin that file to create the release?

Secondary question (sorry!) is there a simple way to add the release tag to the BINARY_NAME?

DasBen commented 2 weeks ago

The body_path should be referencing a file you have created. We use it with placeholders like <!-- PLACEHOLDER --> which get's replaced in the WF with sedcommands. If you don't want a file, but instead pass the body itself, then you can use body instead of body_path.

I do not develop in go, but in java I would rename the file and append the version. Or leave it as without version and use the same name for an auto deployment further down the pipeline.