This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | ||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| version: | ||
| description: 'Version bump type' | ||
| required: true | ||
| type: choice | ||
| options: | ||
| - patch | ||
| - minor | ||
| - major | ||
| jobs: | ||
| test: | ||
| uses: ./.github/workflows/test.yml | ||
|
Check failure on line 17 in .github/workflows/release.yml
|
||
| permissions: | ||
| contents: read | ||
| lint: | ||
| uses: ./.github/workflows/standard.yml | ||
| permissions: | ||
| checks: write | ||
| contents: write | ||
| release: | ||
| needs: [test, lint] | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: write | ||
| id-token: write | ||
| packages: write | ||
| attestations: write | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||
| fetch-depth: 0 | ||
| - name: Set up Ruby | ||
| uses: ruby/setup-ruby@v1 | ||
| with: | ||
| ruby-version: '3.3' | ||
| bundler-cache: true | ||
| - name: Configure git | ||
| run: | | ||
| git config user.name "github-actions[bot]" | ||
| git config user.email "github-actions[bot]@users.noreply.github.com" | ||
| - name: Get current version | ||
| id: current | ||
| run: | | ||
| CURRENT_VERSION=$(cat VERSION) | ||
| echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT | ||
| - name: Calculate new version | ||
| id: new | ||
| run: | | ||
| CURRENT="${{ steps.current.outputs.version }}" | ||
| IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT" | ||
| MAJOR=${VERSION_PARTS[0]} | ||
| MINOR=${VERSION_PARTS[1]} | ||
| PATCH=${VERSION_PARTS[2]} | ||
| case "${{ inputs.version }}" in | ||
| major) | ||
| NEW_VERSION="$((MAJOR + 1)).0.0" | ||
| ;; | ||
| minor) | ||
| NEW_VERSION="${MAJOR}.$((MINOR + 1)).0" | ||
| ;; | ||
| patch) | ||
| NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" | ||
| ;; | ||
| esac | ||
| echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT | ||
| - name: Update version | ||
| run: | | ||
| echo "${{ steps.new.outputs.version }}" > VERSION | ||
| - name: Commit version bump | ||
| run: | | ||
| git add VERSION | ||
| git commit -m "Bump version to ${{ steps.new.outputs.version }}" | ||
| - name: Create tag | ||
| run: | | ||
| git tag -a "v${{ steps.new.outputs.version }}" -m "Release version ${{ steps.new.outputs.version }}" | ||
| - name: Push changes | ||
| run: | | ||
| git push origin main | ||
| git push origin "v${{ steps.new.outputs.version }}" | ||
| - name: Create release archive | ||
| run: | | ||
| # Create a clean archive without .git directory | ||
| git archive --format=zip --prefix=pat-logger-v${{ steps.new.outputs.version }}/ HEAD > pat-logger-v${{ steps.new.outputs.version }}.zip | ||
| - name: Login to Docker Hub | ||
| uses: docker/login-action@v3 | ||
| with: | ||
| username: ${{ vars.DOCKER_USERNAME }} | ||
| password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
| - name: Login to Forgejo Registry | ||
| uses: docker/login-action@v3 | ||
| with: | ||
| registry: git.chobble.com | ||
| username: stefan | ||
| password: ${{ secrets.FORGEJO_TOKEN }} | ||
| - name: Login to GitHub Container Registry | ||
| uses: docker/login-action@v3 | ||
| with: | ||
| registry: ghcr.io | ||
| username: ${{ github.actor }} | ||
| password: ${{ secrets.GITHUB_TOKEN }} | ||
| - name: Set up Docker Buildx | ||
| uses: docker/setup-buildx-action@v3 | ||
| - name: Build and push Docker images | ||
| uses: docker/build-push-action@v6 | ||
| with: | ||
| push: true | ||
| tags: | | ||
| ${{ vars.DOCKER_USERNAME }}/play-test:latest | ||
| ${{ vars.DOCKER_USERNAME }}/play-test:v${{ steps.new.outputs.version }} | ||
| git.chobble.com/chobble/play-test:latest | ||
| git.chobble.com/chobble/play-test:v${{ steps.new.outputs.version }} | ||
| ghcr.io/${{ github.repository }}:latest | ||
| ghcr.io/${{ github.repository }}:v${{ steps.new.outputs.version }} | ||
| - name: Create GitHub Release | ||
| uses: softprops/action-gh-release@v2 | ||
| with: | ||
| tag_name: v${{ steps.new.outputs.version }} | ||
| name: Release ${{ steps.new.outputs.version }} | ||
| body: | | ||
| # v${{ steps.new.outputs.version }} | ||
| [Read the full changelog here](https://github.com/${{ github.repository }}/compare/v${{ steps.current.outputs.version }}...v${{ steps.new.outputs.version }}) | ||
| ## Docker Images | ||
| - `${{ vars.DOCKER_USERNAME }}/play-test:v${{ steps.new.outputs.version }}` | ||
| - `git.chobble.com/chobble/play-test:v${{ steps.new.outputs.version }}` | ||
| - `ghcr.io/${{ github.repository }}:v${{ steps.new.outputs.version }}` | ||
| files: | | ||
| play-test-v${{ steps.new.outputs.version }}.zip | ||
| draft: false | ||
| prerelease: false | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||