Skip to content

Commit 0a1f616

Browse files
Allow2 Devruvnet
andcommitted
Add CI/CD and build scripts
GitHub Actions: CI on Java 11/17/21, publish to Maven Central on tag. Bump-version script updates build.gradle and creates git tags. Co-Authored-By: claude-flow <ruv@ruv.net>
1 parent c1884de commit 0a1f616

3 files changed

Lines changed: 147 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [master, main]
6+
pull_request:
7+
branches: [master, main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
java: ['11', '17', '21']
15+
16+
name: Java ${{ matrix.java }}
17+
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Setup Java
22+
uses: actions/setup-java@v4
23+
with:
24+
distribution: 'temurin'
25+
java-version: ${{ matrix.java }}
26+
27+
- name: Setup Gradle
28+
uses: gradle/actions/setup-gradle@v3
29+
30+
- name: Run tests
31+
run: ./gradlew test
32+
33+
- name: Build
34+
run: ./gradlew build

.github/workflows/publish.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
publish:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- name: Setup Java
18+
uses: actions/setup-java@v4
19+
with:
20+
distribution: 'temurin'
21+
java-version: '17'
22+
23+
- name: Setup Gradle
24+
uses: gradle/actions/setup-gradle@v3
25+
26+
- name: Run tests
27+
run: ./gradlew test
28+
29+
- name: Publish to Maven Central
30+
run: ./gradlew publish
31+
env:
32+
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
33+
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
34+
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
35+
GPG_SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }}
36+
37+
- name: Create GitHub Release
38+
uses: softprops/action-gh-release@v2
39+
with:
40+
generate_release_notes: true
41+
body: |
42+
## Installation
43+
44+
### Gradle
45+
```groovy
46+
implementation 'com.allow2:allow2-service:${{ github.ref_name }}'
47+
```
48+
49+
### Maven
50+
```xml
51+
<dependency>
52+
<groupId>com.allow2</groupId>
53+
<artifactId>allow2-service</artifactId>
54+
<version>${{ github.ref_name }}</version>
55+
</dependency>
56+
```
57+
58+
See [Maven Central](https://central.sonatype.com/artifact/com.allow2/allow2-service) for details.

scripts/bump-version.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/usr/bin/env bash
2+
# bump-version.sh -- Standardised version bumping for Allow2 Java Service SDK
3+
# Usage: ./scripts/bump-version.sh [prerelease|patch|minor|major] [--preid alpha|beta|rc]
4+
#
5+
# Java/Gradle: version is in build.gradle AND git tags.
6+
#
7+
# Examples:
8+
# ./scripts/bump-version.sh prerelease --preid alpha # v2.0.0-alpha.1 -> v2.0.0-alpha.2
9+
# ./scripts/bump-version.sh patch # v2.0.0 -> v2.0.1
10+
set -euo pipefail
11+
cd "$(dirname "$0")/.."
12+
13+
BUMP="${1:-prerelease}"
14+
PREID=""
15+
if [[ "${2:-}" == "--preid" ]]; then PREID="${3:-alpha}"; fi
16+
17+
# Get latest version tag
18+
OLD=$(git tag -l 'v*' --sort=-v:refname | head -1 | sed 's/^v//')
19+
if [[ -z "$OLD" ]]; then
20+
echo "No version tags found. Create one first: git tag v2.0.0-alpha.1" >&2
21+
exit 1
22+
fi
23+
24+
# Parse: 2.0.0 or 2.0.0-alpha.1
25+
if [[ "$OLD" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-([a-z]+)\.([0-9]+))?$ ]]; then
26+
MAJOR="${BASH_REMATCH[1]}"
27+
MINOR="${BASH_REMATCH[2]}"
28+
PATCH="${BASH_REMATCH[3]}"
29+
PRE_TYPE="${BASH_REMATCH[5]:-}"
30+
PRE_NUM="${BASH_REMATCH[6]:-}"
31+
else
32+
echo "Cannot parse version: $OLD" >&2; exit 1
33+
fi
34+
35+
case "$BUMP" in
36+
prerelease)
37+
PRE="${PREID:-${PRE_TYPE:-alpha}}"
38+
if [[ "$PRE_TYPE" == "$PRE" && -n "$PRE_NUM" ]]; then
39+
NEW="${MAJOR}.${MINOR}.${PATCH}-${PRE}.$((PRE_NUM + 1))"
40+
else
41+
NEW="${MAJOR}.${MINOR}.${PATCH}-${PRE}.1"
42+
fi
43+
;;
44+
patch) NEW="$MAJOR.$MINOR.$((PATCH + 1))" ;;
45+
minor) NEW="$MAJOR.$((MINOR + 1)).0" ;;
46+
major) NEW="$((MAJOR + 1)).0.0" ;;
47+
*) echo "Usage: $0 [prerelease|patch|minor|major] [--preid alpha|beta|rc]" >&2; exit 1 ;;
48+
esac
49+
50+
# Update build.gradle version
51+
sed -i "s/^version = '.*'/version = '$NEW'/" build.gradle
52+
53+
echo "$OLD -> $NEW"
54+
git tag "v$NEW"
55+
echo "Tagged v$NEW -- push with: git push origin master --tags"

0 commit comments

Comments
 (0)