name: Check PR code on: pull_request: branches: - master jobs: BuildAndTestAndCoverage: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Fetch tags run: git fetch --tags -p - uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' - uses: gradle/actions/setup-gradle@v3 - uses: android-actions/setup-android@v3 - name: Configure gradle... run: mkdir -p ~/.gradle && echo "ignoreGitVersion=true" >> ~/.gradle/gradle.properties - uses: KengoTODA/actions-setup-docker-compose@v1 with: version: "2.23.3" - name: run selfoss run: | docker compose -f .gitea/workflows/assets/docker-compose.yml up -d # https://github.com/ReactiveCircus/android-emulator-runner/issues/385 - name: Kill crashpad_handler processes if: always() run: | pkill -SIGTERM crashpad_handler || true sleep 5 pkill -SIGKILL crashpad_handler || true - name: Change url until I find a better way to do it run: | sed -i "s/val defaultUrl = \"http:\/\/10\.0\.2\.2\:8888\"/val defaultUrl = \"http:\/\/172\.17\.0\.1\:8888\"/g" ./androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/CommonTests.kt - name: Tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: 29 script: | ./gradlew androidApp:clearScreenshotsTask || true ./gradlew androidApp:createScreenshotDirectory adb logcat -G 16M ./gradlew JacocoDebugCodeCoverage || true ./gradlew androidApp:fetchScreenshots adb logcat 'InputReader:S' 'chatty:S' 'audio_hw_generic:S' '*:I' -d > ./androidApp/build/reports/androidTests/connected/screenshots/logs.txt - uses: actions/upload-artifact@v3 if: always() with: name: screenshot-espresso path: androidApp/build/reports/androidTests/connected/screenshots retention-days: 2 overwrite: true include-hidden-files: true - uses: actions/upload-artifact@v3 if: always() with: name: result-espresso path: androidApp/build/reports/androidTests/connected/debug/flavors/githubConfig retention-days: 1 overwrite: true include-hidden-files: true - uses: actions/upload-artifact@v3 with: name: coverage-espresso path: androidApp/build/reports/jacoco/JacocoDebugCodeCoverage retention-days: 1 overwrite: true include-hidden-files: true - name: Clean if: always() run: | docker compose -f .gitea/workflows/assets/docker-compose.yml stop # Lint: # runs-on: ubuntu-latest # steps: # - name: Check out repository code # uses: actions/checkout@v4 # - uses: actions/setup-java@v4 # with: # distribution: 'temurin' # java-version: '17' # cache: gradle # - name: Install klint # run: curl -sSLO https://github.com/pinterest/ktlint/releases/download/1.5.0/ktlint && chmod a+x ktlint && mv ktlint /usr/local/bin/ # - name: Install detekt # run: curl -sSLO https://github.com/detekt/detekt/releases/download/v1.23.7/detekt-cli-1.23.7.zip && unzip detekt-cli-1.23.7.zip # - name: Linting... # run: ktlint 'shared/**/*.kt' 'androidApp/**/*.kt' '!shared/build' # - name: Detecting... # run: ./detekt-cli-1.23.7/bin/detekt-cli -c detekt.yml --excludes '**/shared/build/**/*.kt' # translations: # runs-on: ubuntu-latest # steps: # - name: Check out repository code # uses: actions/checkout@v4 # with: # fetch-depth: 0 # - name: "Check translations changes" # id: check-translations-changes # uses: tj-actions/changed-files@v45 # with: # files: | # androidApp/src/main/res/values/strings.xml # - name: upload translation sources # if: steps.check-api-changes.outputs.any_modified == 'true' # uses: crowdin/github-action@v2 # with: # config: './.gitea/workflows/assets/crowdin.yml' # upload_sources: true # upload_translations: false # download_translations: false # create_pull_request: false # push_translations: false # env: # CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} # CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} # - name: wait # if: steps.check-api-changes.outputs.any_modified == 'true' # run: sleep 10s # - name: download translations # if: steps.check-api-changes.outputs.any_modified == 'true' # uses: crowdin/github-action@v2 # with: # config: './.gitea/workflows/assets/crowdin.yml' # upload_sources: false # upload_translations: false # download_translations: true # create_pull_request: false # push_translations: false # env: # CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} # CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} # - name: Check for uncommitted changes # if: steps.check-api-changes.outputs.any_modified == 'true' # id: check-changes # uses: mskri/check-uncommitted-changes-action@v1.0.1 # - name: Commit Changes # if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != '' # run: | # git config --global user.email aminecmi+giteadrone@pm.me # git config --global user.name giteadrone # git add ./androidApp/src/main/res/* # git commit -m "translation: translation files" # - name: Push changes # if: steps.check-api-changes.outputs.any_modified == 'true' && steps.check-changes.outputs.changes != '' # uses: appleboy/git-push-action@v1.0.0 # with: # author_name: giteadrone # author_email: aminecmi+giteadrone@pm.me # remote: ${{ secrets.REMOTE_URL }} # ssh_key: ${{ secrets.PRIVATE_KEY }} # branch: ${{ github.head_ref || github.ref_name }} # build: # needs: Lint # uses: ./.gitea/workflows/common_build.yml