На каких языках или с помощью каких инструментов обычно пишут команды для сборки (build scripts)?

«На каких языках или с помощью каких инструментов обычно пишут команды для сборки (build scripts)?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps для описания сборки и пайплайнов используются как специализированные языки конфигурации, так и скриптовые языки. Выбор зависит от стека проекта и экосистемы.

Основные инструменты и языки:

  • YAML: Стандарт для описания пайплайнов в современных CI/CD-системах (GitLab CI, GitHub Actions, Azure Pipelines, CircleCI).
    # Пример GitLab CI
    build-job:
      stage: build
      script:
        - echo "Compiling the code..."
        - mvn compile
  • Groovy / Declarative Pipeline (Jenkins): Используется для написания сложных, программных пайплайнов в Jenkins (Scripted Pipeline) или в более структурированном Declarative-синтаксисе.
    // Jenkins Declarative Pipeline
    pipeline {
        agent any
        stages {
            stage('Build') {
                steps {
                    sh 'make build'
                }
            }
        }
    }
  • Bash/PowerShell: Основные языки для написания шагов сборки (скриптов script:), подготовки окружения, деплоя. Bash — для Linux-окружения, PowerShell — для Windows.
    # Пример bash-скрипта в пайплайне
    #!/bin/bash
    VERSION=$(git describe --tags)
    docker build -t myapp:$VERSION .
  • Make: Классический инструмент для управления сборкой, особенно в C/C++ проектах. Использует собственный синтаксис Makefile.
  • Специализированные DSL: Инструменты вроде Gradle (для JVM-проектов) или CMake (для C++) имеют свои собственные языки описания сборки.

В современном DevOps-стеке YAML для CI/CD и Bash для скриптов внутри шагов являются наиболее распространенной комбинацией.