Skip to content

zorph-io/blockmoon-agent

Repository files navigation

BlockMoon Agent

Agent с воспроизводимой сборкой и криптографической подписью образа.

Supply chain

GitHub (исходники) → GitHub Actions → GHCR (подписанный image)
                                              ↓
                              пользователь верифицирует cosign + SLSA

Опубликованный образ: ghcr.io/zorph-io/blockmoon-agent

Что гарантируется

Проверка Инструмент Что доказывает
Подпись образа Cosign (keyless, OIDC) Образ собран доверенным GitHub Actions workflow
Provenance SLSA v1 Образ собран из конкретного коммита в этом репозитории
Reproducible build Pinned base digest + SOURCE_DATE_EPOCH Одинаковый исходный код → одинаковый digest (при фиксированном toolchain)

Верификация образа

Установите Cosign:

# macOS
brew install cosign

Доступ к образу в GHCR

По умолчанию пакеты GHCR приватные. cosign verify читает манифест и подписи из registry — без доступа будет UNAUTHORIZED.

Вариант A (рекомендуется): сделать пакет публичным

  1. Packagesblockmoon-agent
  2. Package settingsChange visibilityPublic

После этого verify работает без логина.

Вариант B: авторизоваться (PAT с scope read:packages)

export GHCR_USERNAME="<your-github-username>"
export GHCR_TOKEN="$(gh auth token)"   # или classic PAT
./scripts/verify-image.sh ghcr.io/zorph-io/blockmoon-agent:latest

Или через Docker:

echo "$GHCR_TOKEN" | docker login ghcr.io -u "$GHCR_USERNAME" --password-stdin
./scripts/verify-image.sh ghcr.io/zorph-io/blockmoon-agent:latest

Проверка подписи

chmod +x scripts/verify-image.sh
./scripts/verify-image.sh ghcr.io/zorph-io/blockmoon-agent:latest

Или вручную:

# 1. Подпись (keyless, GitHub OIDC)
cosign verify ghcr.io/zorph-io/blockmoon-agent:latest \
  --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
  --certificate-identity-regexp='^https://github.com/zorph-io/blockmoon-agent/.github/workflows/'

# 2. SLSA provenance — image = конкретный коммит
cosign verify-attestation ghcr.io/zorph-io/blockmoon-agent:latest \
  --type slsaprovenance \
  --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
  --certificate-identity-regexp='^https://github.com/zorph-io/blockmoon-agent/.github/workflows/'

Рекомендуется проверять по digest, а не по тегу:

docker pull ghcr.io/zorph-io/blockmoon-agent@sha256:<digest>
./scripts/verify-image.sh ghcr.io/zorph-io/blockmoon-agent@sha256:<digest>

Digest публикуется в GitHub Actions summary после каждого билда.

Локальная сборка

docker build \
  --build-arg SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) \
  -t blockmoon-agent:local .
docker run --rm blockmoon-agent:local

CI/CD

Workflow .github/workflows/docker-publish.yml запускается при:

  • push в main (тег latest + sha)
  • push тега v* (semver-теги)

Шаги: build → push GHCR → cosign sign → SLSA attestation.

Требования к репозиторию

  1. Settings → Actions → General → Workflow permissionsRead and write permissions
  2. Settings → Actions → General — включить Allow GitHub Actions to create and approve pull requests (для attestations)
  3. Сделайте пакет GHCR публичным (см. раздел «Верификация образа»), иначе пользователям нужен read:packages токен

Разработка

cargo build --release
./target/release/blockmoon-agent --version

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors