From d3fff943afd5c44a69a259aeef2bcdc489d9b3ed Mon Sep 17 00:00:00 2001 From: Robert Prehn <3952444+prehnRA@users.noreply.github.com> Date: Fri, 16 Apr 2021 17:59:06 -0500 Subject: [PATCH] chore: Streamline CI config --- .gitlab-ci.yml | 81 +--------------------------------------- Dockerfile | 2 - script/ci-set-timestamps | 6 --- 3 files changed, 2 insertions(+), 87 deletions(-) delete mode 100755 script/ci-set-timestamps diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 24166f39..3da4c6ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,4 @@ stages: - - prebuild - - asset_dependencies - test - deploy_tags - deploy @@ -15,106 +13,31 @@ variables: # fetch & clean the repo rather than completely cloning (faster) GIT_STRATEGY: fetch -# Build the app once and cache it so that we can have fast compiles in test -# and Docker built steps -prebuild: - stage: prebuild - image: "elixir:1.10" - cache: - key: - files: - - mix.lock - paths: - - _build/ - - deps/ - script: - - script/ci-set-timestamps - - mix local.hex --force - - mix local.rebar --force - - mix deps.get - - mix deps.compile - - mix compile - # Make results available to other jobs - artifacts: - paths: - - deps/phoenix - - deps/phoenix_html - exclude: - - deps/ - -fetch_asset_dependencies: - stage: asset_dependencies - image: "node:15.0" - needs: - - prebuild - only: - - master - cache: - key: - files: - - apps/app/assets/package-lock.json - paths: - - apps/app/assets/node_modules/ - script: - - cd apps/app/assets/ && npm install - # Make results available to other jobs - artifacts: - paths: - - apps/app/assets/node_modules - exclude: - - apps/app/assets/node_modules - # Test stage. Runs various tests and speculatively builds docker image in # parallel, in case the build passes. test: stage: test - needs: - - prebuild image: "elixir:1.10" services: - name: postgres:12 - cache: - key: - files: - - mix.lock - paths: - - _build/ - - deps/ - script: - - script/ci-set-timestamps - - script/cibuild + script: script/cibuild build_image_for_commit: stage: test - needs: - - fetch_asset_dependencies - - prebuild image: "docker:20.10" only: - master services: - name: docker:20.10-dind - cache: - key: - files: - - mix.lock - paths: - - _build/ - - deps/ script: - - script/ci-set-timestamps - - ls -la _build - docker login "https://${CI_REGISTRY}" -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD - docker pull $CI_REGISTRY_IMAGE:latest || true # This enables fast parallel builds - export DOCKER_BUILDKIT=1 - - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --build-arg BUILDKIT_INLINE_CACHE=1 . + - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . # Push the commit SHA tagged version to registry. We will later choose to tag that as stable # if everything passes. - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - # This copies the elixir build artifacts for deps and app so that we can cache them - - docker cp `docker create $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA`:/root/app/_build/prod _build - - ls -la _build # If tests pass, tag the commit and update package versions deploy_to_tags: diff --git a/Dockerfile b/Dockerfile index b7952aaa..dc1e88ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,8 +26,6 @@ ADD ./apps/admin/mix.exs /root/app/apps/admin/ ADD ./apps/app/mix.exs /root/app/apps/app/ ADD ./apps/content/mix.exs /root/app/apps/content/ ADD ./apps/core/mix.exs /root/app/apps/core/ -ADD ./deps /root/app/deps -ADD ./_build /root/app/_build RUN mix deps.get RUN mix deps.compile diff --git a/script/ci-set-timestamps b/script/ci-set-timestamps deleted file mode 100755 index 1cdd796e..00000000 --- a/script/ci-set-timestamps +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -BUILD_TIMESTAMP=`date -d $CI_COMMIT_TIMESTAMP +%Y%m%d%H%M.%S` - -echo $BUILD_TIMESTAMP -touch -t $BUILD_TIMESTAMP ../apps/**/*.ex ../apps/**/*.exs ../config/**/*.ex ../config/**/*.exs ../mix.exs