Использовать GitHub Actions в CI/CD SourceCraft

В CI/CD-процессах SourceCraft поддерживается запуск GitHub Actions.

GitHub Actions — это встроенная в GitHub система CI/CD, позволяющая создавать, настраивать и выполнять рабочие процессы (workflows) для автоматизации сборки, тестирования, развертывания и других задач, связанных с жизненным циклом программного обеспечения, а также переиспользовать эти процессы в разных репозиториях.

Вы можете интегрировать в свои рабочие процессы CI/CD SourceCraft собственные GitHub Actions или общедоступные из GitHub Marketplace.

Примечание

Чтобы использовать GitHub Actions в SourceCraft, вам не нужен аккаунт на GitHub и какие-либо действия в интерфейсе GitHub.

Подробнее см. на странице Интеграция с GitHub Actions в SourceCraft.

Чтобы использовать GitHub Actions в CI/CD SourceCraft:

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

  2. Добавьте в ветку main репозитория файл .sourcecraft/ci.yaml с конфигурацией CI/CD-процесса.

  3. Чтобы задействовать GitHub Actions в CI/CD SourceCraft, используйте кубик с параметрами action и (опционально) with:

    on:
      push:
        - workflows: [test-workflow]
          filter:
            branches: ["main"]
    
    workflows:
      test-workflow:
        tasks:
          - name: demo-github-action-ci
            cubes:
              - name: run-github-action
                action: <название_GitHub_Action>@<версия>
                with:
                  <параметр_GitHub_Action_1>: <значение_1>
                  <параметр_GitHub_Action_2>: <значение_2>
                  ...
    
    Пример CI/CD-процесса с использованием GitHub Actions

    В примере ниже представлен конфигурационный файл .sourcecraft/ci.yaml, в котором описаны следующие действия:

    tokens:
      # Произвольное имя токена.
      <имя_токена>:
        # Имя сервисного подключения к Yandex Cloud.
        service_connection: <имя_сервисного_подключения>
        # Область запроса доступа:
        # org — все репозитории.
        # repo — конкретный репозиторий.
        # ref — ветка или тег.
        scope: repo
    
    workflows:
      test-workflow:
        tasks:
          - name: test-gh-actions-task
            cubes:
              # Кубик обменивает токен SourceCraft на IAM-токен Yandex Cloud
              # и сохраняет его в переменную IAM_TOKEN в блоке outputs.
              - name: get-iam-token
                env:
                  ID_TOKEN: ${{ tokens.<имя_токена>.id_token }}
                  YC_SA_ID: ${{ tokens.<имя_токена>.service_account_id }}
                image: cr.yandex/sourcecraft/yc-iam:latest
    
              # Кубик устанавливает и настраивает утилиту Docker Buildx.
              - name: setup-buildx
                action: docker/setup-buildx-action@v3.11.1
    
              # Кубик аутентифицируется в Yandex Cloud Registry c 
              # помощью IAM-токена.
              - name: login
                action: docker/login-action@v3.5.0
                with:
                  registry: cr.yandex/<идентификатор_реестра>
                  username: iam
                  # Подставьте в блок для получения значений outputs имя кубика с
                  # IAM-токеном, например get-iam-token.
                  password: ${{ cubes.<имя_кубика_с_IAM-токеном>.outputs.IAM_TOKEN }}
    
              # Кубик собирает Docker-образ из Dockerfile и отправляет его в реестр
              # Cloud Registry.
              - name: build-and-push
                action: docker/build-push-action@v6.18.0
                with:
                  context: .
                  file: Dockerfile
                  platforms: linux/amd64
                  tags: |
                    cr.yandex/<идентификатор_реестра>/image-name:latest
                  push: true
    
    on:
      push: test-workflow
    

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

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

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

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

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

    3. На вкладке Логи раскройте кубик с GitHub Actions и посмотрите результаты его работы.

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

См. также