diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..57bd914 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,32 @@ +name: Build + +on: + push: + branches: [main] + paths-ignore: + - '**.md' + pull_request: + branches: [main] + paths-ignore: + - '**.md' + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + # https://github.com/actions/checkout/releases/tag/v4.2.2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + # https://github.com/actions/setup-java/releases/tag/v4.7.1 + - name: Setup Java + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 + with: + distribution: temurin + java-version: 11 + cache: 'gradle' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew assembleDebug diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml new file mode 100644 index 0000000..fb4ce39 --- /dev/null +++ b/.github/workflows/run.yml @@ -0,0 +1,78 @@ +name: Run + +on: + push: + branches: [main] + paths-ignore: + - '**.md' + pull_request: + branches: [main] + paths-ignore: + - '**.md' + +jobs: + run: + runs-on: ubuntu-22.04 + permissions: + id-token: write + contents: read + steps: + # https://github.com/actions/checkout/releases/tag/v4.2.2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + # https://github.com/launchdarkly/gh-actions/releases/tag/release-secrets-v1.2.0 + - uses: launchdarkly/gh-actions/actions/release-secrets@bbbbbda684f500766264e7fe327668094ba83d1c # release-secrets-v1.2.0 + name: 'Get mobile key and flag key' + with: + aws_assume_role: ${{ vars.AWS_ROLE_ARN }} + ssm_parameter_pairs: '/sdk/common/hello-apps/mobile-key = LAUNCHDARKLY_MOBILE_KEY, + /sdk/common/hello-apps/boolean-flag-key = LAUNCHDARKLY_FLAG_KEY' + + - name: Configure SDK mobile key + run: | + sed -i "s/mobile-key-from-launch-darkly-website/$LAUNCHDARKLY_MOBILE_KEY/" app/src/main/java/com/launchdarkly/hello_android/MainApplication.java + + - name: Configure feature flag key + run: | + sed -i '0,/my-boolean-flag/{s/my-boolean-flag/'"$LAUNCHDARKLY_FLAG_KEY"'/}' app/src/main/java/com/launchdarkly/hello_android/MainActivity.java + + # https://github.com/actions/setup-java/releases/tag/v4.7.1 + - name: Setup Java + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 + with: + distribution: temurin + java-version: 11 + cache: 'gradle' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build debug APK + run: ./gradlew assembleDebug + + - name: Enable KVM group perms (for performance) + 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 + + # https://github.com/jlumbroso/free-disk-space/releases/tag/v1.3.1 + - name: Free disk space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + android: false + large-packages: false + + # https://github.com/reactivecircus/android-emulator-runner/releases/tag/v2.34.0 + - name: Run on emulator + uses: reactivecircus/android-emulator-runner@324029e2f414c084d8b15ba075288885e74aef9c # v2.34.0 + with: + api-level: 29 + arch: x86_64 + script: | + adb install app/build/outputs/apk/debug/app-debug.apk + adb shell am start -n com.launchdarkly.hello_android/.MainActivity + sleep 30 + adb exec-out uiautomator dump /dev/tty > /tmp/uidump.xml + cat /tmp/uidump.xml + grep -oi 'Feature flag.*is true' /tmp/uidump.xml