name: CI on: push: branches: - main pull_request: branches: - main jobs: run-unit-tests: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2.4.0 - name: Set up JDK uses: actions/setup-java@v2.5.0 with: distribution: 'zulu' java-version: '17' cache: 'gradle' - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Run unit tests uses: gradle/gradle-build-action@v2.1.0 with: arguments: test --stacktrace - name: (Fail-only) Upload test report if: failure() uses: actions/upload-artifact@v2.3.1 with: name: Test report path: android/build/reports stylecheck: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2.4.0 - name: Set up JDK uses: actions/setup-java@v2.5.0 with: distribution: 'zulu' java-version: '17' cache: 'gradle' - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Check codestyle with Spotless uses: gradle/gradle-build-action@v2.1.0 with: arguments: spotlessCheck deploy-release-snapshot: runs-on: ubuntu-latest if: "github.event_name == 'push'" needs: [ "run-unit-tests", "stylecheck" ] steps: - name: Checkout repository uses: actions/checkout@v2.4.0 - name: Set up JDK uses: actions/setup-java@v2.5.0 with: distribution: 'zulu' java-version: '17' cache: 'gradle' - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Decrypt secrets run: scripts/signing-setup.sh "$ENCRYPT_KEY" env: ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }} - name: Build release app uses: gradle/gradle-build-action@v2.1.0 with: arguments: :android:assembleRelease - name: Clean secrets run: scripts/signing-cleanup.sh - name: Deploy snapshot run: scripts/deploy-snapshot.sh env: ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} SSH_USERNAME: ${{ secrets.SSH_USERNAME }} SERVER_ADDRESS: ${{ secrets.SERVER_ADDRESS }} SERVER_DESTINATION: ${{ secrets.SERVER_DESTINATION }} SSH_PORT: ${{ secrets.SSH_PORT }}