@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.
- package/.smartconfig.json +46 -0
- package/changelog.md +190 -0
- package/conformance/archive-cases.json +446 -0
- package/conformance/ci-actions/compile-invalid/build-arg-secret-collision.yml +31 -0
- package/conformance/ci-actions/compile-invalid/candidate-without-needs.yml +36 -0
- package/conformance/ci-actions/compile-invalid/needs-wider-triggers.yml +42 -0
- package/conformance/ci-actions/compile-invalid/npm-read-registry-not-allowlisted.yml +34 -0
- package/conformance/ci-actions/compile-invalid/publish-job-excludes-tag.yml +57 -0
- package/conformance/ci-actions/compile-invalid/shared-memory-above-memory.yml +28 -0
- package/conformance/ci-actions/compile-invalid/trigger-kind-without-job.yml +30 -0
- package/conformance/ci-actions/invalid/alias-affix-invalid.yml +33 -0
- package/conformance/ci-actions/invalid/alias.yml +32 -0
- package/conformance/ci-actions/invalid/bridge-network.yml +27 -0
- package/conformance/ci-actions/invalid/build-darwin-platform.yml +24 -0
- package/conformance/ci-actions/invalid/build-with-steps.yml +27 -0
- package/conformance/ci-actions/invalid/concurrency-empty-group.yml +28 -0
- package/conformance/ci-actions/invalid/concurrency-without-cancel-in-progress.yml +27 -0
- package/conformance/ci-actions/invalid/container-job-build-profile.yml +25 -0
- package/conformance/ci-actions/invalid/custom-tag.txt +23 -0
- package/conformance/ci-actions/invalid/duplicate-key.txt +24 -0
- package/conformance/ci-actions/invalid/egress-bare-wildcard.yml +29 -0
- package/conformance/ci-actions/invalid/egress-empty-allowlist.yml +28 -0
- package/conformance/ci-actions/invalid/egress-ip-literal.yml +29 -0
- package/conformance/ci-actions/invalid/egress-single-label-wildcard.yml +29 -0
- package/conformance/ci-actions/invalid/job-publish-permission.yml +28 -0
- package/conformance/ci-actions/invalid/job-trigger-undeclared-kind.yml +27 -0
- package/conformance/ci-actions/invalid/literal-alias-affix.yml +33 -0
- package/conformance/ci-actions/invalid/missing-spec.yml +24 -0
- package/conformance/ci-actions/invalid/multiple-documents.yml +25 -0
- package/conformance/ci-actions/invalid/npm-read-invalid-scope.yml +33 -0
- package/conformance/ci-actions/invalid/oci-darwin-platform.yml +25 -0
- package/conformance/ci-actions/invalid/permission-without-publication.yml +31 -0
- package/conformance/ci-actions/invalid/publish-order-duplicate.yml +50 -0
- package/conformance/ci-actions/invalid/publish-order-missing-kind.yml +48 -0
- package/conformance/ci-actions/invalid/publish-order-undeclared-kind.yml +45 -0
- package/conformance/ci-actions/invalid/publish-without-permission.yml +31 -0
- package/conformance/ci-actions/invalid/publish-without-tag-trigger.yml +31 -0
- package/conformance/ci-actions/invalid/release-notes-without-assets.yml +46 -0
- package/conformance/ci-actions/invalid/reserved-label-prefix.yml +25 -0
- package/conformance/ci-actions/invalid/reserved-label.yml +25 -0
- package/conformance/ci-actions/invalid/retention-above-maximum.yml +83 -0
- package/conformance/ci-actions/invalid/retention-below-minimum.yml +83 -0
- package/conformance/ci-actions/invalid/schema-version-field.yml +26 -0
- package/conformance/ci-actions/invalid/shared-memory-below-minimum.yml +28 -0
- package/conformance/ci-actions/invalid/shell-string.yml +21 -0
- package/conformance/ci-actions/invalid/spec-number.yml +25 -0
- package/conformance/ci-actions/invalid/spec-prerelease.yml +25 -0
- package/conformance/ci-actions/invalid/spec-range.yml +25 -0
- package/conformance/ci-actions/invalid/timeout-above-maximum.yml +26 -0
- package/conformance/ci-actions/invalid/timeout-below-minimum.yml +26 -0
- package/conformance/ci-actions/invalid/unknown-alias-kind.yml +31 -0
- package/conformance/ci-actions/invalid/unknown-key.yml +24 -0
- package/conformance/ci-actions/invalid/vm-darwin-candidate.yml +38 -0
- package/conformance/ci-actions/invalid/vm-darwin-shared-memory.yml +28 -0
- package/conformance/ci-actions/invalid/vm-oci-execution.yml +25 -0
- package/conformance/ci-actions/invalid/vm-unsupported-platform.yml +25 -0
- package/conformance/ci-actions/invalid/vm-without-platform.yml +24 -0
- package/conformance/ci-actions/valid/concurrency.yml +83 -0
- package/conformance/ci-actions/valid/egress.yml +40 -0
- package/conformance/ci-actions/valid/image-build.yml +80 -0
- package/conformance/ci-actions/valid/matrix.yml +45 -0
- package/conformance/ci-actions/valid/minimal.yml +25 -0
- package/conformance/ci-actions/valid/npm-read.yml +60 -0
- package/conformance/ci-actions/valid/release-assets.yml +114 -0
- package/conformance/ci-actions/valid/release-signing.yml +71 -0
- package/conformance/ci-actions/valid/release.yml +109 -0
- package/conformance/ci-actions/valid/resources.yml +79 -0
- package/conformance/ci-actions/valid/vm.yml +77 -0
- package/conformance/compile-cases.json +5885 -0
- package/conformance/compile-cases.schema.json +766 -0
- package/conformance/digest-cases.json +144 -0
- package/conformance/runner-cases.json +1238 -0
- package/conformance/runner-jobs/invalid/bridge-network.json +70 -0
- package/conformance/runner-jobs/invalid/build-darwin-platform.json +100 -0
- package/conformance/runner-jobs/invalid/build-with-steps.json +111 -0
- package/conformance/runner-jobs/invalid/build-without-microvm.json +100 -0
- package/conformance/runner-jobs/invalid/egress-empty-allowlist.json +71 -0
- package/conformance/runner-jobs/invalid/mutable-image.json +70 -0
- package/conformance/runner-jobs/invalid/npm-read-reserved-environment.json +82 -0
- package/conformance/runner-jobs/invalid/oci-darwin-platform.json +71 -0
- package/conformance/runner-jobs/invalid/push-permission-container.json +70 -0
- package/conformance/runner-jobs/invalid/shared-memory-below-minimum.json +71 -0
- package/conformance/runner-jobs/invalid/timeout-missing.json +69 -0
- package/conformance/runner-jobs/invalid/vm-without-microvm.json +82 -0
- package/conformance/runner-jobs/valid/candidate-test.json +72 -0
- package/conformance/runner-jobs/valid/egress.json +80 -0
- package/conformance/runner-jobs/valid/image-build.json +100 -0
- package/conformance/runner-jobs/valid/minimal.json +70 -0
- package/conformance/runner-jobs/valid/npm-read.json +81 -0
- package/conformance/runner-jobs/valid/resources.json +71 -0
- package/conformance/runner-jobs/valid/timeout-retention-defaults.json +91 -0
- package/conformance/runner-jobs/valid/vm-darwin.json +70 -0
- package/conformance/runner-jobs/valid/vm.json +82 -0
- package/conformance/runner-messages.json +2035 -0
- package/conformance/version-cases.json +125 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/constants.d.ts +199 -0
- package/dist_ts/constants.js +106 -0
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +2 -0
- package/dist_ts/plugins.d.ts +1 -0
- package/dist_ts/plugins.js +3 -0
- package/examples/ci_actions.yml +64 -0
- package/license.md +21 -0
- package/package.json +72 -0
- package/readme.md +146 -0
- package/schemas/ci_actions.schema.json +1664 -0
- package/schemas/runner-job.schema.json +1172 -0
- package/spec/ci-actions.md +433 -0
- package/spec/runner-protocol.md +378 -0
- package/spec/runner.openapi.json +2182 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/constants.ts +112 -0
- package/ts/index.ts +1 -0
- package/ts/plugins.ts +1 -0
package/ts/constants.ts
ADDED
|
@@ -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.
|