Новые возможности автоматизаций: что изменилось

Обновления автоматизаций SourceCraft: возможность коммитить прямо из CI, новые возможности шаблона Sites, вызов публичного API из кубиков, создание конфигурации из переиспользуемых и параметризируемых элементов, новые сборки воркера для ARM.

Что нового:

  • Теперь можно коммитить из CI в репозиторий (например, сделать процесс сборки и публикации версий пакета).
  • Появилась возможность обращаться к публичному API.
  • Добавили возможность переиспользовать кубики.
  • Переменные окружения теперь можно определять на уровне всего рабочего процесса.
  • Self-hosted раннеры можно запускать на ARM (бета-тестирование).

Коммиты из CI

Раньше при автоматическом получении локальной копии репозитория секция remote в .git/config оставалась пустой. Теперь при подготовке окружения мы создаём глобальный .git/config для бесшовной работы. Это позволяет работать с репозиторием изнутри кубика и выполнять ‑ git push/pull и другие команды привычным способом.

Пример выполнения ‑ git fetch внутри кубика

tasks:
- name: git-fetch
cubes:
    - name: git-fetch
    script:
        - git checkout master
        - git fetch

Конфигурация CI в SourceCraft Sites

В шаблоне Sites появился файл ci.yaml с готовыми примерами конфигурации CI для сборки и публикации статических сайтов. Они наглядно демонстрируют возможность коммитить прямо из CI. Улучшение упрощает работу с шаблоном и ускоряет настройку автоматизации.

Доступ к публичному API из CI

В переменные окружения добавлен пользовательский токен авторизации SOURCECRAFT_TOKEN. Он позволяет из CI кубиков напрямую обращаться к Public API, например, чтобы получать данные или обновлять статусы задач, без необходимости дополнительной настройки.

Пример использования пользовательского токена авторизации для получения всех своих задач

on:
push:
    - workflows: [list-issues]

workflows:
push-workflow:
    tasks:
    - issues-task

tasks:
- name: issues-task
    cubes:
    - name: i-have-got-issues
        script:
        - 'curl -H "Authorization: Bearer $SOURCECRAFT_TOKEN" https://api.sourcecraft.tech/me/issues | jq'

Упрощение конфигурации

Переиспользование кубиков

Теперь перечень логических действий, таких как вызов скрипта или запуск Docker-контейнера, можно определить один раз в блоке cubes и затем ссылаться на него в различных заданиях и рабочих процессах с помощью параметра uses. Например, в кубике можно задать параметры окружения для обеспечения единообразия при сборке сервисов на Go: все участники команды смогут использовать кубик с одинаковыми опциями сборки в своих заданиях.

Пример переиспользуемого кубика

cubes:
- name: build-go
    image: golang:1.24.4-alpine3.22
    env:
    BUILD_DIR: "."
    GOOS: "linux"
    GOARCH: "amd64"
    CGO_ENABLED: "1"
    BUILD_ARGS: ""
    script:
    - set -x
    - apk add build-base
    - GOOS="$GOOS" GOARCH="$GOARCH" CGO_ENABLED="$CGO_ENABLED" go build -C "$BUILD_DIR" $BUILD_ARGS


tasks:
- name: build-my-service
    cubes:
    - uses: build-go
        name: build-my-service
        env:
        BUILD_DIR: "./path/to/source"
        BUILD_ARGS: "-o my-service -mod=vendor"

- name: build-my-another-service
    cubes:
    - uses: build-go
        name: build-my-another-service
        env:
        BUILD_DIR: "some/completely/different/path"
        CGO_ENABLED: "0"

Определение переменных для всего рабочего процесса

Добавили возможность задавать переменные окружения для разных заданий в рамках одного рабочего процесса. Общие переменные, заданные в блоке env рабочего процесса, доступны всем заданиям и не требуют переопределения для каждого отдельно.

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

Пример рабочего процесса с общими переменными окружения для двух заданий

workflows:
my-workflow:
env:
    WORKFLOW_VAR: test-var-'test'-\"test\"
tasks:
    - name: my-first-task
    cubes:
        - name: my-cube
        script:
            - echo "$WORKFLOW_VAR"

    - name: my-second-task
    cubes:
        - name: my-cube
        script:
            - echo "$WORKFLOW_VAR"

Поддержка ARM для self-hosted processor

Доступны две новые сборки пользовательского воркера для Linux ARM и Linux ARM64 в бета-тестировании. Решения подходят для запуска на Raspberry Pi и других микроконтроллерах.

Новые возможности автоматизаций: что изменилось
Войдите, чтобы сохранить пост