Skip to content

Merge pull request #3 from customeros/gotest5 #7

Merge pull request #3 from customeros/gotest5

Merge pull request #3 from customeros/gotest5 #7

Workflow file for this run

name: Go Build
on:
push:
branches: [ otter ]
pull_request:
branches: [ otter ]
permissions:
contents: write # Needed for creating releases
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Tidy modules
working-directory: ./gotest
run: go mod tidy
- name: Build
working-directory: ./gotest
run: go build -v -o test-program
- name: Make executable
working-directory: ./gotest
run: chmod +x test-program
- name: Run program
working-directory: ./gotest
run: ./test-program
- name: Test
working-directory: ./gotest
run: go test -v ./...
create-release:
needs: build
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/otter'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed to fetch all tags
- name: Get latest tag
id: get_latest_tag
run: |
# Get the latest tag, default to v0.0.0 if no tags exist
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "latest_tag=${latest_tag}" >> $GITHUB_OUTPUT
- name: Get version info from commits
id: commit_message
run: |
# Get the merge commit message
merge_msg=$(git log -1 --pretty=format:"%s")
echo "Merge message: $merge_msg"
# If this is a merge commit, get the PR commits
if [[ "$merge_msg" == "Merge pull request"* ]]; then
# Get just the commits from this PR (between HEAD and where PR branched)
pr_commits=$(git log HEAD^2 --not HEAD^ --pretty=format:"%s")
echo "PR commits:"
echo "$pr_commits"
# Check for version prefixes in PR commits
if echo "$pr_commits" | grep -q "^major:"; then
echo "Found major version commit"
echo "version_bump=major" >> $GITHUB_OUTPUT
elif echo "$pr_commits" | grep -q "^minor:"; then
echo "Found minor version commit"
echo "version_bump=minor" >> $GITHUB_OUTPUT
elif echo "$pr_commits" | grep -q "^patch:"; then
echo "Found patch version commit"
echo "version_bump=patch" >> $GITHUB_OUTPUT
else
echo "No version prefix found, skipping release"
echo "version_bump=skip" >> $GITHUB_OUTPUT
fi
else
# Direct commit to branch - same logic
if [[ "$merge_msg" =~ ^major: ]]; then
echo "Found major version commit"
echo "version_bump=major" >> $GITHUB_OUTPUT
elif [[ "$merge_msg" =~ ^minor: ]]; then
echo "Found minor version commit"
echo "version_bump=minor" >> $GITHUB_OUTPUT
elif [[ "$merge_msg" =~ ^patch: ]]; then
echo "Found patch version commit"
echo "version_bump=patch" >> $GITHUB_OUTPUT
else
echo "No version prefix found, skipping release"
echo "version_bump=skip" >> $GITHUB_OUTPUT
fi
fi
- name: Generate next version
id: generate_version
if: steps.commit_message.outputs.version_bump != 'skip'
run: |
latest_tag=${{ steps.get_latest_tag.outputs.latest_tag }}
version_bump="${{ steps.commit_message.outputs.version_bump }}"
# Debug output
echo "Latest tag: $latest_tag"
echo "Version bump type: $version_bump"
# Extract version numbers
major=$(echo $latest_tag | sed 's/v\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/')
minor=$(echo $latest_tag | sed 's/v\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/')
patch=$(echo $latest_tag | sed 's/v\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/')
echo "Current version: major=$major minor=$minor patch=$patch"
# Increment version based on bump type
case "$version_bump" in
"major")
echo "Performing major version bump"
new_major=$((major + 1))
next_version="v${new_major}.0.0"
;;
"minor")
echo "Performing minor version bump"
new_minor=$((minor + 1))
next_version="v${major}.${new_minor}.0"
;;
"patch")
echo "Performing patch version bump"
new_patch=$((patch + 1))
next_version="v${major}.${minor}.${new_patch}"
;;
esac
echo "Next version will be: $next_version"
echo "next_version=${next_version}" >> $GITHUB_OUTPUT
echo "should_release=true" >> $GITHUB_OUTPUT
- name: Create Release
if: steps.commit_message.outputs.version_bump != 'skip' && steps.generate_version.outputs.should_release == 'true'
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.generate_version.outputs.next_version }}
generate_release_notes: true
token: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger Frontera App Workflow
if: steps.commit_message.outputs.version_bump != 'skip' && steps.generate_version.outputs.should_release == 'true'
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.FE_TESTS_GITHUB_TOKEN }}
repository: customeros/cloud
event-type: deploy-frontera-app
client-payload: '{"version": "${{ steps.generate_version.outputs.next_version }}"}'