Был ли у вас опыт написания Bash-скриптов в Jenkins?

Ответ

Да, я активно использовал Bash-скрипты в Jenkins для автоматизации различных этапов CI/CD пайплайнов.

Типичные сценарии применения:

  1. Настройка окружения: установка зависимостей, конфигурация переменных.
  2. Запуск тестов: выполнение unit-, integration- или E2E-тестов.
  3. Обработка результатов: парсинг отчётов, генерация метрик, отправка уведомлений.
  4. Работа с артефактами: сборка, архивация, загрузка в репозиторий.

Пример шага в Declarative Pipeline Jenkinsfile:

pipeline {
    agent any
    stages {
        stage('Run Tests') {
            steps {
                sh '''
                    #!/bin/bash
                    echo "Setting up the test environment..."
                    export TEST_ENV="staging"
                    pip install -r requirements.txt
                    echo "Running test suite..."
                    python -m pytest tests/ 
                        --junitxml=test-results.xml 
                        --cov=app 
                        --cov-report=xml:coverage.xml
                    echo "Tests completed."
                '''
            }
        }
    }
}

На практике Bash-скрипты часто комбинируются с Groovy (для логики пайплайна) и инструментами вроде jq для обработки JSON или aws cli для развёртывания.

Ответ 18+ 🔞

А, ну ты про то, когда в Дженкинсе эти скрипты на баше пишешь, чтобы всё само, как по маслу, каталось? Да, блядь, было дело, овердохуища с этим возился.

Ну, вот куда обычно их впендюривал:

  1. Окружение поднять: Это святое. Там зависимости поставить, переменные накрутить — чтоб всё, как у людей, а не вручную, как последний распиздяй.
  2. Тесты гонять: Ну, unit-тесты там, integration... Главное — чтоб отчёты эти, ебушки-воробушки, в нормальном виде выходили, а не просто в лог пиздюлей.
  3. С этими отчётами потом возиться: Распарсить, метрики вытащить, алёрты кому надо отправить — если всё ебнулось, конечно.
  4. С артефактами шаманить: Собрать, упаковать, закинуть куда положено — чтоб потом не искать, блядь, по всем папкам.

Вот, смотри, как в пайплайне это обычно выглядит, кусок простой:

pipeline {
    agent any
    stages {
        stage('Run Tests') {
            steps {
                sh '''
                    #!/bin/bash
                    echo "Setting up the test environment..."
                    export TEST_ENV="staging"
                    pip install -r requirements.txt
                    echo "Running test suite..."
                    python -m pytest tests/ 
                        --junitxml=test-results.xml 
                        --cov=app 
                        --cov-report=xml:coverage.xml
                    echo "Tests completed."
                '''
            }
        }
    }
}

А по жизни-то, конечно, это всё в кучу сваливается: сам пайплайн на Groovy, внутри него баш, а ещё jq для JSON'ов приплетаешь или aws cli, если в облако деплоить. В общем, каша, но зато работает, блядь, как швейцарские часы, если, конечно, не накосячил где.