From a8a7402375e7d0d6e99428adbc973168cd6038fc Mon Sep 17 00:00:00 2001 From: bacon Date: Mon, 3 Mar 2025 20:30:30 +0300 Subject: [PATCH] fixes --- .gitlab-ci.yml | 52 +++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6fdfb3..e19db2c 100755 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ -image: docker:latest stages: - test - build + - pre_push - push test: @@ -13,27 +13,40 @@ test: only: - main -before_script: - - apk add --no-cache docker-cli curl jq - - | - until docker info; do - echo "Waiting for Docker to be ready..." - sleep 5 - done - build: needs: - test stage: build script: - - docker info - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG . - docker tag $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHORT_SHA - docker tag $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG $CI_REGISTRY/$CI_PROJECT_PATH:latest + only: + - main + +pre_push: + needs: + - build + stage: pre_push + script: + - echo "Running container to test image" + - docker run -d --name test_container -p 5050:5050 $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG + - | + echo "Waiting for the application to start..." + sleep 10 + if curl --fail http://localhost:5050/health; then + echo "Healthcheck passed" + else + echo "Healthcheck failed, stopping push" + exit 1 + fi + - docker rm -f test_container + only: + - main push: needs: - - build + - pre_push stage: push script: - | @@ -42,7 +55,6 @@ push: if [ "$CURRENT_IMAGE_HASH" != "$EXISTING_IMAGE_HASH" ] && [ "$CURRENT_IMAGE_HASH" != "no_digest" ]; then echo "Image has changed, pushing to the registry..." - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG docker push $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_SHORT_SHA @@ -50,21 +62,5 @@ push: else echo "Image is unchanged, skipping push." fi - - echo "Running container to test image" - - docker run -d --name test_container -p 5050:5050 $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG - - | - echo "Waiting for the application to start..." - sleep 10 - - if curl --fail http://localhost:5050/health; then - echo "Healthcheck passed" - else - echo "Healthcheck failed, stopping push" - exit 1 - fi - - - docker rm -f test_container - only: - main -