From 37b08d18a4997d51e833fd40c22d73fd3be44cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Garc=C3=ADa=20Amor?= Date: Sat, 9 Jul 2022 14:25:41 +0200 Subject: [PATCH] Improve CI times using CircleCI for regular commits --- .circleci/config.yml | 224 +++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 12 +++ 2 files changed, 236 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..35cb470b --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,224 @@ +version: 2.1 + +parameters: + memory-config: + type: string + default: "-Xmx3200m -Xms256m -XX:MaxMetaspaceSize=1g" + memory-config-debug: + type: string + default: "-Xmx3200m -Xms256m -XX:MaxMetaspaceSize=1g -verbose:gc -Xlog:gc*" + +jobs: + Done in GitLab CI: + docker: + - image: busybox:stable + steps: + - run: + name: Done in GitLab CI + command: echo This build will be done in GitLab CI + Check Style: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Check Style + command: ./gradlew -Pqc ktlintCheck + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + Static Analysis: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Check Style + command: ./gradlew -Pqc detekt + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + Lint: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Lint + command: ./gradlew :ultrasonic:lintRelease + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + Unit Tests: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Check Style + command: ./gradlew ciTest testDebugUnitTest + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + Assemble Debug: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Assemble Debug + command: ./gradlew assembleDebug + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + Assemble Release: + docker: + - image: cimg/android:2022.06.1 + working_directory: ~/ultrasonic + environment: + JVM_OPTS: << pipeline.parameters.memory-config >> + JAVA_TOOL_OPTIONS: << pipeline.parameters.memory-config >> + GRADLE_OPTS: << pipeline.parameters.memory-config >> + steps: + - checkout + - restore_cache: + keys: + - ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - ultrasonic-{{ .Branch }} + - ultrasonic + - run: + name: Assemble Release + command: ./gradlew assembleRelease + - save_cache: + paths: + - ~/.gradle + key: ultrasonic-{{ .Branch }}-{{ checksum "gradle/libs.versions.toml" }} + - store_artifacts: + path: ultrasonic/build/outputs/apk/release/ultrasonic-release-unsigned.apk + destination: ultrasonic-release-unsigned + +workflows: + version: 2 + Check and Build: + jobs: + - Done in GitLab CI: + filters: + branches: + only: + - develop + - master + tags: + only: /.*/ + - Check Style: + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ + - Static Analysis: + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ + - Lint: + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ + - Unit Tests: + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ + - Assemble Debug: + requires: + - Check Style + - Static Analysis + - Lint + - Unit Tests + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ + - Assemble Release: + requires: + - Check Style + - Static Analysis + - Lint + - Unit Tests + filters: + branches: + ignore: + - develop + - master + tags: + ignore: /.*/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f43731f2..501b411a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,22 +27,32 @@ stages: Check Style: stage: Check script: ./gradlew -Pqc ktlintCheck + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Static Analysis: stage: Check script: ./gradlew -Pqc detekt + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Lint: stage: Check script: ./gradlew :ultrasonic:lintRelease + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Unit Tests: stage: Check script: ./gradlew ciTest testDebugUnitTest + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Assemble Debug: stage: Assemble script: ./gradlew assembleDebug + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Assemble Release: stage: Assemble @@ -51,6 +61,8 @@ Assemble Release: name: ultrasonic-release-unsigned-${CI_COMMIT_SHA} paths: - ultrasonic/build/outputs/apk/release/ultrasonic-release-unsigned.apk + rules: + - if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_TAG Push Translations: stage: Translations