Skip to content

Commit

Permalink
Merge pull request #282 from embrace-io/nelson/nexus-plugin
Browse files Browse the repository at this point in the history
EMB-627 Added support for publishing, closing and releasing sonatype repositories
  • Loading branch information
cesarmax22 committed Jan 23, 2024
2 parents 8ed87b3 + 4cbdfbf commit c7b0bee
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 98 deletions.
124 changes: 124 additions & 0 deletions .github/workflows/pre-release-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Pre-Release for Smoke

env:
SONATYPE_USERNAME: embrace-io
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
MAVEN_QA_USER: github
MAVEN_QA_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
mavenSigningKeyId: ${{ secrets.MAVEN_ANDROID_SIGNING_KEY }}
mavenSigningKeyRingFileEncoded: ${{ secrets.MAVEN_ANDROID_GPG_KEY }}
mavenSigningKeyPassword: ${{ secrets.MAVEN_ANDROID_SIGNING_PASSWORD }}

on:
workflow_dispatch:
inputs:
current_version:
description: 'Version to release'
required: true

jobs:
release:
runs-on: ubuntu-latest
strategy:
matrix:
jdk-version: ["11"]
ndk-version: ["21.4.7075529"]
steps:
- name: Decode Keystore
run: |
mkdir "$RUNNER_TEMP"/keystore
echo $mavenSigningKeyRingFileEncoded | base64 -di > "$RUNNER_TEMP"/keystore/2DE631C1.gpg
echo "mavenSigningKeyRingFile=$RUNNER_TEMP/keystore/2DE631C1.gpg" >> $GITHUB_ENV
- name: Checkout Branch
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.CD_GITHUB_TOKEN }}

- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/.m2/repository
~/.sonar/cache
key: ${{ runner.os }}-gradle-jdk${{ matrix.jdk-version }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle
- name: Install JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.jdk-version }}

- name: Setup NDK ${{ matrix.ndk-version }}
run: |
export ANDROID_ROOT=/usr/local/lib/android
export ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
export ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
ln -sfn $ANDROID_SDK_ROOT/ndk/${{ matrix.ndk-version }} $ANDROID_NDK_ROOT
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1

# Build the entire project, run the tests, and run all static analysis
- name: Gradle Build
run: ./gradlew assembleRelease check --stacktrace

- name: Archive Test Results
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: android-sdk-test-results
path: embrace-android-sdk/build/reports/tests/

- name: Configure git
run: |
git config --global user.name 'embrace-ci[bot]'
git config --global user.email '[email protected]'
git config --global url."https://${{ secrets.CD_GITHUB_USER }}:${{ secrets.CD_GITHUB_TOKEN }}@github.com".insteadOf "https://github.com"
- name: Gradlew Pre-Release
run: |
sed -i -r "s#version = ([^\']+)#version = ${{ github.event.inputs.current_version }}#" gradle.properties
git add gradle.properties
git commit -m "CI/CD: change version to be released: ${{ github.event.inputs.current_version }}"
git push
./gradlew clean publishReleasePublicationToSonatype closeSonatypeStagingRepository -Dorg.gradle.parallel=false --stacktrace
- name: Checkout Swazzler
uses: actions/checkout@v3
with:
repository: embrace-io/embrace-swazzler3
ref: master
path: ./embrace-swazzler3
token: ${{ secrets.CD_GITHUB_TOKEN }}

- name: Swazzler Release
run: |
cd ./embrace-swazzler3
./gradlew clean release -Dorg.gradle.parallel=false -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=${{ github.event.inputs.current_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }}-SNAPSHOT --stacktrace
- name: Cleanup Gradle Cache
# Based on https://docs.github.com/en/actions/guides/building-and-testing-java-with-gradle#caching-dependencies
# Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
# Restoring these files from a GitHub Actions cache might cause problems for future builds.
run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties
# measure-sdk-size:
# uses: embrace-io/android-size-measure/.github/workflows/analyze-sdk-size.yml@main
# needs: release
# with:
# sdk_version: ${{ github.event.inputs.current_version }}
# token: ${{ secrets.CD_GITHUB_TOKEN }}
#
# measure-startup-time:
# uses: embrace-io/android-sdk-benchmark/.github/workflows/macrobenchmark.yml@main
# needs: release
# with:
# sdk_version: ${{ github.event.inputs.current_version }}
# token: ${{ secrets.CD_GITHUB_TOKEN }}
94 changes: 7 additions & 87 deletions .github/workflows/release-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ env:
on:
workflow_dispatch:
inputs:
current_version:
description: 'Version to release'
required: true
next_version:
description: 'Next Version (Do NOT include -SNAPSHOT, will be added automatically)'
required: true
Expand All @@ -27,69 +24,19 @@ jobs:
jdk-version: ["11"]
ndk-version: ["21.4.7075529"]
steps:
- name: Decode Keystore
run: |
mkdir "$RUNNER_TEMP"/keystore
echo $mavenSigningKeyRingFileEncoded | base64 -di > "$RUNNER_TEMP"/keystore/2DE631C1.gpg
echo "mavenSigningKeyRingFile=$RUNNER_TEMP/keystore/2DE631C1.gpg" >> $GITHUB_ENV
- name: Checkout Branch
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.CD_GITHUB_TOKEN }}

- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/.m2/repository
~/.sonar/cache
key: ${{ runner.os }}-gradle-jdk${{ matrix.jdk-version }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle
- name: Install JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.jdk-version }}

- name: Setup NDK ${{ matrix.ndk-version }}
- name: Gradlew Release
run: |
export ANDROID_ROOT=/usr/local/lib/android
export ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
export ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk-bundle
ln -sfn $ANDROID_SDK_ROOT/ndk/${{ matrix.ndk-version }} $ANDROID_NDK_ROOT
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
./gradlew findSonatypeStagingRepository releaseSonatypeStagingRepository -Dorg.gradle.parallel=false --stacktrace
# TODO: check if swazzler gets released too

# Build the entire project, run the tests, and run all static analysis
- name: Gradle Build
run: ./gradlew assembleRelease check --stacktrace

- name: Archive Test Results
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: android-sdk-test-results
path: embrace-android-sdk/build/reports/tests/
- name: Generate Documentation
run: ./gradlew dokkaHtml

- name: Gradlew Release
- name: Configure git
run: |
git config --global user.name 'embrace-ci[bot]'
git config --global user.email '[email protected]'
git config --global url."https://${{ secrets.CD_GITHUB_USER }}:${{ secrets.CD_GITHUB_TOKEN }}@github.com".insteadOf "https://github.com"
sed -i -r "s#version = ([^\']+)#version = ${{ github.event.inputs.current_version }}#" gradle.properties
git add gradle.properties
git commit -m "CI/CD: change version to be released: ${{ github.event.inputs.current_version }}"
git push
./gradlew clean publishReleasePublicationToSonatypeRepository -Dorg.gradle.parallel=false --stacktrace
- name: Generate Documentation
run: ./gradlew dokkaHtml
- name: Publish gh-pages
run: |
Expand Down Expand Up @@ -118,37 +65,10 @@ jobs:
git commit -m "CI/CD: set next version: ${{ github.event.inputs.next_version }}"
git push
- name: Checkout Swazzler
uses: actions/checkout@v3
with:
repository: embrace-io/embrace-swazzler3
ref: master
path: ./embrace-swazzler3
token: ${{ secrets.CD_GITHUB_TOKEN }}

- name: Swazzler Release
run: |
cd ./embrace-swazzler3
./gradlew clean release -Dorg.gradle.parallel=false -Prelease.useAutomaticVersion=true -Prelease.releaseVersion=${{ github.event.inputs.current_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }}-SNAPSHOT --stacktrace
- name: Cleanup Gradle Cache
# Based on https://docs.github.com/en/actions/guides/building-and-testing-java-with-gradle#caching-dependencies
# Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
# Restoring these files from a GitHub Actions cache might cause problems for future builds.
run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties
# measure-sdk-size:
# uses: embrace-io/android-size-measure/.github/workflows/analyze-sdk-size.yml@main
# needs: release
# with:
# sdk_version: ${{ github.event.inputs.current_version }}
# token: ${{ secrets.CD_GITHUB_TOKEN }}
#
# measure-startup-time:
# uses: embrace-io/android-sdk-benchmark/.github/workflows/macrobenchmark.yml@main
# needs: release
# with:
# sdk_version: ${{ github.event.inputs.current_version }}
# token: ${{ secrets.CD_GITHUB_TOKEN }}
rm -f ~/.gradle/caches/modules-2/gc.properties
24 changes: 24 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,30 @@ buildscript {
}
}

plugins {
id("io.github.gradle-nexus.publish-plugin") version "1.3.0"
}

group = "io.embrace"
version = project.properties.version

// load credentials from local properties if present
def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localProperties.load(new FileInputStream(localPropertiesFile))
}

nexusPublishing {
repositories {
sonatype {
username = System.getenv("SONATYPE_USERNAME") ?: localProperties.ossrhUsername
password = System.getenv("SONATYPE_PASSWORD") ?: localProperties.ossrhPassword
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
}
}
}

allprojects {
repositories {
google()
Expand Down
1 change: 0 additions & 1 deletion embrace-android-sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,4 @@ dokkaHtml {
}

task publishLocal { dependsOn("publishMavenPublicationToMavenLocal") }
task publishSonatype { dependsOn("publishMavenPublicationToMavenSonatype") }
task publishQa { dependsOn("publishMavenPublicationToQaRepository") }
10 changes: 0 additions & 10 deletions scripts/release.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,6 @@ publishing {
name = "Snapshot"
url = "https://repo.embrace.io/repository/android-testing"
}

// sonatype repo that provides path to publishing on maven central
maven {
credentials {
username System.getenv("SONATYPE_USERNAME") ?: localProperties.ossrhUsername
password System.getenv("SONATYPE_PASSWORD") ?: localProperties.ossrhPassword
}
name = "sonatype"
url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2"
}
}
}

Expand Down

0 comments on commit c7b0bee

Please sign in to comment.