# CI/CD Pipeline Documentation ### Front End ```yml image: node:13-alpine3.10 stages: - build # Building the code dist file - test # Running Unit Tests - deploy # Pushing to the server and running the dockerization script. STILL UNIMPLEMENTED # Cache modules in between jobs cache: key: ${CI_COMMIT_REF_SLUG} paths: - .npm/ # This runs before all scripts # Here we install dependencies on a clean stale before_script: - npm ci --cache .npm --prefer-offline # Building code for production build code: stage: build script: - npm run build # Running unit tests run unit tests: stage: test script: - npm run test ``` ### Back End ```yml image: node:13-alpine3.11 stages: - build # Trying to run the server using the env of production - test # Running Unit Tests - deploy # Pushing to the instance and running docker scripts # Cache modules in between jobs cache: key: ${CI_COMMIT_REF_SLUG} paths: - .npm/ # Running before scripts # Install Dependencies on clean stale before_script: - npm ci --cache .npm --prefer-offline # Trying to run the server using the env of production run in prod-like env: image: node:13-alpine3.11 stage: build script: - sh - echo "$CI_ENV" > config.env # Install coreutils for using timeout on alpine linux - apk add coreutils - timeout --preserve-status 60s node . # Run Unit Tests run unit tests: image: node:13-alpine3.11 only: - master - 2-ci-cd-pipeline stage: test script: - sh - echo "$CI_ENV" > config.env - echo "$CI_ENV" > .test.env - npm run test ``` ### Mobile ```yml image: openjdk:8-jdk variables: ANDROID_COMPILE_SDK: "29" ANDROID_BUILD_TOOLS: "29.0.3" ANDROID_SDK_TOOLS: "4333796" before_script: - apt-get --quiet update --yes - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip - unzip -d android-sdk-linux android-sdk.zip - echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null - echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null - echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ - chmod +x ./gradlew # temporarily disable checking for EPIPE error and use yes to accept all licenses - set +o pipefail - yes | android-sdk-linux/tools/bin/sdkmanager --licenses - set -o pipefail lintDebug: stage: build script: - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint assembleDebug: stage: build script: - ./gradlew assembleDebug artifacts: paths: - app/build/outputs/ debugTests: stage: test script: - ./gradlew -Pci --console=plain :app:testDebug ```