Интеграция с GitHub Actions в SourceCraft
В CI/CD-процессах SourceCraft поддерживается запуск GitHub Actions.
Вы можете интегрировать в свои рабочие процессы CI/CD собственные GitHub Actions или общедоступные из GitHub Marketplace.
В примере ниже представлен конфигурационный файл .sourcecraft/ci.yaml
, в котором описаны следующие действия:
- Получение IAM-токена Yandex Cloud с помощью сервисного подключения.
- Установка в окружение воркера утилиты Docker Buildx с помощью GitHub Action Docker Setup Buildx.
- Аутентификация в Yandex Cloud Registry с помощью GitHub Action Docker Login и IAM-токена Yandex Cloud.
- Сборка Docker-образа из
Dockerfile
, размещенного в корне репозитория, и отправка образа в Cloud Registry с помощью GitHub Action Build and push Docker images.
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
См. также
Скопировано
Была ли статья полезна?
Предыдущая
Следующая