Интеграция с GitHub Actions в SourceCraft

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

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

В примере ниже представлен конфигурационный файл .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

См. также

Следующая