Switch to net 10 and create gitlbab yml
This commit is contained in:
121
.gitlab-ci.yml
Normal file
121
.gitlab-ci.yml
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
stages:
|
||||||
|
- restore
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- docker_build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Use Docker-in-Docker for building images
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
DOCKER_TLS_CERTDIR: ""
|
||||||
|
|
||||||
|
# Cache for NuGet packages
|
||||||
|
cache:
|
||||||
|
key: ${CI_COMMIT_REF_SLUG}
|
||||||
|
paths:
|
||||||
|
- .nuget/packages/
|
||||||
|
- frontend/node_modules/
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Backend (ASP.NET Core) jobs
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
restore_backend:
|
||||||
|
stage: restore
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:10.0
|
||||||
|
script:
|
||||||
|
- dotnet restore backend/GiecChallenge/GiecChallenge.csproj
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- backend/GiecChallenge/obj/
|
||||||
|
- backend/GiecChallenge/bin/
|
||||||
|
expire_in: 1 hour
|
||||||
|
|
||||||
|
build_backend:
|
||||||
|
stage: build
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:10.0
|
||||||
|
needs: [restore_backend]
|
||||||
|
script:
|
||||||
|
- dotnet build backend/GiecChallenge/GiecChallenge.csproj -c Release -o out
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- out/
|
||||||
|
expire_in: 1 hour
|
||||||
|
|
||||||
|
test_backend:
|
||||||
|
stage: test
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:10.0
|
||||||
|
needs: [build_backend]
|
||||||
|
script:
|
||||||
|
- dotnet test backend/GiecChallenge.test/GiecChallenge.test.csproj --no-build --verbosity normal
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
reports:
|
||||||
|
junit: test-results.xml
|
||||||
|
expire_in: 1 hour
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Frontend (React) jobs
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
install_frontend:
|
||||||
|
stage: restore
|
||||||
|
image: node:14-alpine
|
||||||
|
script:
|
||||||
|
- cd frontend
|
||||||
|
- npm ci
|
||||||
|
cache:
|
||||||
|
key: ${CI_COMMIT_REF_SLUG}-frontend
|
||||||
|
paths:
|
||||||
|
- frontend/node_modules/
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- frontend/node_modules/
|
||||||
|
expire_in: 1 hour
|
||||||
|
|
||||||
|
build_frontend:
|
||||||
|
stage: build
|
||||||
|
image: node:14-alpine
|
||||||
|
needs: [install_frontend]
|
||||||
|
script:
|
||||||
|
- cd frontend
|
||||||
|
- npm run build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- frontend/build/
|
||||||
|
expire_in: 1 hour
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Docker images
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
docker_build_backend:
|
||||||
|
stage: docker_build
|
||||||
|
image: docker:latest
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
needs: [test_backend]
|
||||||
|
script:
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/backend:${CI_COMMIT_SHA:0:8} -f backend/GiecChallenge/Dockerfile .
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/backend:${CI_COMMIT_SHA:0:8}
|
||||||
|
|
||||||
|
docker_build_frontend:
|
||||||
|
stage: docker_build
|
||||||
|
image: docker:latest
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
needs: [build_frontend]
|
||||||
|
script:
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
- docker build -t $CI_REGISTRY_IMAGE/frontend:${CI_COMMIT_SHA:0:8} -f frontend/Dockerfile .
|
||||||
|
- docker push $CI_REGISTRY_IMAGE/frontend:${CI_COMMIT_SHA:0:8}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# Deploy (optional – placeholder)
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
deploy:
|
||||||
|
stage: deploy
|
||||||
|
image: alpine:latest
|
||||||
|
script:
|
||||||
|
- echo "Deploy step placeholder – add your deployment commands here."
|
||||||
|
only:
|
||||||
|
- main
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
|
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
|
||||||
ENV ASPNETCORE_ENVIRONMENT Docker
|
ENV ASPNETCORE_ENVIRONMENT Docker
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
EXPOSE 443
|
EXPOSE 443
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
|
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
|
||||||
ENV ASPNETCORE_ENVIRONMENT Docker
|
ENV ASPNETCORE_ENVIRONMENT Docker
|
||||||
WORKDIR /src-backend
|
WORKDIR /src-backend
|
||||||
COPY ./backend/GiecChallenge/GiecChallenge.csproj .
|
COPY ./backend/GiecChallenge/GiecChallenge.csproj .
|
||||||
|
|||||||
Reference in New Issue
Block a user