4.6 KiB
4.6 KiB
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
-
libpdftract-build-pipeline (Main DAG)
- Orchestrates all build steps in dependency order
-
clone-repo
- Clones pdftract repo at the specified tag
- Uses alpine/git container
-
generate-header
- Runs cbindgen to generate
include/pdftract.h - Installs cbindgen via cargo
- Uses rust:1.83-slim container
- Runs cbindgen to generate
-
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
- Cross-compiles libpdftract for:
-
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
- Packages each triple as
-
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
-
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
-
emit-vcpkg-port
- Generates vcpkg port draft:
ports/pdftract/vcpkg.jsonports/pdftract/portfile.cmakeSUBMISSION.mdwith instructions
- Emits as Argo artifacts for manual review/submission
- Generates vcpkg port draft:
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/pdftractbranch: maintag: 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