@ship.zone/ci-spec 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/.smartconfig.json +46 -0
  2. package/changelog.md +190 -0
  3. package/conformance/archive-cases.json +446 -0
  4. package/conformance/ci-actions/compile-invalid/build-arg-secret-collision.yml +31 -0
  5. package/conformance/ci-actions/compile-invalid/candidate-without-needs.yml +36 -0
  6. package/conformance/ci-actions/compile-invalid/needs-wider-triggers.yml +42 -0
  7. package/conformance/ci-actions/compile-invalid/npm-read-registry-not-allowlisted.yml +34 -0
  8. package/conformance/ci-actions/compile-invalid/publish-job-excludes-tag.yml +57 -0
  9. package/conformance/ci-actions/compile-invalid/shared-memory-above-memory.yml +28 -0
  10. package/conformance/ci-actions/compile-invalid/trigger-kind-without-job.yml +30 -0
  11. package/conformance/ci-actions/invalid/alias-affix-invalid.yml +33 -0
  12. package/conformance/ci-actions/invalid/alias.yml +32 -0
  13. package/conformance/ci-actions/invalid/bridge-network.yml +27 -0
  14. package/conformance/ci-actions/invalid/build-darwin-platform.yml +24 -0
  15. package/conformance/ci-actions/invalid/build-with-steps.yml +27 -0
  16. package/conformance/ci-actions/invalid/concurrency-empty-group.yml +28 -0
  17. package/conformance/ci-actions/invalid/concurrency-without-cancel-in-progress.yml +27 -0
  18. package/conformance/ci-actions/invalid/container-job-build-profile.yml +25 -0
  19. package/conformance/ci-actions/invalid/custom-tag.txt +23 -0
  20. package/conformance/ci-actions/invalid/duplicate-key.txt +24 -0
  21. package/conformance/ci-actions/invalid/egress-bare-wildcard.yml +29 -0
  22. package/conformance/ci-actions/invalid/egress-empty-allowlist.yml +28 -0
  23. package/conformance/ci-actions/invalid/egress-ip-literal.yml +29 -0
  24. package/conformance/ci-actions/invalid/egress-single-label-wildcard.yml +29 -0
  25. package/conformance/ci-actions/invalid/job-publish-permission.yml +28 -0
  26. package/conformance/ci-actions/invalid/job-trigger-undeclared-kind.yml +27 -0
  27. package/conformance/ci-actions/invalid/literal-alias-affix.yml +33 -0
  28. package/conformance/ci-actions/invalid/missing-spec.yml +24 -0
  29. package/conformance/ci-actions/invalid/multiple-documents.yml +25 -0
  30. package/conformance/ci-actions/invalid/npm-read-invalid-scope.yml +33 -0
  31. package/conformance/ci-actions/invalid/oci-darwin-platform.yml +25 -0
  32. package/conformance/ci-actions/invalid/permission-without-publication.yml +31 -0
  33. package/conformance/ci-actions/invalid/publish-order-duplicate.yml +50 -0
  34. package/conformance/ci-actions/invalid/publish-order-missing-kind.yml +48 -0
  35. package/conformance/ci-actions/invalid/publish-order-undeclared-kind.yml +45 -0
  36. package/conformance/ci-actions/invalid/publish-without-permission.yml +31 -0
  37. package/conformance/ci-actions/invalid/publish-without-tag-trigger.yml +31 -0
  38. package/conformance/ci-actions/invalid/release-notes-without-assets.yml +46 -0
  39. package/conformance/ci-actions/invalid/reserved-label-prefix.yml +25 -0
  40. package/conformance/ci-actions/invalid/reserved-label.yml +25 -0
  41. package/conformance/ci-actions/invalid/retention-above-maximum.yml +83 -0
  42. package/conformance/ci-actions/invalid/retention-below-minimum.yml +83 -0
  43. package/conformance/ci-actions/invalid/schema-version-field.yml +26 -0
  44. package/conformance/ci-actions/invalid/shared-memory-below-minimum.yml +28 -0
  45. package/conformance/ci-actions/invalid/shell-string.yml +21 -0
  46. package/conformance/ci-actions/invalid/spec-number.yml +25 -0
  47. package/conformance/ci-actions/invalid/spec-prerelease.yml +25 -0
  48. package/conformance/ci-actions/invalid/spec-range.yml +25 -0
  49. package/conformance/ci-actions/invalid/timeout-above-maximum.yml +26 -0
  50. package/conformance/ci-actions/invalid/timeout-below-minimum.yml +26 -0
  51. package/conformance/ci-actions/invalid/unknown-alias-kind.yml +31 -0
  52. package/conformance/ci-actions/invalid/unknown-key.yml +24 -0
  53. package/conformance/ci-actions/invalid/vm-darwin-candidate.yml +38 -0
  54. package/conformance/ci-actions/invalid/vm-darwin-shared-memory.yml +28 -0
  55. package/conformance/ci-actions/invalid/vm-oci-execution.yml +25 -0
  56. package/conformance/ci-actions/invalid/vm-unsupported-platform.yml +25 -0
  57. package/conformance/ci-actions/invalid/vm-without-platform.yml +24 -0
  58. package/conformance/ci-actions/valid/concurrency.yml +83 -0
  59. package/conformance/ci-actions/valid/egress.yml +40 -0
  60. package/conformance/ci-actions/valid/image-build.yml +80 -0
  61. package/conformance/ci-actions/valid/matrix.yml +45 -0
  62. package/conformance/ci-actions/valid/minimal.yml +25 -0
  63. package/conformance/ci-actions/valid/npm-read.yml +60 -0
  64. package/conformance/ci-actions/valid/release-assets.yml +114 -0
  65. package/conformance/ci-actions/valid/release-signing.yml +71 -0
  66. package/conformance/ci-actions/valid/release.yml +109 -0
  67. package/conformance/ci-actions/valid/resources.yml +79 -0
  68. package/conformance/ci-actions/valid/vm.yml +77 -0
  69. package/conformance/compile-cases.json +5885 -0
  70. package/conformance/compile-cases.schema.json +766 -0
  71. package/conformance/digest-cases.json +144 -0
  72. package/conformance/runner-cases.json +1238 -0
  73. package/conformance/runner-jobs/invalid/bridge-network.json +70 -0
  74. package/conformance/runner-jobs/invalid/build-darwin-platform.json +100 -0
  75. package/conformance/runner-jobs/invalid/build-with-steps.json +111 -0
  76. package/conformance/runner-jobs/invalid/build-without-microvm.json +100 -0
  77. package/conformance/runner-jobs/invalid/egress-empty-allowlist.json +71 -0
  78. package/conformance/runner-jobs/invalid/mutable-image.json +70 -0
  79. package/conformance/runner-jobs/invalid/npm-read-reserved-environment.json +82 -0
  80. package/conformance/runner-jobs/invalid/oci-darwin-platform.json +71 -0
  81. package/conformance/runner-jobs/invalid/push-permission-container.json +70 -0
  82. package/conformance/runner-jobs/invalid/shared-memory-below-minimum.json +71 -0
  83. package/conformance/runner-jobs/invalid/timeout-missing.json +69 -0
  84. package/conformance/runner-jobs/invalid/vm-without-microvm.json +82 -0
  85. package/conformance/runner-jobs/valid/candidate-test.json +72 -0
  86. package/conformance/runner-jobs/valid/egress.json +80 -0
  87. package/conformance/runner-jobs/valid/image-build.json +100 -0
  88. package/conformance/runner-jobs/valid/minimal.json +70 -0
  89. package/conformance/runner-jobs/valid/npm-read.json +81 -0
  90. package/conformance/runner-jobs/valid/resources.json +71 -0
  91. package/conformance/runner-jobs/valid/timeout-retention-defaults.json +91 -0
  92. package/conformance/runner-jobs/valid/vm-darwin.json +70 -0
  93. package/conformance/runner-jobs/valid/vm.json +82 -0
  94. package/conformance/runner-messages.json +2035 -0
  95. package/conformance/version-cases.json +125 -0
  96. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  97. package/dist_ts/00_commitinfo_data.js +9 -0
  98. package/dist_ts/constants.d.ts +199 -0
  99. package/dist_ts/constants.js +106 -0
  100. package/dist_ts/index.d.ts +1 -0
  101. package/dist_ts/index.js +2 -0
  102. package/dist_ts/plugins.d.ts +1 -0
  103. package/dist_ts/plugins.js +3 -0
  104. package/examples/ci_actions.yml +64 -0
  105. package/license.md +21 -0
  106. package/package.json +72 -0
  107. package/readme.md +146 -0
  108. package/schemas/ci_actions.schema.json +1664 -0
  109. package/schemas/runner-job.schema.json +1172 -0
  110. package/spec/ci-actions.md +433 -0
  111. package/spec/runner-protocol.md +378 -0
  112. package/spec/runner.openapi.json +2182 -0
  113. package/ts/00_commitinfo_data.ts +8 -0
  114. package/ts/constants.ts +112 -0
  115. package/ts/index.ts +1 -0
  116. package/ts/plugins.ts +1 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
+ */
4
+ export const commitinfo = {
5
+ name: '@ship.zone/ci-spec',
6
+ version: '2.0.0',
7
+ description: 'The ship.zone CI standard: language-neutral CI workflow and runner protocol specifications.'
8
+ }
@@ -0,0 +1,112 @@
1
+ import { commitinfo } from './00_commitinfo_data.js';
2
+
3
+ /**
4
+ * The specification version: the published `@ship.zone/ci-spec` package version. It is the
5
+ * version an implementation built against this package implements, and the only version a
6
+ * workflow, compiled job, or runner protocol message carries (as `spec`).
7
+ */
8
+ export const ciSpecVersion: string = commitinfo.version;
9
+ export const ciSpecStatus = 'draft' as const;
10
+ export const runnerProtocolBasePath = '/api/runner' as const;
11
+ export const maximumArchivePathMetadataBytes = 134_217_728 as const;
12
+
13
+ /**
14
+ * Execution profile identifiers. The normative schemas define each identifier once
15
+ * (`containerProfile`, `imageBuildProfile`, and `vmProfile`); the conformance tests assert both
16
+ * sources agree.
17
+ */
18
+ export const executionProfileIdentifiers = {
19
+ container: 'oci',
20
+ imageBuild: 'oci-image',
21
+ virtualMachine: 'vm',
22
+ } as const;
23
+
24
+ /**
25
+ * Runner feature identifiers, mirrored from the runner job schema `feature` definition.
26
+ */
27
+ export const runnerFeatureIdentifiers = ['source.tar-gz', 'artifacts', 'caches'] as const;
28
+
29
+ /**
30
+ * Lease feature identifiers a runner may advertise in `RunnerCapabilities.leaseFeatures`, mirrored
31
+ * from the OpenAPI `LeaseFeature` component.
32
+ */
33
+ export const leaseFeatureIdentifiers = ['image-pull-grants', 'candidate-bindings', 'npm-read-grants'] as const;
34
+
35
+ /**
36
+ * The layers of `ci_actions.yml` compilation, in evaluation order (spec/ci-actions.md, Compilation
37
+ * Failures).
38
+ */
39
+ export const compilationFailureLayers = ['source', 'yaml', 'version', 'schema', 'workflow', 'policy', 'run'] as const;
40
+
41
+ /**
42
+ * Every compilation failure code with its layer, in precedence order, mirrored from
43
+ * `conformance/compile-cases.json` `failureCodes`; the conformance tests assert both sources and the
44
+ * prose table agree.
45
+ */
46
+ export const compilationFailureCodes = [
47
+ { code: 'workflow_too_large', layer: 'source' },
48
+ { code: 'workflow_encoding_invalid', layer: 'source' },
49
+ { code: 'workflow_yaml_syntax', layer: 'yaml' },
50
+ { code: 'workflow_yaml_document_count', layer: 'yaml' },
51
+ { code: 'workflow_yaml_directive', layer: 'yaml' },
52
+ { code: 'workflow_yaml_duplicate_key', layer: 'yaml' },
53
+ { code: 'workflow_yaml_key_type', layer: 'yaml' },
54
+ { code: 'workflow_yaml_anchor', layer: 'yaml' },
55
+ { code: 'workflow_yaml_merge_key', layer: 'yaml' },
56
+ { code: 'workflow_yaml_tag', layer: 'yaml' },
57
+ { code: 'workflow_number_invalid', layer: 'yaml' },
58
+ { code: 'spec_incompatible', layer: 'version' },
59
+ { code: 'workflow_schema_invalid', layer: 'schema' },
60
+ { code: 'trigger_pattern_invalid', layer: 'workflow' },
61
+ { code: 'needs_unknown', layer: 'workflow' },
62
+ { code: 'needs_cycle', layer: 'workflow' },
63
+ { code: 'expansion_limit_exceeded', layer: 'workflow' },
64
+ { code: 'needs_trigger_wider', layer: 'workflow' },
65
+ { code: 'trigger_kind_unused', layer: 'workflow' },
66
+ { code: 'permission_escalation', layer: 'workflow' },
67
+ { code: 'permission_insufficient', layer: 'workflow' },
68
+ { code: 'environment_conflict', layer: 'workflow' },
69
+ { code: 'environment_limit_exceeded', layer: 'workflow' },
70
+ { code: 'command_limit_exceeded', layer: 'workflow' },
71
+ { code: 'transfer_name_duplicate', layer: 'workflow' },
72
+ { code: 'cache_path_overlap', layer: 'workflow' },
73
+ { code: 'resources_invalid', layer: 'workflow' },
74
+ { code: 'network_host_duplicate', layer: 'workflow' },
75
+ { code: 'npm_read_invalid', layer: 'workflow' },
76
+ { code: 'build_input_conflict', layer: 'workflow' },
77
+ { code: 'candidate_reference_invalid', layer: 'workflow' },
78
+ { code: 'candidate_platform_missing', layer: 'workflow' },
79
+ { code: 'publish_reference_invalid', layer: 'workflow' },
80
+ { code: 'policy_limit_exceeded', layer: 'policy' },
81
+ { code: 'policy_timeout_exceeded', layer: 'policy' },
82
+ { code: 'policy_retention_exceeded', layer: 'policy' },
83
+ { code: 'policy_egress_denied', layer: 'policy' },
84
+ { code: 'policy_npm_registry_denied', layer: 'policy' },
85
+ { code: 'policy_denied', layer: 'policy' },
86
+ { code: 'manual_input_invalid', layer: 'run' },
87
+ { code: 'tag_version_required', layer: 'run' },
88
+ { code: 'alias_invalid', layer: 'run' },
89
+ { code: 'alias_duplicate', layer: 'run' },
90
+ { code: 'secret_untrusted', layer: 'run' },
91
+ { code: 'npm_read_untrusted', layer: 'run' },
92
+ { code: 'secret_unknown', layer: 'run' },
93
+ { code: 'protected_secret_denied', layer: 'run' },
94
+ { code: 'secret_too_short', layer: 'run' },
95
+ ] as const;
96
+
97
+ export const ciSpecAssetPaths = {
98
+ runnerOpenApi: 'spec/runner.openapi.json',
99
+ runnerProtocol: 'spec/runner-protocol.md',
100
+ ciActionsProtocol: 'spec/ci-actions.md',
101
+ runnerJobSchema: 'schemas/runner-job.schema.json',
102
+ ciActionsSchema: 'schemas/ci_actions.schema.json',
103
+ runnerConformanceCases: 'conformance/runner-cases.json',
104
+ runnerMessageCases: 'conformance/runner-messages.json',
105
+ digestCases: 'conformance/digest-cases.json',
106
+ archiveCases: 'conformance/archive-cases.json',
107
+ versionCases: 'conformance/version-cases.json',
108
+ compileCases: 'conformance/compile-cases.json',
109
+ compileCasesSchema: 'conformance/compile-cases.schema.json',
110
+ ciActionsConformanceDirectory: 'conformance/ci-actions',
111
+ runnerJobConformanceDirectory: 'conformance/runner-jobs',
112
+ } as const;
package/ts/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './constants.js';
package/ts/plugins.ts ADDED
@@ -0,0 +1 @@
1
+ // This package intentionally has no runtime dependencies.