Пайплайны GitLab в CI/CD SourceCraft

В CI/CD-процессах SourceCraft поддерживается запуск пайплайнов с синтаксисом GitLab.

Функциональность позволяет переносить проекты из GitLab без существенной переработки конфигурации CI/CD, а также переиспользовать большую библиотеку существующих примеров пайплайнов.

Важно

Запуск GitHub Actions и пайплайнов GitLab в CI/CD SourceCraft поддерживается только на облачных воркерах.

Пайплайн GitLab встраивается в конфигурацию CI/CD .sourcecraft/ci.yaml в виде отдельного кубика с параметром gitlab_workflow, например:

on:
  push:
    - workflows: [sample-workflow]
      filter:
        branches: ["main"]

workflows:
  sample-workflow:
    tasks:
      - name: demo-gitlab-ci
        cubes:
          - name: run-gitlab-workflow
            # Путь к файлу с конфигурацией пайплайна GitLab
            gitlab_workflow: .sourcecraft/.gitlab-ci.yaml
Пример пайплайна GitLab .gitlab-ci.yaml
build-job:
  stage: build
  script:
    - echo "Hello, GitLab CI/CD!"

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something."

Поддерживаются следующие элементы синтаксиса пайплайнов GitLab:

Внимание

В SourceCraft не поддерживаются следующие элементы синтаксиса пайплайнов GitLab:

Настройка и просмотр конфигураций репозитория доступны в интерфейсе SourceCraft в разделе Настройки репозитория в секции Конфигурации. Подробнее в инструкции Настроить конфигурации репозитория в виде кода.

Совет

Вы можете задействовать в пайплайне GitLab секреты SourceCraft. Для этого передайте значение секрета через блок env в файле .sourcecraft/ci.yaml, а в файле .sourcecraft/.gitlab-ci.yaml обращайтесь к соответствующей переменной окружения.

Пример использования секретов SourceCraft в пайплайне GitLab

В примере в пайплайне GitLab значение секрета DEMO_SECRET сравнивается с текстом demo-secret-value. При успешном совпадении в лог кубика выводится сообщение PASS: secret received and matches the expected value.

Содержимое .sourcecraft/ci.yaml:

workflows:
  sample-workflow:
    tasks:
      - name: demo-gitlab-ci
        env:
          DEMO_SECRET: ${{ secrets.DEMO_SECRET }}
        cubes:
          - name: run-gitlab-workflow
            gitlab_workflow: .sourcecraft/.gitlab-ci.yaml

Содержимое .sourcecraft/.gitlab-ci.yaml:

check-secret:
  stage: test
  image: alpine:3.22
  script:
    - |
      if [ "$DEMO_SECRET" = "demo-secret-value" ]; then
        echo "PASS: secret received and matches the expected value"
      else
        echo "FAIL: secret is missing or does not match the expected value"
        exit 1
      fi

Полезные ссылки