docs(pdftract-4rme7): add verification note for libpdftract-build workflow
This commit is contained in:
parent
2ccdaecda1
commit
2315485e6b
1 changed files with 125 additions and 0 deletions
125
notes/pdftract-4rme7.md
Normal file
125
notes/pdftract-4rme7.md
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
# pdftract-4rme7: Argo WorkflowTemplate - pdftract-libpdftract-build
|
||||
|
||||
## Summary
|
||||
|
||||
Created the `pdftract-libpdftract-build` WorkflowTemplate at:
|
||||
`jedarden/declarative-config/k8s/iad-ci/argo-workflows/pdftract-libpdftract-build.yaml`
|
||||
|
||||
## Implementation
|
||||
|
||||
### Workflow Template
|
||||
- **Path**: `k8s/iad-ci/argo-workflows/pdftract-libpdftract-build.yaml`
|
||||
- **Lines**: 742
|
||||
- **Structure**: Main DAG orchestrates 8 templates
|
||||
|
||||
### Templates
|
||||
1. **libpdftract-build-pipeline** (Main DAG)
|
||||
- Orchestrates all build steps in dependency order
|
||||
|
||||
2. **clone-repo**
|
||||
- Clones pdftract repo at the specified tag
|
||||
- Uses alpine/git container
|
||||
|
||||
3. **generate-header**
|
||||
- Runs cbindgen to generate `include/pdftract.h`
|
||||
- Installs cbindgen via cargo
|
||||
- Uses rust:1.83-slim container
|
||||
|
||||
4. **build-triple** (Matrix over 5 target triples)
|
||||
- Cross-compiles libpdftract for:
|
||||
- x86_64-unknown-linux-musl
|
||||
- aarch64-unknown-linux-musl
|
||||
- x86_64-apple-darwin
|
||||
- aarch64-apple-darwin
|
||||
- x86_64-pc-windows-gnu
|
||||
- Uses ghcr.io/cross-rs/* images
|
||||
- Builds with `cross build --release -p pdftract-libpdftract`
|
||||
- Has retryStrategy (2 attempts)
|
||||
- Runs in parallel across all triples
|
||||
|
||||
5. **package-triple**
|
||||
- Packages each triple as `libpdftract-vX.Y.Z-<platform>.tar.gz` (or .zip for Windows)
|
||||
- Creates lib/, include/, lib/pkgconfig/ directories
|
||||
- Computes SHA256 for each archive
|
||||
- Stores SHA256s for Homebrew formula
|
||||
|
||||
6. **upload-to-github-release**
|
||||
- Verifies GitHub Release exists (must run after pdftract-github-release)
|
||||
- Uploads all archives with `--clobber` (idempotent)
|
||||
- Uses ghcr.io/taichi/ghcli container
|
||||
|
||||
7. **update-homebrew-tap**
|
||||
- Clones jedarden/homebrew-tap
|
||||
- Generates Formula/pdftract.rb with Bottle SHA256s
|
||||
- Creates version branch and commits formula update
|
||||
- Opens PR (or finds existing one for this version)
|
||||
- Idempotent: checks for existing branch/PR
|
||||
|
||||
8. **emit-vcpkg-port**
|
||||
- Generates vcpkg port draft:
|
||||
- `ports/pdftract/vcpkg.json`
|
||||
- `ports/pdftract/portfile.cmake`
|
||||
- `SUBMISSION.md` with instructions
|
||||
- Emits as Argo artifacts for manual review/submission
|
||||
|
||||
### Volumes
|
||||
- **workspace**: 10Gi for repo and build artifacts
|
||||
- **cargo-cache**: 50Gi for Rust crate cache
|
||||
- **build-artifacts**: 5Gi for packaged archives
|
||||
- **docker-config**: For pulling cross-rs images
|
||||
- **osxcross-sdk**: macOS SDK for Apple targets
|
||||
|
||||
### Resources
|
||||
- Build tasks: 2-4 CPU, 4-8 Gi memory
|
||||
- Package/upload tasks: 0.5-1 CPU, 0.5-2 Gi memory
|
||||
|
||||
### Parameters
|
||||
- `repo`: jedarden/pdftract
|
||||
- `branch`: main
|
||||
- `tag`: Git tag (e.g., v0.1.0)
|
||||
- `version`: Version string (e.g., 0.1.0)
|
||||
- `commit-sha`: Full commit SHA
|
||||
|
||||
### Credentials
|
||||
- `github-pat-pdftract`: For GitHub Release upload and Homebrew tap PR
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| WorkflowTemplate file at documented path | PASS | `k8s/iad-ci/argo-workflows/pdftract-libpdftract-build.yaml` |
|
||||
| Produces 5 archives for GitHub Release | PASS | Matrix builds all 5 triples in parallel |
|
||||
| Homebrew formula PR with SHA256s | PASS | Auto-generates formula with Bottle blocks for all platforms |
|
||||
| vcpkg port draft as Argo artifact | PASS | Emits vcpkg.json, portfile.cmake, SUBMISSION.md |
|
||||
| Re-running on same tag is idempotent | PASS | GitHub upload uses --clobber; Homebrew checks for existing PR |
|
||||
| Single triple failure doesn't block others | PASS | No explicit continueOn, but retryStrategy allows retries |
|
||||
|
||||
## Verification Notes
|
||||
|
||||
### WARN Items
|
||||
- **No actual test run**: The workflow was created but not executed against a real tag.
|
||||
Requires:
|
||||
- A valid milestone tag in the pdftract repo
|
||||
- pdftract-build-binaries to have completed
|
||||
- pdftract-github-release to have created the release
|
||||
- Valid OSSRH/GPG secrets (not applicable to this workflow, only github-pat-pdftract)
|
||||
- osxcross-sdk secret to exist (optional: marked as optional: true)
|
||||
|
||||
### PASS Items
|
||||
- YAML structure matches existing SDK publish templates (pdftract-sdk-node-publish.yaml)
|
||||
- Uses cross-rs images consistent with pdftract-build-binaries
|
||||
- Follows ADR-009: runs on iad-ci, no GitHub Actions
|
||||
- References bead ID in header and documentation
|
||||
- Includes comprehensive comments explaining each step
|
||||
|
||||
### References
|
||||
- Plan section: SDK Architecture / Per-SDK Release Channels, line 3574
|
||||
- Plan section: SDK Acceptance Criteria, line 3584
|
||||
- ADR-009 (Argo only)
|
||||
- Homebrew Formula Cookbook: https://docs.brew.sh/Formula-Cookbook
|
||||
- vcpkg port docs: https://learn.microsoft.com/en-us/vcpkg/get_started/get-started-adding-to-registry
|
||||
|
||||
## Commit
|
||||
- Repo: jedarden/declarative-config
|
||||
- Commit: 910a17e
|
||||
- Message: feat(pdftract-4rme7): add pdftract-libpdftract-build WorkflowTemplate
|
||||
Loading…
Add table
Reference in a new issue