name: Release on: push: branches: [main] permissions: contents: write jobs: release: runs-on: ubuntu-latest if: "!startsWith(github.event.head_commit.message, 'chore:')" steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Determine version id: version run: | LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") echo "Latest tag: $LATEST_TAG" COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"%s") echo "Commits since last tag:" echo "$COMMITS" VERSION=${LATEST_TAG#v} MAJOR=$(echo $VERSION | cut -d. -f1) MINOR=$(echo $VERSION | cut -d. -f2) PATCH=$(echo $VERSION | cut -d. -f3) if echo "$COMMITS" | grep -qE "^major:"; then MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 elif echo "$COMMITS" | grep -qE "^feat:"; then MINOR=$((MINOR + 1)); PATCH=0 else PATCH=$((PATCH + 1)) fi NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}" echo "New version: $NEW_VERSION" echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT - name: Tag release run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git tag ${{ steps.version.outputs.version }} git push origin ${{ steps.version.outputs.version }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PAT }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Build and push uses: docker/build-push-action@v6 with: push: true platforms: linux/amd64,linux/arm64 tags: | rwejlgaard/octopus_exporter:${{ steps.version.outputs.version }} rwejlgaard/octopus_exporter:latest