Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Release

on:
pull_request:
types: [closed]
branches: [main]
Comment on lines +4 to +6
Copy link
Contributor

@hexedpackets hexedpackets Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this flow will work with hex - releases become immutable one hour after publishing, so the version would need to be bumped with every PR before it can be pushed as a new release.


defaults:
run:
shell: bash

jobs:
create-release:
name: Create GitHub Release
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'version-bump')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Generate token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.WORKOS_BOT_APP_ID }}
private-key: ${{ secrets.WORKOS_BOT_PRIVATE_KEY }}

- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.generate-token.outputs.token }}

- name: Get version from mix.exs
id: get-version
run: |
VERSION=$(grep '@version "' mix.exs | sed 's/.*@version "\(.*\)"/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.get-version.outputs.version }}
name: v${{ steps.get-version.outputs.version }}
generate_release_notes: true
token: ${{ steps.generate-token.outputs.token }}

publish:
name: Publish to Hex
needs: create-release
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Elixir and Erlang
uses: erlef/setup-beam@5304e04ea2b355f03681464e683d92e3b2f18451 # v1.18.2
with:
elixir-version: '1.15'
otp-version: '26.0'

- name: Install dependencies
run: mix deps.get

- name: Publish to Hex
run: mix hex.publish --yes
env:
HEX_API_KEY: ${{ secrets.HEX_API_KEY }}
80 changes: 80 additions & 0 deletions .github/workflows/version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Version Bump

on:
workflow_dispatch:
inputs:
bump_type:
description: "Version bump type"
required: true
type: choice
options:
- patch
- minor
- major

jobs:
bump-version:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Generate token
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.WORKOS_BOT_APP_ID }}
private-key: ${{ secrets.WORKOS_BOT_PRIVATE_KEY }}

- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.generate-token.outputs.token }}

- name: Configure Git
run: |
git config user.name "workos-bot[bot]"
git config user.email "workos-bot[bot]@users.noreply.github.com"

- name: Read current version
id: current-version
run: |
CURRENT_VERSION=$(grep '@version "' mix.exs | sed 's/.*@version "\(.*\)"/\1/')
echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT

- name: Bump version
id: bump-version
run: |
CURRENT_VERSION="${{ steps.current-version.outputs.version }}"
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"

case "${{ github.event.inputs.bump_type }}" in
major)
NEW_VERSION="$((MAJOR + 1)).0.0"
;;
minor)
NEW_VERSION="$MAJOR.$((MINOR + 1)).0"
;;
patch)
NEW_VERSION="$MAJOR.$MINOR.$((PATCH + 1))"
;;
esac

echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT

- name: Update version in mix.exs
run: |
sed -i 's/@version ".*"/@version "${{ steps.bump-version.outputs.new_version }}"/' mix.exs

- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.generate-token.outputs.token }}
commit-message: "v${{ steps.bump-version.outputs.new_version }}"
title: "v${{ steps.bump-version.outputs.new_version }}"
body: |
Bumps version from ${{ steps.current-version.outputs.version }} to ${{ steps.bump-version.outputs.new_version }}.

This PR was automatically created by the version-bump workflow.
branch: version-bump-${{ steps.bump-version.outputs.new_version }}
labels: version-bump
Loading