---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/concepts/gh-actions.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/gh-actions.md
title: Интеграция с GitHub Actions в SourceCraft
description: Как использовать GitHub Actions в CI/CD-процессах SourceCraft для автоматизации сборки и тестирования.
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


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

<!-- source: ru/_includes/sourcecraft/ci-cd/gh-actions-intro.md -->
В [CI/CD](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md)-процессах SourceCraft поддерживается запуск [GitHub Actions](https://docs.github.com/en/actions).

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

Вы можете интегрировать в свои [рабочие процессы](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#workflows) CI/CD SourceCraft собственные GitHub Actions или общедоступные из [GitHub Marketplace](https://github.com/marketplace?type=actions).

Чтобы использовать GitHub Actions в SourceCraft, вам не нужен аккаунт на GitHub и какие-либо действия в интерфейсе GitHub.
<!-- endsource: ru/_includes/sourcecraft/ci-cd/gh-actions-intro.md -->

<!-- source: ru/_includes/sourcecraft/ci-cd/gh-gl-cloud-workers.md -->
{% note warning %}

Запуск GitHub Actions и пайплайнов GitLab в CI/CD SourceCraft поддерживается только на [облачных воркерах](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/workers.md#cloud-workers).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/ci-cd/gh-gl-cloud-workers.md -->

Для интеграции с GitHub Actions в SourceCraft используется специальный [кубик](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#cubes) с параметрами `action` и (опционально) `with`:

<!-- source: ru/_includes/sourcecraft/ci-cd/gh-actions-template.md -->
```yaml
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>
              ...
```
<!-- endsource: ru/_includes/sourcecraft/ci-cd/gh-actions-template.md -->

<!-- source: ru/_includes/sourcecraft/ci-cd/gh-actions-example.md -->
В примере ниже представлен конфигурационный файл `.sourcecraft/ci.yaml`, в котором описаны следующие действия:

* Получение IAM-токена Yandex Cloud с помощью [сервисного подключения](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/service-connections.md).
* Установка в окружение [воркера](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/workers.md) утилиты [Docker Buildx](https://github.com/docker/buildx) с помощью GitHub Action [Docker Setup Buildx](https://github.com/marketplace/actions/docker-setup-buildx).
* Аутентификация в [Yandex Cloud Registry](https://yandex.cloud/ru/docs/cloud-registry/) с помощью GitHub Action [Docker Login](https://github.com/marketplace/actions/docker-login) и IAM-токена Yandex Cloud.
* Сборка Docker-образа из `Dockerfile`, размещенного в корне репозитория, и отправка образа в Cloud Registry с помощью GitHub Action [Build and push Docker images](https://github.com/marketplace/actions/build-and-push-docker-images).

```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
```
<!-- endsource: ru/_includes/sourcecraft/ci-cd/gh-actions-example.md -->

<!-- source: ru/_includes/sourcecraft/configuration-tip.md -->
{% note tip %}

Настройка и просмотр конфигураций репозитория доступны в интерфейсе SourceCraft в разделе <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M7.199 2H8.8a.2.2 0 0 1 .2.2c0 1.808 1.958 2.939 3.524 2.034a.2.2 0 0 1 .271.073l.802 1.388a.2.2 0 0 1-.073.272c-1.566.904-1.566 3.164 0 4.069a.2.2 0 0 1 .073.271l-.802 1.388a.2.2 0 0 1-.271.073C10.958 10.863 9 11.993 9 13.8a.2.2 0 0 1-.199.2H7.2a.2.2 0 0 1-.2-.2c0-1.808-1.958-2.938-3.524-2.034a.2.2 0 0 1-.272-.073l-.8-1.388a.2.2 0 0 1 .072-.271c1.566-.905 1.566-3.165 0-4.07a.2.2 0 0 1-.073-.27l.801-1.389a.2.2 0 0 1 .272-.072C5.042 5.138 7 4.007 7 2.199c0-.11.089-.199.199-.199M5.5 2.2c0-.94.76-1.7 1.699-1.7H8.8c.94 0 1.7.76 1.7 1.7a.85.85 0 0 0 1.274.735 1.7 1.7 0 0 1 2.32.622l.802 1.388c.469.813.19 1.851-.622 2.32a.85.85 0 0 0 0 1.472 1.7 1.7 0 0 1 .622 2.32l-.802 1.388a1.7 1.7 0 0 1-2.32.622.85.85 0 0 0-1.274.735c0 .939-.76 1.7-1.699 1.7H7.2a1.7 1.7 0 0 1-1.699-1.7.85.85 0 0 0-1.274-.735 1.7 1.7 0 0 1-2.32-.622l-.802-1.388a1.7 1.7 0 0 1 .622-2.32.85.85 0 0 0 0-1.471 1.7 1.7 0 0 1-.622-2.32l.801-1.389a1.7 1.7 0 0 1 2.32-.622A.85.85 0 0 0 5.5 2.2m4 5.8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0" clip-rule="evenodd"/></svg> **Настройки репозитория** в секции <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="m13.874 8.25-2.72 4.712a.5.5 0 0 1-.434.25H5.28a.5.5 0 0 1-.433-.25L2.127 8.25a.5.5 0 0 1 0-.5l2.72-4.712a.5.5 0 0 1 .433-.25h5.44a.5.5 0 0 1 .433.25l2.72 4.712a.5.5 0 0 1 0 .5m1.3-1.25a2 2 0 0 1 0 2l-2.72 4.712a2 2 0 0 1-1.733 1H5.28a2 2 0 0 1-1.732-1L.828 9a2 2 0 0 1 0-2l2.72-4.712a2 2 0 0 1 1.732-1h5.44a2 2 0 0 1 1.732 1zM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0" clip-rule="evenodd"/></svg> **Конфигурации**. Подробнее в инструкции [Настроить конфигурации репозитория в виде кода](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/configuration-edit.md).

{% endnote %}
<!-- endsource: ru/_includes/sourcecraft/configuration-tip.md -->

#### Полезные ссылки {#see-also}

* [Использовать GitHub Actions в CI/CD SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/gh-actions.md)
* [Настройка CI/CD для развертывания приложения в Yandex Serverless Containers с помощью GitHub Actions](https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/ci-cd-sourcecraft-github-actions.md)
* [Пайплайны GitLab в CI/CD SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/gl-pipelines.md)
* [Использовать пайплайны GitLab в CI/CD SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/gl-pipelines.md)
* [Непрерывная интеграция и непрерывное развертывание в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md)
* [Сервисные подключения SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/service-connections.md)