diff --git a/.github/workflows/release-aar.yaml b/.github/workflows/release-aar.yaml new file mode 100644 index 00000000000000..2e8eb12f94cb10 --- /dev/null +++ b/.github/workflows/release-aar.yaml @@ -0,0 +1,27 @@ +name: Release React Native AAR +# This workflow is manually triggered to release a new React Native AAR version +on: + workflow_dispatch: + +jobs: + release-aar: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Build + run: | + cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import + gpg --list-secret-keys --keyid-format LONG + yarn install + echo "signing.gnupg.keyName=5A0C5406E56C2DC4749A8E481AF5F9E36EC70A60" >> gradle.properties + echo "signing.gnupg.passphrase=${OSSRH_GPG_SECRET_KEY_PASSWORD}" >> gradle.properties + echo "repositoryUsername=${OSSRH_SONATYPE_USERNAME}" >> gradle.properties + echo "repositoryPassword=${OSSRH_SONATYPE_PASSWORD}" >> gradle.properties + sed -i.bu 's/com.facebook.react/com.walmartlabs.ern/g' ReactAndroid/gradle.properties + ./gradlew ReactAndroid:assembleRelease + ./gradlew ReactAndroid:uploadArchives + env: + OSSRH_GPG_SECRET_KEY: ${{ secrets.OSSRH_GPG_SECRET_KEY }} + OSSRH_GPG_SECRET_KEY_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} + OSSRH_SONATYPE_USERNAME: ${{ secrets.OSSRH_SONATYPE_USERNAME }} + OSSRH_SONATYPE_PASSWORD: ${{ secrets.OSSRH_SONATYPE_PASSWORD }} diff --git a/ReactAndroid/release.gradle b/ReactAndroid/release.gradle index 9ddc7cfc78be21..3d877ad8344dee 100644 --- a/ReactAndroid/release.gradle +++ b/ReactAndroid/release.gradle @@ -20,6 +20,18 @@ def isReleaseBuild() { return VERSION_NAME.contains("SNAPSHOT") == false } +def getRepositoryUrl() { + return project.findProperty("repositoryUrl") ?: "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} + +def getRepositoryUsername() { + return project.findProperty("repositoryUsername") ?: "" +} + +def getRepositoryPassword() { + return project.findProperty("repositoryPassword") ?: "" +} + def configureReactNativePom(def pom) { pom.project { name(POM_NAME) @@ -72,9 +84,28 @@ afterEvaluate { project -> signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + useGpgCmd() sign(configurations.archives) } + uploadArchives { + configuration = configurations.archives + repositories.mavenDeployer { + beforeDeployment { + MavenDeployment deployment -> signing.signPom(deployment) + } + + repository(url: getRepositoryUrl()) { + authentication( + userName: getRepositoryUsername(), + password: getRepositoryPassword()) + + } + + configureReactNativePom(pom) + } + } + task installArchives(type: Upload) { configuration = configurations.archives repositories.mavenDeployer {