CI Actions

Yaclog makes an action available for Forgejo Actions and compatible CI systems like Gitea and Github actions.

action 1.6.2

Get version information from a changelog

Example

- name: Get version info
  uses: https://git.offworldcolonies.nexus/drewcassidy/yaclog@1.6.2

Inputs

input changelog-path

Path of the changelog markdown file

input markdown
Default:
true

If the output should be in markdown format or not. Equivalent to the --markdown flag

input release

When set, creates a new release and commits it. Directly passed to the arguments of yaclog release --yes --commit.

Can be a version number or an increment tag like --major, --minor, or --patch. The resulting commit and tag will NOT be pushed back to the repo. You must add a step to do this yourself

Outputs

output name

The most recent version name, equivalent to the output of yaclog show --name. For example, Version 1.3.0

output header

The entire header for the most recent version, equivalent to the output of yaclog show --header. For example, Version 1.3.0 - 2024-08-08

output version

The current version number, equivalent to the output of yaclog show --version. For example, 1.3.1

output body-file

The path to a temporary file containing the body of the most recent version. Contents equivalent to yaclog show --body

output body_file

Alias for body-file

output changelog

The path to the changelog file. Usually CHANGELOG.md in the current directory.

Example Usage

Get changelog information in your Build workflow

name: Build
on:
  push:
  pull_request:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Mod Repo
      uses: actions/checkout@v4
    - uses: https://git.offworldcolonies.nexus/drewcassidy/yaclog/docs@1.6.2
      id: yaclog
    - name: Publish to Github
      if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
      run: >
        gh release create '${{ github.ref_name }}' 
          --notes-file "'${{ steps.yaclog.outputs.body-file }}'" 
          --title "'${{ steps.yaclog.outputs.name }}'" 
      env:
        GH_TOKEN: ${{ github.token }}

Workflow to make a new release

If you want to be able to create a new release for your project directly from the Github UI, you can make a new workflow you can dispatch directly.

Please note that this workflow does NOT create any releases in Github or any package managers. Instead, your normal build workflow should do this when it detects a push to a tag.

name: Release
on:
  workflow_dispatch:
    inputs:
      release:
        description: type of release to use
        required: true
        default: patch
        type: choice
        options:
        - major
        - minor
        - patch
permissions:
  contents: write
jobs:
  yaclog-release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Mod Repo
      uses: actions/checkout@v4
    - name: Yaclog Release
      uses: https://git.offworldcolonies.nexus/drewcassidy/yaclog/docs@1.6.2
      with:
        release: --${{ inputs.release }}
    - name: Push Changes
      run: |
        git config --global user.name "github-actions"
        git config --global user.email "github-actions@github.com"
        git push
        git push --tags
      env:
        GH_TOKEN: ${{ github.token }}