Skip to content

Merge pull request #29 from ruedigerp/develop #38

Merge pull request #29 from ruedigerp/develop

Merge pull request #29 from ruedigerp/develop #38

Workflow file for this run

name: Build, Package, Release
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Setup Go
uses: actions/[email protected]
with:
go-version: "1.21"
- name: Checkout repository
uses: actions/[email protected]
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.MO_CLI_TOKEN }}
# - name: Create Sematic Release Version
# run: |
# git config --global user.email "[email protected]"
# git config --global user.name "dns-manager"
# git config --global credential.helper cache
# npx standard-version
# git push --follow-tags origin main
# - name: release-please
# uses: googleapis/release-please-action@v4
# with:
# # this assumes that you have created a personal access token
# # (PAT) and configured it as a GitHub action secret named
# # `MY_RELEASE_PLEASE_TOKEN` (this secret name is not important).
# token: ${{ secrets.MO_CLI_TOKEN }}
# # this is a built-in strategy in release-please, see "Action Inputs"
# # for more options
# release-type: simple
# target-branch: ${{ github.ref_name }}
# - name: Get the current version
# id: get_version
# run: echo "VERSION=$(git describe --tags $(git rev-list --tags --max-count=1))" >> $GITHUB_ENV
# - name: release-please
# uses: googleapis/release-please-action@v4
# id: release
# with:
# token: ${{ secrets.MO_CLI_TOKEN }}
# release-type: simple
# target-branch: ${{ github.ref_name }}
# - name: Fetch latest tags
# run: git fetch --tags
# - name: Get latest version tag
# id: get_tag
# # run: echo "tag=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
# run: echo "tag=$(git describe --tags $(git rev-list --tags --max-count=1))" >> $GITHUB_ENV
# - name: Install Node.js
# uses: actions/setup-node@v3
# with:
# node-version: "18"
# - name: Install dependencies
# run: npm install
# - name: Apply Changesets
# id: changesets
# run: |
# # Bump the version and commit the changes
# npx changeset version
# # Push the changes back to the repo
# git config user.name "github-actions[bot]"
# git config user.email "github-actions[bot]@users.noreply.github.com"
# git push --follow-tags origin ${{ github.ref_name }}
# - name: Extract new version
# id: get_version
# run: echo "tag=$(node -p \"require('./package.json').version\")" >> $GITHUB_ENV
- name: Get latest tag
id: get_tag
run:
echo "current tag=$(git describe --tags --abbrev=0)"
echo "tag=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
- name: Bump version
id: bump_version
run: |
# Neueste Commit-Nachricht abrufen
commit_message=$(git log -1 --pretty=%B)
# Alte Version ohne das 'v'
version=${tag/v/}
# Version in Major, Minor, Patch aufteilen
IFS='.' read -r major minor patch <<< "$version"
# Basierend auf Commit-Nachricht die Version erhöhen
if [[ "$commit_message" == fix:* ]]; then
patch=$((patch + 1)) # Patch erhöhen
elif [[ "$commit_message" == feat:* ]]; then
minor=$((minor + 1)) # Minor erhöhen
patch=0 # Patch zurücksetzen
elif [[ "$commit_message" == chore:* ]]; then
major=$((major + 1)) # Major erhöhen
minor=0 # Minor zurücksetzen
patch=0 # Patch zurücksetzen
else
echo "No version bump for commit message: $commit_message"
exit 0
fi
# Neue Version erstellen
new_version="v${major}.${minor}.${patch}"
echo "new_version=$new_version" >> $GITHUB_ENV
echo "::set-output name=new_version::$new_version"
- name: Create new tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag ${{ env.new_version }}
git push origin ${{ env.new_version }}
- name: Create release in another repo
run: |
gh release create ${{ env.new_version }} --title "Release ${{ env.new_version }}" --repo ruedigerp/homebrew-dns-manager
env:
GH_TOKEN: ${{ secrets.MO_CLI_TOKEN }}
new_version: ${{ env.new_version }}
# - name: Create release in another repo
# run: |
# echo "Creating release ${tag}"
# gh release create refs/tags/${tag} --title "Release ${tag}" --repo ruedigerp/homebrew-dns-manager
# env:
# GH_TOKEN: ${{ secrets.MO_CLI_TOKEN }}
- name: Initialize Go dependencies
run: go mod tidy
# - name: Cache Go modules
# uses: actions/cache@v3
# with:
# path: |
# ~/.cache/go-build
# ~/go/pkg/mod
# key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
# restore-keys: |
# ${{ runner.os }}-go-
- name: Execute make all
run: make all
- name: Package artefacts
run: |
for file in builds/*; do
tar -czvf builds/$(basename "$file").tar.gz -C builds $(basename "$file")
done
ls -lisa builds
- name: Upload tarballs/executable
run: |
ls -lisa builds
for tarball in builds/*.tar.gz; do
echo "Tarball: $tarball"
gh release upload "${{ steps.bump_version.outputs.new_version }}" "$tarball" --repo ruedigerp/homebrew-dns-manager
done
gh release upload "${{ steps.bump_version.outputs.new_version }}" "builds/dns-manager-${{ steps.bump_version.outputs.new_version }}-windows-amd64" --repo ruedigerp/homebrew-dns-manager
env:
GH_TOKEN: ${{ secrets.MO_CLI_TOKEN }}
new_version: ${{ env.new_version }}
- name: UPDATE BREW / SCOOP
run: |
./release.sh
git config --global user.email "[email protected]"
git config --global user.name "dns-manager"
git config --global credential.helper cache
git clone https://${{secrets.MO_CLI_TOKEN}}@github.com/ruedigerp/homebrew-dns-manager
cd homebrew-dns-manager
cp ../dns-manager.rb .
cp ../dns-manager.json .
cp ../CHANGELOG.md .
git add .
git commit -m " ${{ steps.bump_version.outputs.new_version }}"
git push
env:
GH_TOKEN: ${{ secrets.MO_CLI_TOKEN }}
new_version: ${{ env.new_version }}