From 1fd3b98d2a906a6fa2968338cd31ec75470c68d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Lo=CC=81pez=20Man=CC=83as?= Date: Thu, 3 Oct 2024 20:33:07 +0200 Subject: [PATCH] feat: added release config --- .github/workflows/release.yml | 72 +++++++++++++++++++++++++++++++++++ .releaserc | 25 ++++++++++++ build.gradle.kts | 6 +++ 3 files changed, 103 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .releaserc diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..4feaa9d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,72 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Release +on: + push: + branches: [ main ] + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + token: ${{ secrets.SYNCED_GITHUB_TOKEN_REPO }} + - uses: gradle/actions/wrapper-validation@v3 + - name: Set up JDK 21 + uses: actions/setup-java@v4.2.1 + with: + java-version: '21' + distribution: 'adopt' + - name: Create .gpg key + run: | + echo $GPG_KEY_ARMOR | base64 --decode > ./release.asc + gpg --quiet --output $GITHUB_WORKSPACE/release.gpg --dearmor ./release.asc + + echo "Build and publish" + sed -i -e "s,sonatypeToken=,sonatypeToken=$SONATYPE_TOKEN_USERNAME,g" gradle.properties + SONATYPE_TOKEN_PASSWORD_ESCAPED=$(printf '%s\n' "$SONATYPE_TOKEN_PASSWORD" | sed -e 's/[\/&]/\\&/g') + sed -i -e "s,sonatypeTokenPassword=,sonatypeTokenPassword=$SONATYPE_TOKEN_PASSWORD_ESCAPED,g" gradle.properties + sed -i -e "s,signing.keyId=,signing.keyId=$GPG_KEY_ID,g" gradle.properties + sed -i -e "s,signing.password=,signing.password=$GPG_PASSWORD,g" gradle.properties + sed -i -e "s,signing.secretKeyRingFile=,signing.secretKeyRingFile=$GITHUB_WORKSPACE/release.gpg,g" gradle.properties + env: + GPG_KEY_ARMOR: "${{ secrets.SYNCED_GPG_KEY_ARMOR }}" + GPG_KEY_ID: ${{ secrets.SYNCED_GPG_KEY_ID }} + GPG_PASSWORD: ${{ secrets.SYNCED_GPG_KEY_PASSWORD }} + SONATYPE_TOKEN_PASSWORD: ${{ secrets.SYNCED_SONATYPE_TOKEN_PASSWORD }} + SONATYPE_TOKEN_USERNAME: ${{ secrets.SYNCED_SONATYPE_TOKEN_USERNAME }} + + - uses: actions/setup-node@v4 + with: + node-version: '14' + + - name: Install conventionalcommits + run: npm i -D conventional-changelog-conventionalcommits + + - name: Semantic Release + uses: cycjimmy/semantic-release-action@v4.1.0 + with: + extra_plugins: | + "@semantic-release/commit-analyzer@8.0.1" + "@semantic-release/release-notes-generator@9.0.3" + "@google/semantic-release-replace-plugin@1.2.0" + "@semantic-release/exec@5.0.0" + "@semantic-release/git@9.0.1" + "@semantic-release/github@7.2.3" + env: + GH_TOKEN: ${{ secrets.SYNCED_GITHUB_TOKEN_REPO }} diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..81956d5 --- /dev/null +++ b/.releaserc @@ -0,0 +1,25 @@ +branches: + - main +plugins: + - "@semantic-release/commit-analyzer" + - "@semantic-release/release-notes-generator" + - - "@google/semantic-release-replace-plugin" + - replacements: + - files: + - "build.gradle.kts" + from: "\\bversion = \".*\"" + to: "version = \"${nextRelease.version}\"" + - files: + - "README.md" + from: ":([0-9]+).([0-9]+).([0-9]+)" + to: ":${nextRelease.version}" + - - "@semantic-release/exec" + - prepareCmd: "./gradlew build --warn --stacktrace" + publishCmd: "./gradlew publish --warn --stacktrace" + - - "@semantic-release/git" + - assets: + - "build.gradle.kts" + - "*.md" + - "@semantic-release/github" +options: + debug: true diff --git a/build.gradle.kts b/build.gradle.kts index a610254..62776c4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,4 +12,10 @@ plugins { alias(libs.plugins.secrets.gradle.plugin) apply false alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.ksp) +} + +allprojects { + group = "com.google.maps.android" + version = "0.1.0" + val projectArtifactId by extra { project.name } } \ No newline at end of file