Skip to content

Commit

Permalink
github actions
Browse files Browse the repository at this point in the history
  • Loading branch information
morisil committed Dec 16, 2024
1 parent 5d4d476 commit 635f9d6
Show file tree
Hide file tree
Showing 6 changed files with 211 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# These are supported funding model platforms

github: xemantic
74 changes: 74 additions & 0 deletions .github/scripts/update-readme-version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!/bin/bash

#
# Copyright 2024 Kazimierz Pogoda / Xemantic
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Ensure VERSION environment variable is set
if [ -z "$VERSION" ]; then
echo "Error: VERSION environment variable is not set"
exit 1
fi

# Check if settings.gradle.kts exists
if [ ! -f "settings.gradle.kts" ]; then
echo "Error: settings.gradle.kts not found"
exit 1
fi

# Extract groupId and name from settings.gradle.kts
GROUP_ID=$(grep "val groupId = " settings.gradle.kts | sed -n 's/.*groupId = "\(.*\)".*/\1/p')
ARTIFACT_ID=$(grep "val name = " settings.gradle.kts | sed -n 's/.*name = "\(.*\)".*/\1/p')

if [ -z "$GROUP_ID" ] || [ -z "$ARTIFACT_ID" ]; then
echo "Error: Could not extract groupId or name from settings.gradle.kts"
exit 1
fi

# Check if README.md exists
if [ ! -f "README.md" ]; then
echo "Error: README.md not found"
exit 1
fi

# Escape special characters in the group ID for sed
ESCAPED_GROUP_ID=$(echo "$GROUP_ID" | sed 's/\./\\./g')

# Create the pattern to match
PATTERN="\"$ESCAPED_GROUP_ID:$ARTIFACT_ID:[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\""

# Create the replacement string
REPLACEMENT="\"$GROUP_ID:$ARTIFACT_ID:$VERSION\""

# Check if the pattern exists in the file
if ! grep -q "$GROUP_ID:$ARTIFACT_ID:[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" README.md; then
echo "Error: Dependency pattern not found in README.md"
exit 1
fi

# Perform the replacement and save to a temporary file
sed "s|$PATTERN|$REPLACEMENT|g" README.md > README.md.tmp

# Check if sed made any changes
if cmp -s README.md README.md.tmp; then
echo "No version updates were needed"
rm README.md.tmp
exit 0
fi

# Move the temporary file back to the original
mv README.md.tmp README.md

echo "Successfully updated version to $VERSION in README.md"
27 changes: 27 additions & 0 deletions .github/workflows/build-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Build branch
on:
push:
branches-ignore:
- main
pull_request:
branches-ignore:
- main

jobs:
build_branch:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/[email protected]

- name: Setup Java
uses: actions/[email protected]
with:
distribution: 'temurin'
java-version: 23

- name: Setup Gradle
uses: gradle/actions/[email protected]

- name: Build
run: ./gradlew build
26 changes: 26 additions & 0 deletions .github/workflows/build-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Build main
on:
push:
branches:
- main
jobs:
build_main:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/[email protected]

- name: Setup Java
uses: actions/[email protected]
with:
distribution: 'temurin'
java-version: 23

- name: Setup Gradle
uses: gradle/actions/[email protected]

- name: Build
run: ./gradlew build sourcesJar dokkaGeneratePublicationHtml publish
env:
ORG_GRADLE_PROJECT_githubActor: ${{ secrets.GITHUBACTOR }}
ORG_GRADLE_PROJECT_githubToken: ${{ secrets.GITHUBTOKEN }}
57 changes: 57 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build release
on:
release:
types: [published]
jobs:
build_release:
runs-on: ubuntu-latest
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
steps:
- name: Write release version
run: |
VERSION=${GITHUB_REF_NAME#v}
echo Version: $VERSION
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Checkout sources
uses: actions/[email protected]
with:
ref: ${{ github.head_ref }}
fetch-depth: 0

- name: Setup Java
uses: actions/[email protected]
with:
distribution: 'temurin'
java-version: 23

- name: Setup Gradle
uses: gradle/actions/[email protected]

- name: Build
env:
ORG_GRADLE_PROJECT_githubActor: ${{ secrets.GITHUBACTOR }}
ORG_GRADLE_PROJECT_githubToken: ${{ secrets.GITHUBTOKEN }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }}
ORG_GRADLE_PROJECT_sonatypeUser: ${{ secrets.SONATYPE_USER }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
run: ./gradlew -Pversion=$VERSION build sourcesJar dokkaGeneratePublicationHtml publishToSonatype closeAndReleaseSonatypeStagingRepository

- name: Checkout main branch
uses: actions/[email protected]
with:
ref: main
fetch-depth: 0

- name: Update README
run: sh .github/scripts/update-readme-version.sh

- name: Commit README
uses: stefanzweifel/[email protected]
with:
commit_message: Dependency version in README.md updated to ${{ env.VERSION }}
file_pattern: 'README.md'
24 changes: 24 additions & 0 deletions .github/workflows/updater.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: GitHub Actions Version Updater

# Controls when the action will run.
on:
schedule:
# Automatically run on every Sunday
- cron: '0 0 * * 0'

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Git checkout
uses: actions/[email protected]
with:
# [Required] Access token with `workflow` scope.
token: ${{ secrets.WORKFLOW_SECRET }}

- name: Run GitHub Actions Version Updater
uses: saadmk11/[email protected]
with:
# [Required] Access token with `workflow` scope.
token: ${{ secrets.WORKFLOW_SECRET }}

0 comments on commit 635f9d6

Please sign in to comment.