From 4df9795820a374fd48ed4ce432f85bf7b3c46d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Duy=20Ph=E1=BA=A1m?= Date: Thu, 7 Nov 2024 16:32:54 +0700 Subject: [PATCH] Setup GitHub Actions to release lib --- .circleci/config.yml | 208 +++++++++++++++---------------- .github/workflows/build_test.yml | 116 ++++++++--------- .github/workflows/release.yml | 61 +++++++++ 3 files changed, 223 insertions(+), 162 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index ac7fba2..9be8bfc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,104 +1,104 @@ -version: 2.1 -orbs: - gradle: circleci/gradle@2.2.0 - android: circleci/android@2.2.0 - -jobs: - run-tests-generate-samples: - executor: - name: android/android-machine - resource-class: large - tag: 2023.05.1 - steps: - - checkout - - restore_cache: - key: jars2-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} - - run: - name: Chmod permissions #if permission for Gradlew Dependencies fail, use this. - command: sudo chmod +x ./gradlew - - run: - name: Wrapper - command: ./gradlew wrapper - - run: - name: Download Dependencies - command: ./gradlew androidDependencies - - save_cache: - paths: - - ~/.gradle - key: jars2-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} - - - android/create-avd: - avd-name: testDevice - system-image: system-images;android-30;google_apis;x86_64 - install: true - additional-args: --device pixel_4 - - - android/start-emulator: - avd-name: testDevice - no-window: true - restore-gradle-cache-prefix: v2a - - - android/run-tests: - test-command: ./gradlew lib:connectedDebugAndroidTest - max-tries: 3 - - android/save-gradle-cache: - cache-prefix: v2a - - store_test_results: - path: lib/build/outputs/androidTest-results - deploy-to-sonatype: - executor: - name: android/android-machine - resource-class: large - tag: 2023.05.1 - steps: - - checkout - - restore_cache: - key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} - - run: - name: Chmod permissions #if permission for Gradlew Dependencies fail, use this. - command: sudo chmod +x ./gradlew - - run: - name: Wrapper - command: ./gradlew wrapper - - run: - name: Download Dependencies - command: ./gradlew androidDependencies - - save_cache: - paths: - - ~/.gradle - key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} - - run: - name: Force break line gradle properties - command: echo -e '\n' >> gradle.properties - - run: - name: Inject Maven signing key - command: | - echo $GPG_SIGNING_KEY \ - | awk 'NR == 1 { print "SIGNING_KEY=" } 1' ORS='\\n' \ - >> gradle.properties - - run: - name: Snapshot Release Check - command: | - echo -e "\nIS_SNAPSHOT_RELEASE=$( [[ "${CIRCLE_BRANCH}" =~ ^epic.* ]] && echo true || echo false )" >> gradle.properties - - run: - name: Publish to Maven - command: ./gradlew assemble publish -workflows: - build-test-sonar-publish: - jobs: - - run-tests-generate-samples: - context: - - SonarCloud - - maven-sign - - mobile - - deploy-to-sonatype: - name: Build, run tests, sonar and push to maven staging - context: - - SonarCloud - - maven-sign - - mobile - filters: - branches: - only: - - /^(epic)\/.*/ - - staging \ No newline at end of file +#version: 2.1 +#orbs: +# gradle: circleci/gradle@2.2.0 +# android: circleci/android@2.2.0 +# +#jobs: +# run-tests-generate-samples: +# executor: +# name: android/android-machine +# resource-class: large +# tag: 2023.05.1 +# steps: +# - checkout +# - restore_cache: +# key: jars2-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} +# - run: +# name: Chmod permissions #if permission for Gradlew Dependencies fail, use this. +# command: sudo chmod +x ./gradlew +# - run: +# name: Wrapper +# command: ./gradlew wrapper +# - run: +# name: Download Dependencies +# command: ./gradlew androidDependencies +# - save_cache: +# paths: +# - ~/.gradle +# key: jars2-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} +# +# - android/create-avd: +# avd-name: testDevice +# system-image: system-images;android-30;google_apis;x86_64 +# install: true +# additional-args: --device pixel_4 +# +# - android/start-emulator: +# avd-name: testDevice +# no-window: true +# restore-gradle-cache-prefix: v2a +# +# - android/run-tests: +# test-command: ./gradlew lib:connectedDebugAndroidTest +# max-tries: 3 +# - android/save-gradle-cache: +# cache-prefix: v2a +# - store_test_results: +# path: lib/build/outputs/androidTest-results +# deploy-to-sonatype: +# executor: +# name: android/android-machine +# resource-class: large +# tag: 2023.05.1 +# steps: +# - checkout +# - restore_cache: +# key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} +# - run: +# name: Chmod permissions #if permission for Gradlew Dependencies fail, use this. +# command: sudo chmod +x ./gradlew +# - run: +# name: Wrapper +# command: ./gradlew wrapper +# - run: +# name: Download Dependencies +# command: ./gradlew androidDependencies +# - save_cache: +# paths: +# - ~/.gradle +# key: jars-{{ checksum "build.gradle.kts" }}-{{ checksum "lib/build.gradle.kts" }} +# - run: +# name: Force break line gradle properties +# command: echo -e '\n' >> gradle.properties +# - run: +# name: Inject Maven signing key +# command: | +# echo $GPG_SIGNING_KEY \ +# | awk 'NR == 1 { print "SIGNING_KEY=" } 1' ORS='\\n' \ +# >> gradle.properties +# - run: +# name: Snapshot Release Check +# command: | +# echo -e "\nIS_SNAPSHOT_RELEASE=$( [[ "${CIRCLE_BRANCH}" =~ ^epic.* ]] && echo true || echo false )" >> gradle.properties +# - run: +# name: Publish to Maven +# command: ./gradlew assemble publish +#workflows: +# build-test-sonar-publish: +# jobs: +# - run-tests-generate-samples: +# context: +# - SonarCloud +# - maven-sign +# - mobile +# - deploy-to-sonatype: +# name: Build, run tests, sonar and push to maven staging +# context: +# - SonarCloud +# - maven-sign +# - mobile +# filters: +# branches: +# only: +# - /^(epic)\/.*/ +# - staging \ No newline at end of file diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index b871dd9..60f3c62 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -1,58 +1,58 @@ -name: Build Test - -on: - push: - branches: - - 'task/**' - - 'bug/**' - - 'fix/**' - - 'epic/**' - -jobs: - build-test: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Enable KVM group perms - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - ls /dev/kvm - - - name: Setup Java 17 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' # See 'Supported distributions' for available options - java-version: '17' - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Setup Android SDK - uses: android-actions/setup-android@v3 - - - name: Accept licenses - run: yes | sdkmanager --licenses || true - - - name: Setup GMD - run: ./gradlew :lib:pixel6Api33Setup - --info - -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true - -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" - - - name: Run Instrumental tests - run: ./gradlew :lib:pixel6Api33DebugAndroidTest - -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" - -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true - -Pandroid.experimental.androidTest.numManagedDeviceShards=1 - -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 - -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=5 - - - name: Upload test results - uses: actions/upload-artifact@v3 - with: - name: test-results - path: lib/build/outputs/androidTest-results \ No newline at end of file +#name: Build Test +# +#on: +# push: +# branches: +# - 'task/**' +# - 'bug/**' +# - 'fix/**' +# - 'epic/**' +# +#jobs: +# build-test: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout code +# uses: actions/checkout@v4 +# +# - name: Enable KVM group perms +# run: | +# echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules +# sudo udevadm control --reload-rules +# sudo udevadm trigger --name-match=kvm +# ls /dev/kvm +# +# - name: Setup Java 17 +# uses: actions/setup-java@v4 +# with: +# distribution: 'temurin' # See 'Supported distributions' for available options +# java-version: '17' +# +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 +# +# - name: Setup Android SDK +# uses: android-actions/setup-android@v3 +# +# - name: Accept licenses +# run: yes | sdkmanager --licenses || true +# +# - name: Setup GMD +# run: ./gradlew :lib:pixel6Api33Setup +# --info +# -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true +# -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" +# +# - name: Build lib and run instrumentation tests +# run: ./gradlew :lib:pixel6Api33DebugAndroidTest +# -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" +# -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true +# -Pandroid.experimental.androidTest.numManagedDeviceShards=1 +# -Pandroid.experimental.testOptions.managedDevices.maxConcurrentDevices=1 +# -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=5 +# +# - name: Upload test results +# uses: actions/upload-artifact@v3 +# with: +# name: test-results +# path: lib/build/outputs/androidTest-results \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e7afffb --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Build and Deploy to SonarType + +on: + push: + branches: + - 'staging' + - 'epic/**' + - 'task/**' + +jobs: + build-test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + ls /dev/kvm + + - name: Setup Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' # See 'Supported distributions' for available options + java-version: '17' + + - name: Restore gradle.properties + env: + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + SIGNING_KEY_PWD: ${{ secrets.SIGNING_KEY_PWD }} + shell: bash + run: | + mkdir -p ~/.gradle/ + echo "GRADLE_USER_HOME=${HOME}/.gradle" >> $GITHUB_ENV + echo "OSSRH_USERNAME=${OSSRH_USERNAME}">> ~/.gradle/gradle.properties + echo "OSSRH_PASSWORD=${OSSRH_PASSWORD}">> ~/.gradle/gradle.properties + echo "SIGNING_KEY=${GPG_SIGNING_KEY}">> ~/.gradle/gradle.properties + echo "SIGNING_KEY_PWD=${SIGNING_KEY_PWD}">> ~/.gradle/gradle.properties + cat ~/.gradle/gradle.properties + +# - name: Force break line gradle properties +# run: echo -e '\n' >> gradle.properties + +# - run: +# name: Inject Maven signing key +# command: | +# echo $GPG_SIGNING_KEY \ +# | awk 'NR == 1 { print "SIGNING_KEY=" } 1' ORS='\\n' \ +# >> gradle.properties + + - name: Snapshot Release Check + run: | + echo -e "\nIS_SNAPSHOT_RELEASE=$( [[ "${CIRCLE_BRANCH}" =~ ^task.* ]] && echo true || echo false )" >> gradle.properties + + - name: Publish to Maven + run: ./gradlew assemble publish \ No newline at end of file