From 8e35e9300efcdd0dccc59df3cbbb4d2cb2a9b419 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Thu, 22 May 2025 00:31:19 +0200 Subject: [PATCH] first shot on a gitlab-ci file --- .gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..701fb19 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,47 @@ +variables: + DOCKER_TLS_CERTDIR: "/certs" + CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA" + RAILS_ENV: "production" + +stages: + - build + - test + - deploy + +before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + +build: + stage: build + script: + - docker build -t $CONTAINER_IMAGE . + - docker push $CONTAINER_IMAGE + only: + - main + - merge_requests + +test: + stage: test + services: + - postgres:latest + variables: + POSTGRES_DB: "rails_test" + POSTGRES_USER: "postgres" + POSTGRES_PASSWORD: "password" + DATABASE_URL: "postgresql://postgres:password@postgres:5432/rails_test" + script: + - docker run --rm $CONTAINER_IMAGE bin/rails db:create db:migrate RAILS_ENV=test + - docker run --rm $CONTAINER_IMAGE bin/rails test + only: + - main + - merge_requests + +deploy: + stage: deploy + script: + - echo "Deploying to production..." + # Add your deployment commands here + # For example, if using Kubernetes: + # - kubectl set image deployment/rails-app rails-app=$CONTAINER_IMAGE + only: + - main