diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dfa41555e..505f9ffd4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,61 +9,83 @@ # Official framework image. Look for the different tagged releases at: # https://hub.docker.com/r/library/node/tags/ -image: node:alpine stages: - build - -# Pick zero or more services to be used on all builds. -# Only needed when using a docker container to run your tests in. -# Check out: https://docs.gitlab.com/ee/ci/services/index.html -variables: - POSTGRES_PASSWORD: test - # POSTGRES_DB: $POSTGRES_DB - # POSTGRES_USER: $POSTGRES_USER - # POSTGRES_PASSWORD: $POSTGRES_PASSWORD - # POSTGRES_HOST_AUTH_METHOD: trust - -services: - - postgres:15 - - redis + - deploy testCommit: stage: build - before_script: + image: node:alpine + # Pick zero or more services to be used on all builds. + # Only needed when using a docker container to run your tests in. + # Check out: https://docs.gitlab.com/ee/ci/services/index.html + services: + - postgres:15 + - redis + variables: + POSTGRES_PASSWORD: test + # POSTGRES_DB: $POSTGRES_DB + # POSTGRES_USER: $POSTGRES_USER + # POSTGRES_PASSWORD: $POSTGRES_PASSWORD + # POSTGRES_HOST_AUTH_METHOD: trust + script: - apk add --no-cache cargo python3 make g++ - cp .config/ci.yml .config/default.yml - corepack enable - corepack prepare pnpm@latest --activate - script: - pnpm i --frozen-lockfile - pnpm run build:debug - pnpm run migrate + cache: + key: build + policy: pull-push + when: on_success + paths: + - node_modules/ + - packages/*/node_modules/ + - packages/backend/native-utils/node_modules/ only: - main - beta - develop - /^feature\/.*$/ -dockerPush: - stage: build +getImageTag: + stage: deploy + image: busybox + script: + - | + if test -n "$CI_COMMIT_TAG"; then + tag="$CI_COMMIT_TAG" + elif test "$CI_COMMIT_BRANCH" == "main"; then + tag="latest" + else + tag="$CI_COMMIT_BRANCH" + fi + - echo "REGISTRY_PUSH_TAG=$tag" | tee build.env + # parse tag to the build and merge jobs. + # See: https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-to-another-job + artifacts: + reports: + dotenv: build.env + only: + - main + - beta + - tags + +dockerBuild: + stage: deploy + needs: ["getImageTag"] image: name: gcr.io/kaniko-project/executor:v1.9.0-debug entrypoint: [""] - timeout: 3h script: - /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/Dockerfile" - --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}" + --destination "${CI_REGISTRY_IMAGE}:${REGISTRY_PUSH_TAG}" only: - main - beta - -# This folder is cached between builds -# https://docs.gitlab.com/ee/ci/yaml/index.html#cache -cache: - paths: - - node_modules/ - - packages/*/node_modules/ - - packages/backend/native-utils/node_modules/ + - tags \ No newline at end of file