Skip to content

v0.5.0

Choose a tag to compare

@xescugc xescugc released this 15 Jun 10:01
· 27 commits to master since this release

Refactored

  • Consolidate duplicated clickLink method from seven Backbone views into a single shared helper in namespace.js. Uses event.target.closest('a') for safe anchor resolution and adds a null guard for clicks on non-anchor areas (#447)

Fixed

  • Persist runner override for notification_type, resource_type, and secret_type. The field was parsed from HCL but never saved to the database, silently dropping runner override configuration on reload (#506)
  • Add missing hcl:"runner,block" tag to Runner field on ResourceType, SecretType, NotificationType, and Service domain types. Built-in HCL definitions decoded directly into these types would silently ignore runner {} blocks (#507)
  • Pipeline updates no longer unpause paused jobs. The paused state is now exclusively managed by the dedicated pause/unpause actions, preventing HCL-parsed zero values from overwriting runtime state (#495)
  • New jobs with trigger = true no longer replay the entire version backlog. Jobs now record a baseline_version_id at creation time, and the scheduler only considers versions newer than that baseline (#492)

Changed

  • Downstream jobs with passed constraints are now triggered immediately when upstream builds succeed, instead of waiting for the 10-second scheduler tick. The scheduler remains as a fallback (#496)

Added

  • Support referencing specific for_each job instances in passed, notification jobs, and notification exclude (e.g., passed = ["test--a"]). Also fixes a bug where notification jobs/exclude with group names never matched for_each instance builds at runtime (#512)
  • Cross-reference validation in ReadPipeline(): pipeline saves now catch invalid references to non-existent jobs, resources, runners, notifications, resource types, notification types, and secret types. All errors are reported at once. Also surfaces graph rendering errors in the pipeline editor and show views (#497)
  • pipeline validate CLI command: validate pipeline HCL files for syntax and structural errors without a running server. Supports --var key=value and --vars vars.json flags. Useful for CI/CD checks, pre-commit hooks, and headless environments (#155)
  • Release pipeline with .deb/.rpm packages: binaries are now named pikoci-<os>-<arch> (with .exe for Windows), Linux packages (.deb and .rpm) are generated via nfpm for amd64/arm64, and a SHA256SUMS file is included in GitHub Releases. The release job is split into discrete tasks (install-tools, build-binaries, package-deb-rpm, create-release) with tool caching (#346)
  • in_parallel plan step: run multiple steps concurrently within a job. Supports limit (max concurrency) and fail_fast (cancel remaining on first failure). Allowed inner step types: get, task, put, notify. Nested in_parallel and service steps are rejected at parse time. Sub-steps stream progress in real-time (CLI and UI), and queued steps show as pending. The UI displays step count on the collapsed header (#170)
  • Worker tagging: route jobs and resource checks to specific workers using tags = ["gpu"] on jobs/resources in the pipeline HCL and --tags gpu on workers. Matching uses AND logic (all job tags must be present on the worker). Untagged work runs on any non-exclusive worker. Add --exclusive-tags to restrict a worker to only handle matching tagged work. Tags and exclusive status are visible in the workers dashboard. Also fixes resource checks being dispatched to multiple workers simultaneously by adding optimistic locking (#98)
  • Worker health monitoring: workers send periodic heartbeats to the server, which tracks their status as healthy or stale (no heartbeat for over 90 seconds). Admin users see all workers in a new dashboard with status, queues, platform, version, and uptime. A warning banner appears when no healthy workers are detected. Admins can delete stale workers from the UI or via DELETE /workers/{name}. Includes a pikoci_workers Prometheus gauge with status label for alerting (#482)
  • Built-in fs resource type for watching local files and directories. Triggers jobs when file contents change (SHA256 hash comparison). Supports both single files (with path, hash, modified, size metadata) and directories (tree hash). Use source = "pikoci://fs" (#493)
  • Better error reporting for param typos: pipeline schema validation now catches typos in block names (e.g. tsktask) and attributes (e.g. triggrtrigger, argargs) at save time with line-accurate errors and Levenshtein-based suggestions. At runtime, unrecognized resource/notification/service params show warnings in step logs with "did you mean?" hints, and failed commands list available environment variable names to help diagnose missing params (#116)
  • Documentation: added "Build Logs & Security" section to Pipeline Reference, added job block summary table, added missing sub-block fields to all config tables, fixed mkdocs nav (removed phantom Queue.md, added Pause and Resource Pinning pages). Full docs audit: removed non-existent secrets field from step tables, fixed variable types to include number/bool, fixed secret path as optional, added --var flag to Variables docs, corrected $CACHE_DIR scope to include push, added resource tags field, added setsymmetricdifference function, updated docker runner example to match actual built-in, fixed Pause.md CLI section (#502)