Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6377cedc authored by Ellen Poe's avatar Ellen Poe
Browse files

Merge branch 'ellenhp/gitlabcicd' into 'main'

Begin GitLab ci/cd setup

See merge request e/os/cardinal!5
parents ddcfcf40 d32c029a
Loading
Loading
Loading
Loading
Loading

.gitlab-ci.yml

0 → 100644
+67 −0
Original line number Diff line number Diff line
# GitLab CI/CD configuration for Cardinal Android

variables:
  # Enable Git submodules
  GIT_SUBMODULE_STRATEGY: recursive
  # Enable Git LFS
  GIT_LFS_SKIP_SMUDGE: "0"
  # Gradle configuration
  GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.configureondemand=true"
  GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"

# Default image for jobs
default:
  image: ubuntu:latest
  before_script:
    # Install required packages (git-lfs, Java, etc.)
    - apt-get update -qq
    - apt-get install -y -qq git git-lfs openjdk-17-jdk
    - git lfs install

# Define pipeline stages
stages:
  - lint

# Detekt static analysis job
detekt:
  stage: lint
  # Only run on pushes to main and merge requests to main
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
  # Allow newer pipelines to cancel older ones
  interruptible: true
  # Resource group for concurrency control
  resource_group: android-detekt-${CI_COMMIT_REF_SLUG}
  # Cache Gradle dependencies
  cache:
    key:
      files:
        - cardinal-android/**/*.gradle*
        - cardinal-android/gradle/wrapper/gradle-wrapper.properties
      prefix: ${CI_JOB_NAME}
    paths:
      - .gradle/caches
      - .gradle/wrapper
      - cardinal-android/.gradle
    policy: pull-push
  script:
    # Configure Gradle for CI
    - mkdir -p ~/.gradle
    - echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties
    - echo "org.gradle.parallel=true" >> ~/.gradle/gradle.properties
    - echo "org.gradle.configureondemand=true" >> ~/.gradle/gradle.properties
    - echo "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError" >> ~/.gradle/gradle.properties
    # Run detekt
    - cd cardinal-android
    - touch local.properties
    - chmod +x ./gradlew
    - ./gradlew detekt
  # Optional: Upload detekt reports as artifacts
  artifacts:
    when: always
    reports:
      codequality: cardinal-android/app/build/reports/detekt/detekt.xml
    paths:
      - cardinal-android/app/build/reports/detekt/
    expire_in: 1 week