---
metadata:
  - name: generator
    content: Diplodoc Platform v5.55.2
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/gh-actions.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/gh-actions.md
  - href: ru/sourcecraft/operations/gh-actions.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

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

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

Настройка и просмотр конфигураций репозитория доступны в интерфейсе SourceCraft в разделе ![image](../../_assets/console-icons/gear.svg) **Настройки репозитория** в секции ![image](../../_assets/console-icons/nut-hex.svg) **Конфигурации**. Подробнее в инструкции [Настроить конфигурации репозитория в виде кода](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/configuration-edit.md).

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

<!-- 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/gh-actions.md).

Чтобы использовать GitHub Actions в CI/CD SourceCraft:
1. Если у вас еще нет репозитория, [создайте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/repo-create.md) его.
1. [Добавьте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/add-file-repo.md) в ветку `main` репозитория файл `.sourcecraft/ci.yaml` с [конфигурацией CI/CD-процесса](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/index.md). 
1. Чтобы задействовать GitHub Actions в CI/CD 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 -->

    {% cut "Пример CI/CD-процесса с использованием GitHub Actions" %}

    <!-- 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 -->

    {% endcut %}

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

1. Проверьте выполнение CI-процесса:
    1. На странице репозитория в разделе ![image](../../_assets/console-icons/terminal-line.svg) **Автоматизации** перейдите в секцию ![image](../../_assets/console-icons/arrows-3-rotate-right.svg) **CI/CD**.
    1. Откройте запущенный рабочий процесс.

        На открывшейся странице вы увидите задания рабочего процесса, шаги задания — кубики, а также статусы и результаты выполнения.
    1. На вкладке ![image](../../_assets/console-icons/terminal.svg) **Логи** раскройте кубик с GitHub Actions и посмотрите результаты его работы.
    1. Дождитесь завершения рабочего процесса.

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

* [Интеграция с GitHub Actions в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/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)
