stages: # Define the stages of the pipeline. - build #- test - release # web-build: # This job runs in the build stage, which runs first. # stage: build # image: node:24 # script: # - cd Web # - npm install # - npm run build # artifacts: # Artifacts are files that are passed between stages. # paths: # - Web/dist/Web/browser # The 'dist' directory will be available in the next stage. # when: on_success # access: all # expire_in: 30 days # api-build: # stage: build # image: mcr.microsoft.com/dotnet/sdk:8.0 # script: # - cd Api # - dotnet publish Api.csproj --output ./build --runtime linux-x64 --configuration Release --self-contained true # artifacts: # paths: # - Api/build # when: on_success # access: all # expire_in: 30 days semantic-release: image: node:24 stage: release script: - apt update && apt install zip -y - zip -r dist.zip Web/dist/Web/browser - zip -r api.zip Api/build - npm install --save-dev @semantic-release/gitlab - npx semantic-release --debug only: - main update_db: image: mcr.microsoft.com/dotnet/sdk:8.0 stage: release script: - dotnet restore - dotnet build - dotnet ef database update --project Api/Api.csproj --startup-project Api/Api.csproj variables: ConnectionStrings__DefaultConnection: "Server=db;Database=CentrumDb;User=sa;Password=Your_password123;TrustServerCertificate=True;" only: - main docker-build: stage: build image: docker:latest services: - name: docker:dind alias: docker variables: DOCKER_DRIVER: overlay2 DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" before_script: - docker info script: - docker build -t centrum-api:latest -f Dockerfile . - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY - docker tag centrum-api:latest $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest docker-deploy: stage: release tags: - production script: - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY - docker compose -f deployment/docker-compose.yaml up -d - docker image prune -f -a