-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1445 from microsoft/feat/automate-ossrh-release
Automate releases from OSSRH to Maven Central
- Loading branch information
Showing
13 changed files
with
150 additions
and
266 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,19 +10,22 @@ permissions: | |
contents: write | ||
|
||
env: | ||
PREVIEW_TASK: publishMavenPublicationToSonatypeSnapshotRepository | ||
PUBLISH_TASK: publishMavenPublicationToSonatypeRepository | ||
PREVIEW_TASK: publishToSonatype | ||
PUBLISH_TASK: publishToSonatype closeSonatypeStagingRepository | ||
|
||
jobs: | ||
release-to-maven-central-snapshot: | ||
if: github.ref == 'refs/heads/main' | ||
runs-on: ubuntu-latest | ||
environment: maven_central_snapshot | ||
defaults: | ||
run: | ||
working-directory: ./ | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup JDK | ||
uses: actions/setup-java@v4 | ||
with: | ||
with: | ||
java-version: 17 | ||
distribution: 'temurin' | ||
cache: gradle | ||
|
@@ -31,17 +34,15 @@ jobs: | |
- name: Download file | ||
run: .\scripts\decodeAndWrite.ps1 -encodedValue $env:ENCODED_VALUE -outputPath $env:OUTPUT_PATH | ||
shell: pwsh | ||
env: | ||
env: | ||
ENCODED_VALUE: ${{ secrets.LOCAL_PROPERTIES }} | ||
OUTPUT_PATH: 'local.properties' | ||
working-directory: ./ | ||
- name: Download file | ||
run: .\scripts\decodeAndWrite.ps1 -encodedValue $env:ENCODED_VALUE -outputPath $env:OUTPUT_PATH | ||
shell: pwsh | ||
env: | ||
env: | ||
ENCODED_VALUE: ${{ secrets.SECRING_GPG }} | ||
OUTPUT_PATH: 'secring.gpg' | ||
working-directory: ./ | ||
- name: Copy secring | ||
run: | | ||
Copy-Item secring.gpg components/abstractions/ -Verbose | ||
|
@@ -53,22 +54,45 @@ jobs: | |
Copy-Item secring.gpg components/http/okHttp/ -Verbose | ||
Copy-Item secring.gpg components/bundle/ -Verbose | ||
shell: pwsh | ||
working-directory: ./ | ||
- name: Build with Gradle | ||
run: ./gradlew --no-daemon build | ||
working-directory: ./ | ||
- name: Publish Preview | ||
- name: Publish to local Maven cache | ||
run: ./gradlew --no-daemon publishToMavenLocal | ||
- name: Get current SNAPSHOT version | ||
shell: pwsh | ||
run: | | ||
$contents = Get-Content gradle.properties -Raw | ||
$major = $contents | Select-String -Pattern 'mavenMajorVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$minor = $contents | Select-String -Pattern 'mavenMinorVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$patch = $contents | Select-String -Pattern 'mavenPatchVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$version = "$major.$minor.$patch-SNAPSHOT" | ||
echo "Current version is $version" | ||
echo "PACKAGE_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | ||
- name: Inspect contents of local Maven cache | ||
shell: pwsh | ||
run: | | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-abstractions -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-authentication-azure -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-http-okHttp -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-form -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-json -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-text -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-multipart -Version $PACKAGE_VERSION | ||
- name: Publish to Snapshot Repository | ||
run: ./gradlew --no-daemon $PREVIEW_TASK | ||
working-directory: ./ | ||
|
||
|
||
release-to-maven-central: | ||
if: contains(github.ref, 'refs/tags/v') | ||
runs-on: ubuntu-latest | ||
environment: maven_central | ||
defaults: | ||
run: | ||
working-directory: ./ | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup JDK | ||
uses: actions/setup-java@v4 | ||
with: | ||
with: | ||
java-version: 17 | ||
distribution: 'temurin' | ||
cache: gradle | ||
|
@@ -77,17 +101,15 @@ jobs: | |
- name: Download file | ||
run: .\scripts\decodeAndWrite.ps1 -encodedValue $env:ENCODED_VALUE -outputPath $env:OUTPUT_PATH | ||
shell: pwsh | ||
env: | ||
env: | ||
ENCODED_VALUE: ${{ secrets.LOCAL_PROPERTIES }} | ||
OUTPUT_PATH: 'local.properties' | ||
working-directory: ./ | ||
OUTPUT_PATH: 'local.properties' | ||
- name: Download file | ||
run: .\scripts\decodeAndWrite.ps1 -encodedValue $env:ENCODED_VALUE -outputPath $env:OUTPUT_PATH | ||
shell: pwsh | ||
env: | ||
env: | ||
ENCODED_VALUE: ${{ secrets.SECRING_GPG }} | ||
OUTPUT_PATH: 'secring.gpg' | ||
working-directory: ./ | ||
- name: Copy secring | ||
run: | | ||
Copy-Item secring.gpg components/abstractions/ -Verbose | ||
|
@@ -99,34 +121,45 @@ jobs: | |
Copy-Item secring.gpg components/http/okHttp/ -Verbose | ||
Copy-Item secring.gpg components/bundle/ -Verbose | ||
shell: pwsh | ||
working-directory: ./ | ||
- name: Build with Gradle | ||
run: ./gradlew --no-daemon build | ||
working-directory: ./ | ||
- name: Publish to local Maven cache for validation | ||
run: ./gradlew --no-daemon publishToMavenLocal | ||
- name: Get current SNAPSHOT version | ||
shell: pwsh | ||
run: | | ||
$contents = Get-Content gradle.properties -Raw | ||
$major = $contents | Select-String -Pattern 'mavenMajorVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$minor = $contents | Select-String -Pattern 'mavenMinorVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$patch = $contents | Select-String -Pattern 'mavenPatchVersion = ([0-9]+)' | ForEach-Object { $_.Matches.Groups[1].Value } | ||
$version = "$major.$minor.$patch-SNAPSHOT" | ||
echo "Current version is $version" | ||
echo "PACKAGE_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | ||
- name: Inspect contents of local Maven cache | ||
shell: pwsh | ||
run: | | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-abstractions -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-authentication-azure -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-http-okHttp -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-form -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-json -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-text -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-serialization-multipart -Version $PACKAGE_VERSION | ||
.\scripts\ValidatePackageContents.ps1 -ArtifactId microsoft-kiota-bundle -Version $PACKAGE_VERSION | ||
- name: Publish Release abstractions #publishing all components at once often results in split staging repos which fails to release | ||
run: ./gradlew --no-daemon :components:abstractions:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release serialization form | ||
run: ./gradlew --no-daemon :components:serialization:form:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release serialization json | ||
run: ./gradlew --no-daemon :components:serialization:json:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release serialization text | ||
run: ./gradlew --no-daemon :components:serialization:text:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release serialization multipart | ||
run: ./gradlew --no-daemon :components:serialization:multipart:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release authentication azure | ||
run: ./gradlew --no-daemon :components:authentication:azure:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release okHttp | ||
run: ./gradlew --no-daemon :components:http:okHttp:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Publish Release bundle | ||
run: ./gradlew --no-daemon :components:bundle:$PUBLISH_TASK -PmavenCentralSnapshotArtifactSuffix="" | ||
working-directory: ./ | ||
- name: Release | ||
uses: anton-yurchenko/[email protected] | ||
env: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -354,4 +354,8 @@ MigrationBackup/ | |
.gradle | ||
|
||
# build file | ||
build/ | ||
build/ | ||
|
||
local.properties | ||
|
||
*.gpg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.