diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..b4377af --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,54 @@ +name: Release Please + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + tag_name: ${{ steps.release.outputs.tag_name }} + steps: + - name: Generate token + id: generate-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ vars.SDK_BOT_APP_ID }} + private-key: ${{ secrets.SDK_BOT_PRIVATE_KEY }} + + - uses: googleapis/release-please-action@v4 + id: release + with: + token: ${{ steps.generate-token.outputs.token }} + + publish: + name: Publish to Hex + needs: release-please + if: needs.release-please.outputs.release_created == 'true' + 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 }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 39cb626..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Release - -on: - pull_request: - types: [closed] - branches: [main] - -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.SDK_BOT_APP_ID }} - private-key: ${{ secrets.SDK_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 }} diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml deleted file mode 100644 index 6ebc386..0000000 --- a/.github/workflows/version-bump.yml +++ /dev/null @@ -1,80 +0,0 @@ -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.SDK_BOT_APP_ID }} - private-key: ${{ secrets.SDK_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 diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..1fb8c24 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.1.4" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..5877d92 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,10 @@ +{ + "packages": { + ".": { + "release-type": "elixir", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true + } + }, + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +}