Использовать пайплайны GitLab в CI/CD SourceCraft

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

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

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

Важно

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

Подробнее на странице Пайплайны GitLab в CI/CD SourceCraft.

Чтобы использовать пайплайн GitLab в CI/CD SourceCraft:

  1. Если у вас еще нет репозитория, создайте его.

  2. Добавьте в ветку main репозитория файл .sourcecraft/.gitlab-ci.yaml с содержимым вашего пайплайна GitLab.

    Пример пайплайна 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:

  3. Аналогичным образом добавьте в ветку main файл .sourcecraft/ci.yaml. Чтобы задействовать пайплайн GitLab в CI/CD SourceCraft, используйте кубик с параметром 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 секреты 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
    

    В соответствии с представленным примером CI-процесс автоматически запустится после внесения изменений в ветку main.

  4. Проверьте выполнение CI-процесса:

    1. На странице репозитория в разделе Автоматизации перейдите в секцию CI/CD.

    2. Откройте запущенный рабочий процесс.

      На открывшейся странице будут отображены задания рабочего процесса, шаги задания — кубики, а также статусы и результаты выполнения.

    3. В правом нижнем углу кубика run-gitlab-workflow нажмите .

    4. Дождитесь завершения рабочего процесса.

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