Что такое CI/CD? Примеры GitHub Actions / GitLab CI для .NET

CI/CD (Continuous Integration / Continuous Deployment) — это практика разработки программного обеспечения, направленная на автоматизацию процессов сборки, тестирования и развертывания приложений.

Основные концепции CI/CD

  • Continuous Integration (CI) — непрерывная интеграция, обеспечивающая автоматическую сборку и тестирование изменений в коде при каждом коммите.
  • Continuous Delivery (CD) — автоматизированная подготовка и тестирование сборок для последующего развертывания.
  • Continuous Deployment — автоматическое развертывание на продакшн-среду после успешного тестирования.

Настройка CI/CD в GitHub Actions

GitHub Actions позволяет создавать автоматизированные рабочие процессы (workflows) для сборки, тестирования и развертывания .NET-приложений.

Пример workflow для .NET-приложения

Создание файла .github/workflows/dotnet.yml:

name: .NET CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      
      - name: Setup .NET
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: '8.0'
      
      - name: Restore dependencies
        run: dotnet restore
      
      - name: Build project
        run: dotnet build --no-restore --configuration Release
      
      - name: Run tests
        run: dotnet test --no-build --configuration Release

Этот workflow запускается при каждом коммите в main и выполняет сборку и тестирование .NET-приложения.

Настройка CI/CD в GitLab CI/CD

GitLab CI/CD использует .gitlab-ci.yml для автоматизации процессов.

Пример .gitlab-ci.yml для .NET-приложения

stages:
  - build
  - test

variables:
  DOTNET_VERSION: "8.0"

before_script:
  - apt-get update && apt-get install -y dotnet-sdk-$DOTNET_VERSION

build:
  stage: build
  script:
    - dotnet restore
    - dotnet build --configuration Release

  artifacts:
    paths:
      - bin/

test:
  stage: test
  script:
    - dotnet test --configuration Release

Этот файл описывает два этапа: build и test. Он загружает зависимости, собирает проект и запускает тесты.