Repository navigation
137 lines (122 loc) · 4.9 KB
/
Copy pathrelease.yml
File metadata and controls
137 lines (122 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: Release & Distribute
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
inputs:
version:
description: 'Release version (e.g. 0.1.0)'
required: true
type: string
next_version:
description: 'Next SNAPSHOT version to commit to master (e.g. 0.1.1-SNAPSHOT, or leave empty)'
required: false
type: string
publish_maven_central:
description: 'Publish to Maven Central (requires SONATYPE_TOKEN & GPG secrets)'
required: false
type: boolean
default: false
permissions:
contents: read
jobs:
release:
name: Build, Package, and Distribute
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Determine Release Version
id: version_step
env:
INPUT_VERSION: ${{ inputs.version }}
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${INPUT_VERSION}"
else
VERSION="${GITHUB_REF_NAME#v}"
fi
echo "RELEASE_VERSION=${VERSION}" >> $GITHUB_OUTPUT
echo "Releasing version: ${VERSION}"
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: '3.11'
- name: Set up JDK 17
uses: actions/setup-java@v6
with:
java-version: '17'
distribution: 'temurin'
server-id: github
cache: 'maven'
- name: Bump POM Version
env:
RELEASE_VERSION: ${{ steps.version_step.outputs.RELEASE_VERSION }}
run: |
mvn versions:set -DnewVersion="${RELEASE_VERSION}" -DgenerateBackupPoms=false --batch-mode
- name: Run Tests and Regression Suite
run: |
mvn clean test --batch-mode
- name: Build and Package Release Artifacts
run: |
mvn package -P release -DskipTests --batch-mode
- name: Prepare GitHub Release Assets
env:
RELEASE_VERSION: ${{ steps.version_step.outputs.RELEASE_VERSION }}
run: |
mkdir -p release-assets
VERSION="${RELEASE_VERSION}"
cp tsql-scriptdom-core/target/tsql-scriptdom-core-${VERSION}.jar release-assets/tsql-scriptdom-core-${VERSION}.jar
cp tsql-scriptdom-core/target/tsql-scriptdom-core-${VERSION}-sources.jar release-assets/tsql-scriptdom-core-${VERSION}-sources.jar
cp tsql-scriptdom-core/target/tsql-scriptdom-core-${VERSION}-javadoc.jar release-assets/tsql-scriptdom-core-${VERSION}-javadoc.jar
cd release-assets
sha256sum ./* > SHA256SUMS
cd ..
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_VERSION: ${{ steps.version_step.outputs.RELEASE_VERSION }}
run: |
VERSION="${RELEASE_VERSION}"
TAG_NAME="v${VERSION}"
gh release create "${TAG_NAME}" \
./release-assets/* \
--title "Release v${VERSION}" \
--generate-notes || gh release upload "${TAG_NAME}" ./release-assets/* --clobber
- name: Deploy to GitHub Packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mvn deploy -P release -DskipTests --batch-mode || echo "Notice: GitHub Packages deployment skipped (package version likely already published)."
- name: Deploy to Maven Central (Optional)
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
OSSRH_GPG_SECRET_KEY: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
OSSRH_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_PASSPHRASE }}
RELEASE_VERSION: ${{ steps.version_step.outputs.RELEASE_VERSION }}
run: |
if [ -n "$SONATYPE_USERNAME" ] && [ -n "$SONATYPE_PASSWORD" ] && [ -n "$OSSRH_GPG_SECRET_KEY" ]; then
echo "Publishing to Maven Central via Sonatype Central Portal..."
echo "$OSSRH_GPG_SECRET_KEY" | gpg --batch --import
VERSION="${RELEASE_VERSION}"
python3 scripts/publish_central.py "${VERSION}"
else
echo "Notice: Maven Central secrets (SONATYPE_USERNAME / SONATYPE_PASSWORD / OSSRH_GPG_SECRET_KEY) not configured. Skipping Maven Central deployment."
fi
- name: Bump to Next SNAPSHOT Version
if: ${{ inputs.next_version != '' }}
env:
INPUT_NEXT_VERSION: ${{ inputs.next_version }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
mvn versions:set -DnewVersion="${INPUT_NEXT_VERSION}" -DgenerateBackupPoms=false --batch-mode
git commit -am "chore: bump version to ${INPUT_NEXT_VERSION} [skip ci]"
git push origin master