From 1d540ff32a3ee75709fd01f1d387db37f85db004 Mon Sep 17 00:00:00 2001 From: "posix4e@gmail.com" Date: Sat, 15 Jul 2023 14:20:15 -0400 Subject: [PATCH] add ci --- .github/workflows/android.yml | 56 ++++++++++++++ .github/workflows/release_ci.yml | 127 +++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 .github/workflows/android.yml create mode 100644 .github/workflows/release_ci.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..9fe6d7c --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,56 @@ +name: Android CI + +on: + push: + branches: [ "main", "develop" ] + pull_request: + paths: + - "puppet/**" + branches: [ "main" ] + workflow_dispatch: +jobs: + build: + + runs-on: ubuntu-latest + defaults: + run: + working-directory: puppet + steps: + - uses: actions/checkout@v3 + - name: set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Install Git LFS + run: sudo apt-get install git-lfs + - name: Set up Git LFS + run: git lfs install + - name: Pull LFS Objects + run: git lfs pull + + - name: Create file + run: cat /home/runner/work/puppet/puppet/puppet/app/google-services.json | base64 + + - name: Putting data + env: + DATA: ${{ secrets.GOOGLE_SERVICES_JSON }} + run: echo $DATA > /home/runner/work/puppet/puppet/puppet/app/google-services.json + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + # Run Tests Build + - name: Run gradle tests + run: ./gradlew test + + - name: Build with Gradle + run: ./gradlew build + + - name: Archive lint results + if: always() + uses: actions/upload-artifact@v3 + with: + name: lint-report + path: app/build/reports/lint-results-debug.html diff --git a/.github/workflows/release_ci.yml b/.github/workflows/release_ci.yml new file mode 100644 index 0000000..325b1d4 --- /dev/null +++ b/.github/workflows/release_ci.yml @@ -0,0 +1,127 @@ +name: Release All CI +env: + main_project_module: app +on: + push: + paths: + - "puppet/**" + tags: + - '*' + workflow_dispatch: +jobs: + build-android: + permissions: write-all + runs-on: ubuntu-latest + defaults: + run: + working-directory: puppet + steps: + - uses: actions/checkout@v3 + # Set Current Date As Env Variable + - name: Set current date as env variable + run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + # Set Repository Name As Env Variable + - name: Set repository name as env variable + run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + + - name: set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Create file + run: cat /home/runner/work/puppet/puppet/puppet/app/google-services.json | base64 + + - name: Putting data + env: + DATA: ${{ secrets.GOOGLE_SERVICES_JSON }} + run: echo $DATA > /home/runner/work/puppet/puppet/puppet/app/google-services.json + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + # Run Tests Build + - name: Run gradle tests + run: ./gradlew test + + - name: Build with Gradle + run: ./gradlew build + + - name: Archive lint results + if: always() + uses: actions/upload-artifact@v3 + with: + name: lint-report + path: app/build/reports/lint-results-debug.html + + # Create APK Debug + - name: Build apk debug project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assembleDebug + + # Create APK Release + - name: Build apk release project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assemble + + # Create Bundle AAB Release + # Noted for main module build [main_project_module]:bundleRelease + - name: Build app bundle release (AAB) - ${{ env.main_project_module }} module + run: ./gradlew ${{ env.main_project_module }}:bundleRelease + + # Upload Artifact Build + # Noted For Output [main_project_module]/build/outputs/apk/debug/ + - name: Upload APK Debug - ${{ env.repository_name }} + uses: actions/upload-artifact@v2 + with: + name: android-debug + path: puppet/${{ env.main_project_module }}/build/outputs/apk/debug/ + + # Noted For Output [main_project_module]/build/outputs/apk/release/ + - name: Upload APK Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v2 + with: + name: android-release + path: puppet/${{ env.main_project_module }}/build/outputs/apk/release/ + + # Noted For Output [main_project_module]/build/outputs/bundle/release/ + - name: Upload AAB (App Bundle) Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v2 + with: + name: android-bundle + path: puppet/${{ env.main_project_module }}/build/outputs/bundle/release/ + + release: + needs: [build-android] + permissions: write-all + runs-on: ubuntu-latest + steps: + - name: Download All Artifacts + uses: actions/download-artifact@v3 + with: + path: ./ + + - name: Display structure of downloaded files + run: ls -R + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + + - name: Upload Android Release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: android-debug/app-debug.apk # Update this with the correct APK path + asset_name: app-release-unsigned.apk + asset_content_type: application/vnd.android.package-archive