diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..45aed01 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,54 @@ +name: build & test + +on: + # Указываем ветки которые будут триггерить пайплайн + pull_request: + branches: ["release"] + types: [closed] + # Указываем триггер - опубликованный релиз + release: + types: [published] + workflow_call: + # позволяет запускать пайплайн вручную через вкладку Actions + workflow_dispatch: + # этап 2. +jobs: + build: + if: ${{ github.event_name == 'release' || github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + runs-on: self-hosted + env: + DOTNET_INSTALL_DIR: "./.dotnet" + steps: + - name: Clone repository + uses: actions/checkout@v4 + with: + ref: release + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore + - name: Test + run: dotnet test --no-build --verbosity normal + # этап 3. + - name: Move files to build deploy directory + run: | + mkdir -p ~/opt/development/frontend + cp -r * ~/opt/development/frontend/ + - name: Check if Docker is installed + run: | + if ! command -v docker &> /dev/null; then + echo "Docker is not installed" + exit 1 + fi + - name: Try to restart container + run: | + if [ -f ~/opt/development/docker/docker-compose.yml ]; then + echo "docker-compose.yml found, restarting container" + docker-compose -f ~/opt/development/docker/docker-compose.yml up -d --build backend + else + echo "docker-compose.yml not found, skipping docker-compose commands" + fi diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f24520b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /src +COPY . . +RUN dotnet restore +RUN dotnet build -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "backend.dll"]