Skip to main content

project-release

Prepare, publish, verify, or resume a Rust/Go SDK release using this repository's CI and maintainer tag handoff.

소스 정보

저장소
netdata/systemd-journal-sdk
최근 소스 활동
2026년 10월 7일 13:39
감지된 SKILL.md 언어
영어
스타
0
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
project-release
description
Prepare, publish, verify, or resume a Rust/Go SDK release using this repository's CI and maintainer tag handoff.
# Project Release CI publishes Rust crates to crates.io. A maintainer then pushes the repository and Go module tags at the same selected source commit. A paired release is complete after both languages can consume that exact version. Read [RELEASING.md](../../../RELEASING.md) for the maintained setup, commands and recovery procedure. Use [project-release-tagging](../project-release-tagging/SKILL.md) for focused package, semver and tag rules, and [project-agent-orchestration](../project-agent-orchestration/SKILL.md) for SOW and review gates. The release contract is in [product-scope.md](../../sow/specs/product-scope.md#paired-ci-releases). Follow the user's actual request and existing authorization. Preparing a PR or editing instructions does not authorize publication or tag pushes. An explicit release request can authorize those steps; do not ask again for actions already authorized. Loading this skill does not start a release. ## Prepare and merge 1. Check the active/pending SOWs and the previous published APIs in **both** languages. The user chooses scope and version; record the semver decision before implementation. Accepted Go functionality also belongs in Rust and vice versa. Resolve any parity gap with the user before publishing. 2. Prepare aligned release metadata, Rust internal dependency pins and lockfile, current installation examples and migration notes. Assess Rust exhaustive public structs/enums as well as Go source compatibility. Follow the compiler-minimum contract in `AGENTS.md`: never raise SDK minimums above Netdata's consuming-module declarations. 3. Complete local validation, review and scanner disposition under the active SOW. Complete the preparation SOW in the release PR and merge it before publication. Track actual publication in its own execution SOW. 4. Record the version and the full 40-character lowercase source SHA that contains the prepared release and is reachable from canonical `master`. Keep these inputs fixed through publication, tagging and recovery. ## Confirm setup and responsibilities - The GitHub `release` environment allows exactly **Branch master**, with no tag rule or wildcard. Optional required reviewers add an environment approval; they are not a requirement of this process. - A crate owner configures Trusted Publishing **on each of the eight existing crates**, using owner `netdata`, repository `systemd-journal-sdk`, workflow filename `release.yml` and environment `release`. See the guide's crate list. A new crate needs separately authorized initial publication before this binding can be configured. - A maintainer with repository write access can start the workflow without being a crates.io owner. A maintainer with tag-push permission performs the tag handoff using existing GitHub access. This process requires no extra GitHub App or permanent crates.io token. ## Publish Rust through CI 1. Follow the guide's **Start a release** instructions: manually dispatch **Actions → Release** on canonical `master`, with version `X.Y.Z` without `v` and the recorded source SHA. The current workflow supports major versions 0 and 1; version 2 or later needs a reviewed Go module-path migration first. 2. Distinguish the workflow's master SHA from the supplied release source SHA. The source can precede the workflow's merge commit. Ordinary PRs/pushes do not publish, and later master changes do not change the selected source. 3. Require successful source checks and both full language suites at the source-declared compiler minimums, with CGO disabled for Go. 4. Require all eight Rust crates to pass in dependency order: **common → registry → core → host → log-writer → index → engine → public SDK**. For each new version, CI dry-runs before obtaining temporary publishing permission and uploading it. Verified existing versions are preserved. 5. Require API/index availability, non-yanked status, archive checksum and clean Cargo VCS metadata matching the selected source, followed by a fresh exact-version Rust consumer build. Save the successful CI run and its Rust publication summary before the tag handoff. ## Push paired tags and verify Go 1. Copy the exact version/source from the successful CI summary. Check local and canonical remote tags before creating anything. The root `vVERSION` and Go submodule `go/vVERSION` must be annotated and peel to that source, even when master has advanced. 2. Use the guide's tag procedure. Push a new pair atomically to the canonical repository. Preserve correct existing tags and push only missing siblings; stop for a conflicting target or a lightweight tag. Do not move, delete or force-push release tags. Signing is optional; if claiming signed tags, verify the signatures and that those tag objects match the remote objects. 3. Run the guide's `verify-go` command from a checkout containing the release helper and selected source, with Python 3.11+ and a Go compiler meeting that source's minimum. It checks both canonical annotated tags, matching Rust archive sources and a fresh exact-version Go consumer. It does not mutate tags. Go distribution uses the `go/vVERSION` module tag; there is no separate crates.io-style Go upload. 4. Close publication only after Rust CI, paired tags and Go verification all succeed. Completing the automation or preparation PR alone does not prove that a version is published. ## Resume or stop - For an interrupted Rust run, rerun failed jobs or dispatch again with the **same version and source SHA**. CI verifies an existing version before skipping it. An upload timeout can still mean the registry accepted it. - API-only/index-only availability needs propagation checks. An HTTP failure does not prove absence; follow the guide's bounded recovery procedure. - Missing Trusted Publishing on a later crate requires its owner to complete setup, then resume with the original inputs. Publication of the eight crates is serial and can leave an accepted prefix when interrupted. - If Rust succeeded, resume the recorded tag handoff. After a rejected atomic push, re-check both remote tags; preserve matching siblings and retry only missing pushes. If local tags already match, retry the push, not creation. - If Go lookup has not propagated, rerun `verify-go` while preserving tags. - A different crate source, yanked version or conflicting tag requires the user's release/version decision. Stop; do not replace published artifacts or change the source/version during a partially published release. ## Record completion Record the actual CI run, eight published versions and source checks, paired tag objects and peeled source, and exact Rust/Go consumer results in the execution SOW. Keep raw reports and credentials out of durable artifacts. Require the SOW audit's explicit **complete-and-clean** verdict. Complete and move the execution SOW with its release evidence in the same commit, update both SOW ledgers, and report any separately tracked follow-ups. Maintain this skill and `RELEASING.md` together when release behavior changes; keep executable recipes in the guide and tested helper.
GitHub에서 보기