[{"data":1,"prerenderedAt":1374},["ShallowReactive",2],{"docs-navigation":3,"-docs-cli-releases":410,"-docs-cli-releases-surround":1369},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":370,"body":412,"description":1362,"extension":1363,"links":1364,"meta":1365,"navigation":1366,"path":371,"seo":1367,"stem":372,"__hash__":1368},"docs\u002Fdocs\u002F5.cli\u002F09.releases.md",{"type":413,"value":414,"toc":1357},"minimark",[415,419,422,468,471,495,517,613,616,642,645,669,672,691,698,712,715,737,740,759,762,783,786,805,810,821,827,848,858,884,888,895,898,1034,1039,1200,1203,1220,1223,1237,1241,1248,1271,1274,1295,1298,1324,1327,1330,1350,1353],[416,417,418],"p",{},"A release version is a signed, unchangeable set of artifacts from files, build\nruns, other releases or a query. Promotion and export refuse a version whose\nstored files no longer match its signed manifest.",[416,420,421],{},"Create a release version from a build run and a file:",[423,424,429],"pre",{"className":425,"code":426,"language":427,"meta":428,"style":428},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","relic release create app 1.4.0 --build app\u002F42 --file libs-local\u002Fdocs\u002Fguide.pdf\n","bash","",[430,431,432],"code",{"__ignoreMap":428},[433,434,437,441,445,448,451,455,459,462,465],"span",{"class":435,"line":436},"line",1,[433,438,440],{"class":439},"seIyd","relic",[433,442,444],{"class":443},"sasMN"," release",[433,446,447],{"class":443}," create",[433,449,450],{"class":443}," app",[433,452,454],{"class":453},"sIO_5"," 1.4.0",[433,456,458],{"class":457},"smky3"," --build",[433,460,461],{"class":443}," app\u002F42",[433,463,464],{"class":457}," --file",[433,466,467],{"class":443}," libs-local\u002Fdocs\u002Fguide.pdf\n",[416,469,470],{},"Create a release version from a sources file:",[423,472,474],{"className":425,"code":473,"language":427,"meta":428,"style":428},"relic release create app 1.5.0 -f release.yaml\n",[430,475,476],{"__ignoreMap":428},[433,477,478,480,482,484,486,489,492],{"class":435,"line":436},[433,479,440],{"class":439},[433,481,444],{"class":443},[433,483,447],{"class":443},[433,485,450],{"class":443},[433,487,488],{"class":453}," 1.5.0",[433,490,491],{"class":457}," -f",[433,493,494],{"class":443}," release.yaml\n",[416,496,497,498,501,502,505,506,505,509,512,513,516],{},"The file lists ",[430,499,500],{},"ReleaseSource"," messages (",[430,503,504],{},"files",", ",[430,507,508],{},"builds",[430,510,511],{},"releases"," or\n",[430,514,515],{},"query",") in YAML or JSON:",[423,518,522],{"className":519,"code":520,"language":521,"meta":428,"style":428},"language-yaml shiki shiki-themes material-theme-lighter github-light-default github-dark-default","- builds:\n    - {name: app, number: \"42\", dependencies: true}\n- files:\n    - {path: libs-local\u002Fdocs\u002Fguide.pdf}\n","yaml",[430,523,524,537,586,596],{"__ignoreMap":428},[433,525,526,530,534],{"class":435,"line":436},[433,527,529],{"class":528},"sWneD","-",[433,531,533],{"class":532},"smKOL"," builds",[433,535,536],{"class":528},":\n",[433,538,540,543,546,549,552,554,557,560,562,566,569,572,574,577,579,583],{"class":435,"line":539},2,[433,541,542],{"class":528},"    -",[433,544,545],{"class":528}," {",[433,547,548],{"class":532},"name",[433,550,551],{"class":528},":",[433,553,450],{"class":443},[433,555,556],{"class":528},",",[433,558,559],{"class":532}," number",[433,561,551],{"class":528},[433,563,565],{"class":564},"sX5mu"," \"",[433,567,568],{"class":443},"42",[433,570,571],{"class":564},"\"",[433,573,556],{"class":528},[433,575,576],{"class":532}," dependencies",[433,578,551],{"class":528},[433,580,582],{"class":581},"sH4kE"," true",[433,584,585],{"class":528},"}\n",[433,587,589,591,594],{"class":435,"line":588},3,[433,590,529],{"class":528},[433,592,593],{"class":532}," files",[433,595,536],{"class":528},[433,597,599,601,603,606,608,611],{"class":435,"line":598},4,[433,600,542],{"class":528},[433,602,545],{"class":528},[433,604,605],{"class":532},"path",[433,607,551],{"class":528},[433,609,610],{"class":443}," libs-local\u002Fdocs\u002Fguide.pdf",[433,612,585],{"class":528},[416,614,615],{},"Create a draft:",[423,617,619],{"className":425,"code":618,"language":427,"meta":428,"style":428},"relic release create app 1.6.0 --build app\u002F50 --draft\n",[430,620,621],{"__ignoreMap":428},[433,622,623,625,627,629,631,634,636,639],{"class":435,"line":436},[433,624,440],{"class":439},[433,626,444],{"class":443},[433,628,447],{"class":443},[433,630,450],{"class":443},[433,632,633],{"class":453}," 1.6.0",[433,635,458],{"class":457},[433,637,638],{"class":443}," app\u002F50",[433,640,641],{"class":457}," --draft\n",[416,643,644],{},"Add another release to the draft:",[423,646,648],{"className":425,"code":647,"language":427,"meta":428,"style":428},"relic release update app 1.6.0 --release base\u002F2.1\n",[430,649,650],{"__ignoreMap":428},[433,651,652,654,656,659,661,663,666],{"class":435,"line":436},[433,653,440],{"class":439},[433,655,444],{"class":443},[433,657,658],{"class":443}," update",[433,660,450],{"class":443},[433,662,633],{"class":453},[433,664,665],{"class":457}," --release",[433,667,668],{"class":443}," base\u002F2.1\n",[416,670,671],{},"Finalize the draft:",[423,673,675],{"className":425,"code":674,"language":427,"meta":428,"style":428},"relic release finalize app 1.6.0\n",[430,676,677],{"__ignoreMap":428},[433,678,679,681,683,686,688],{"class":435,"line":436},[433,680,440],{"class":439},[433,682,444],{"class":443},[433,684,685],{"class":443}," finalize",[433,687,450],{"class":443},[433,689,690],{"class":453}," 1.6.0\n",[416,692,693,694,697],{},"List the releases (",[430,695,696],{},"--project \"\""," for those outside projects):",[423,699,701],{"className":425,"code":700,"language":427,"meta":428,"style":428},"relic release list\n",[430,702,703],{"__ignoreMap":428},[433,704,705,707,709],{"class":435,"line":436},[433,706,440],{"class":439},[433,708,444],{"class":443},[433,710,711],{"class":443}," list\n",[416,713,714],{},"List one release's versions:",[423,716,718],{"className":425,"code":717,"language":427,"meta":428,"style":428},"relic release list app -o json\n",[430,719,720],{"__ignoreMap":428},[433,721,722,724,726,729,731,734],{"class":435,"line":436},[433,723,440],{"class":439},[433,725,444],{"class":443},[433,727,728],{"class":443}," list",[433,730,450],{"class":443},[433,732,733],{"class":457}," -o",[433,735,736],{"class":443}," json\n",[416,738,739],{},"Show one version and its artifacts:",[423,741,743],{"className":425,"code":742,"language":427,"meta":428,"style":428},"relic release get app 1.4.0\n",[430,744,745],{"__ignoreMap":428},[433,746,747,749,751,754,756],{"class":435,"line":436},[433,748,440],{"class":439},[433,750,444],{"class":443},[433,752,753],{"class":443}," get",[433,755,450],{"class":443},[433,757,758],{"class":453}," 1.4.0\n",[416,760,761],{},"Tag a version (no tag clears it):",[423,763,765],{"className":425,"code":764,"language":427,"meta":428,"style":428},"relic release tag app 1.4.0 stable\n",[430,766,767],{"__ignoreMap":428},[433,768,769,771,773,776,778,780],{"class":435,"line":436},[433,770,440],{"class":439},[433,772,444],{"class":443},[433,774,775],{"class":443}," tag",[433,777,450],{"class":443},[433,779,454],{"class":453},[433,781,782],{"class":443}," stable\n",[416,784,785],{},"Delete a version:",[423,787,789],{"className":425,"code":788,"language":427,"meta":428,"style":428},"relic release delete app 1.3.0\n",[430,790,791],{"__ignoreMap":428},[433,792,793,795,797,800,802],{"class":435,"line":436},[433,794,440],{"class":439},[433,796,444],{"class":443},[433,798,799],{"class":443}," delete",[433,801,450],{"class":443},[433,803,804],{"class":453}," 1.3.0\n",[806,807,809],"h2",{"id":808},"promoting","Promoting",[416,811,812,813,816,817,820],{},"A promotion copies each artifact into a local repository whose ",[430,814,815],{},"environments","\nsetting names the environment: the only one, else the first by name of the\nartifact's source format, else the first generic one. An artifact that fits\nnone is left out and named in the promotion's messages; when none fits, the\npromotion fails. ",[430,818,819],{},"--move"," is performed as a copy.",[416,822,823,824,551],{},"Promote a version to ",[430,825,826],{},"PROD",[423,828,830],{"className":425,"code":829,"language":427,"meta":428,"style":428},"relic release promote app 1.4.0 PROD\n",[430,831,832],{"__ignoreMap":428},[433,833,834,836,838,841,843,845],{"class":435,"line":436},[433,835,440],{"class":439},[433,837,444],{"class":443},[433,839,840],{"class":443}," promote",[433,842,450],{"class":443},[433,844,454],{"class":453},[433,846,847],{"class":443}," PROD\n",[416,849,823,850,853,854,857],{},[430,851,852],{},"QA",", into ",[430,855,856],{},"qa-generic"," only:",[423,859,861],{"className":425,"code":860,"language":427,"meta":428,"style":428},"relic release promote app 1.4.0 QA --include qa-generic\n",[430,862,863],{"__ignoreMap":428},[433,864,865,867,869,871,873,875,878,881],{"class":435,"line":436},[433,866,440],{"class":439},[433,868,444],{"class":443},[433,870,840],{"class":443},[433,872,450],{"class":443},[433,874,454],{"class":453},[433,876,877],{"class":443}," QA",[433,879,880],{"class":457}," --include",[433,882,883],{"class":443}," qa-generic\n",[806,885,887],{"id":886},"promotion-gates","Promotion gates",[416,889,890,891,894],{},"A promotion gate is a condition a version must meet to be promoted to an\nenvironment. Each decision is recorded as evidence of type\n",[430,892,893],{},"https:\u002F\u002Frelic.build\u002Fpromotion-gate\u002Fv1",".",[416,896,897],{},"The condition is a CEL expression over these variables:",[899,900,901,914],"table",{},[902,903,904],"thead",{},[905,906,907,911],"tr",{},[908,909,910],"th",{},"Variable",[908,912,913],{},"Holds",[915,916,917,958,968,992,1024],"tbody",{},[905,918,919,925],{},[920,921,922],"td",{},[430,923,924],{},"release",[920,926,927,505,930,505,932,505,935,505,938,941,942,945,946,505,949,505,951,954,955],{},[430,928,929],{},"project",[430,931,548],{},[430,933,934],{},"version",[430,936,937],{},"tag",[430,939,940],{},"createdBy",", and ",[430,943,944],{},"artifacts",", each with ",[430,947,948],{},"repository",[430,950,605],{},[430,952,953],{},"sha256"," and ",[430,956,957],{},"size",[905,959,960,965],{},[920,961,962],{},[430,963,964],{},"environment",[920,966,967],{},"the target environment",[905,969,970,975],{},[920,971,972],{},[430,973,974],{},"evidence",[920,976,977,978,505,981,505,984,505,987,954,990],{},"the version's evidence, each with ",[430,979,980],{},"predicateType",[430,982,983],{},"predicate",[430,985,986],{},"verified",[430,988,989],{},"keyAlias",[430,991,940],{},[905,993,994,999],{},[920,995,996],{},[430,997,998],{},"scan",[920,1000,1001,1002,505,1005,505,1008,505,1011,505,1014,505,1017,941,1020,1023],{},"finding counts: ",[430,1003,1004],{},"critical",[430,1006,1007],{},"high",[430,1009,1010],{},"medium",[430,1012,1013],{},"low",[430,1015,1016],{},"unknown",[430,1018,1019],{},"malicious",[430,1021,1022],{},"unscanned"," artifacts",[905,1025,1026,1031],{},[920,1027,1028],{},[430,1029,1030],{},"signed",[920,1032,1033],{},"whether the manifest verifies with Relic's release key and the stored artifacts still match it",[416,1035,1036,1037,551],{},"Two gates for ",[430,1038,826],{},[423,1040,1042],{"className":519,"code":1041,"language":521,"meta":428,"style":428},"apiVersion: relic.build\u002Fv1\nkind: PromotionGate\nmetadata: {name: prod-clean}\nspec:\n  environment: PROD\n  condition: signed && scan.critical == 0 && scan.malicious == 0 && scan.unscanned == 0\n  description: no critical or malicious findings\n---\napiVersion: relic.build\u002Fv1\nkind: PromotionGate\nmetadata: {name: prod-provenance}\nspec:\n  environment: PROD\n  condition: evidence.exists(e, e.predicateType == \"https:\u002F\u002Fslsa.dev\u002Fprovenance\u002Fv1\" && e.verified)\n  description: verified build provenance\n",[430,1043,1044,1054,1064,1082,1089,1099,1110,1121,1128,1137,1146,1164,1171,1180,1190],{"__ignoreMap":428},[433,1045,1046,1049,1051],{"class":435,"line":436},[433,1047,1048],{"class":532},"apiVersion",[433,1050,551],{"class":528},[433,1052,1053],{"class":443}," relic.build\u002Fv1\n",[433,1055,1056,1059,1061],{"class":435,"line":539},[433,1057,1058],{"class":532},"kind",[433,1060,551],{"class":528},[433,1062,1063],{"class":443}," PromotionGate\n",[433,1065,1066,1069,1071,1073,1075,1077,1080],{"class":435,"line":588},[433,1067,1068],{"class":532},"metadata",[433,1070,551],{"class":528},[433,1072,545],{"class":528},[433,1074,548],{"class":532},[433,1076,551],{"class":528},[433,1078,1079],{"class":443}," prod-clean",[433,1081,585],{"class":528},[433,1083,1084,1087],{"class":435,"line":598},[433,1085,1086],{"class":532},"spec",[433,1088,536],{"class":528},[433,1090,1092,1095,1097],{"class":435,"line":1091},5,[433,1093,1094],{"class":532},"  environment",[433,1096,551],{"class":528},[433,1098,847],{"class":443},[433,1100,1102,1105,1107],{"class":435,"line":1101},6,[433,1103,1104],{"class":532},"  condition",[433,1106,551],{"class":528},[433,1108,1109],{"class":443}," signed && scan.critical == 0 && scan.malicious == 0 && scan.unscanned == 0\n",[433,1111,1113,1116,1118],{"class":435,"line":1112},7,[433,1114,1115],{"class":532},"  description",[433,1117,551],{"class":528},[433,1119,1120],{"class":443}," no critical or malicious findings\n",[433,1122,1124],{"class":435,"line":1123},8,[433,1125,1127],{"class":1126},"sHdwX","---\n",[433,1129,1131,1133,1135],{"class":435,"line":1130},9,[433,1132,1048],{"class":532},[433,1134,551],{"class":528},[433,1136,1053],{"class":443},[433,1138,1140,1142,1144],{"class":435,"line":1139},10,[433,1141,1058],{"class":532},[433,1143,551],{"class":528},[433,1145,1063],{"class":443},[433,1147,1149,1151,1153,1155,1157,1159,1162],{"class":435,"line":1148},11,[433,1150,1068],{"class":532},[433,1152,551],{"class":528},[433,1154,545],{"class":528},[433,1156,548],{"class":532},[433,1158,551],{"class":528},[433,1160,1161],{"class":443}," prod-provenance",[433,1163,585],{"class":528},[433,1165,1167,1169],{"class":435,"line":1166},12,[433,1168,1086],{"class":532},[433,1170,536],{"class":528},[433,1172,1174,1176,1178],{"class":435,"line":1173},13,[433,1175,1094],{"class":532},[433,1177,551],{"class":528},[433,1179,847],{"class":443},[433,1181,1183,1185,1187],{"class":435,"line":1182},14,[433,1184,1104],{"class":532},[433,1186,551],{"class":528},[433,1188,1189],{"class":443}," evidence.exists(e, e.predicateType == \"https:\u002F\u002Fslsa.dev\u002Fprovenance\u002Fv1\" && e.verified)\n",[433,1191,1193,1195,1197],{"class":435,"line":1192},15,[433,1194,1115],{"class":532},[433,1196,551],{"class":528},[433,1198,1199],{"class":443}," verified build provenance\n",[416,1201,1202],{},"Apply the gates:",[423,1204,1206],{"className":425,"code":1205,"language":427,"meta":428,"style":428},"relic apply -f gates.yaml\n",[430,1207,1208],{"__ignoreMap":428},[433,1209,1210,1212,1215,1217],{"class":435,"line":436},[433,1211,440],{"class":439},[433,1213,1214],{"class":443}," apply",[433,1216,491],{"class":457},[433,1218,1219],{"class":443}," gates.yaml\n",[416,1221,1222],{},"List the gates:",[423,1224,1226],{"className":425,"code":1225,"language":427,"meta":428,"style":428},"relic get promotiongates\n",[430,1227,1228],{"__ignoreMap":428},[433,1229,1230,1232,1234],{"class":435,"line":436},[433,1231,440],{"class":439},[433,1233,753],{"class":443},[433,1235,1236],{"class":443}," promotiongates\n",[806,1238,1240],{"id":1239},"moving-releases-between-servers","Moving releases between servers",[416,1242,1243,1244,1247],{},"Export a version with its manifest, signed by the ",[430,1245,1246],{},"release-bundles"," key, and\nprint the key's fingerprint:",[423,1249,1251],{"className":425,"code":1250,"language":427,"meta":428,"style":428},"relic release export app 1.4.0 --file app-1.4.0.zip\n",[430,1252,1253],{"__ignoreMap":428},[433,1254,1255,1257,1259,1262,1264,1266,1268],{"class":435,"line":436},[433,1256,440],{"class":439},[433,1258,444],{"class":443},[433,1260,1261],{"class":443}," export",[433,1263,450],{"class":443},[433,1265,454],{"class":453},[433,1267,464],{"class":457},[433,1269,1270],{"class":443}," app-1.4.0.zip\n",[416,1272,1273],{},"A server imports only files signed by its own key or a trusted key. Save the\nexporting server's public key:",[423,1275,1277],{"className":425,"code":1276,"language":427,"meta":428,"style":428},"relic release public-key >build-server.pem\n",[430,1278,1279],{"__ignoreMap":428},[433,1280,1281,1283,1285,1288,1292],{"class":435,"line":436},[433,1282,440],{"class":439},[433,1284,444],{"class":443},[433,1286,1287],{"class":443}," public-key",[433,1289,1291],{"class":1290},"s8eFF"," >",[433,1293,1294],{"class":443},"build-server.pem\n",[416,1296,1297],{},"On the importing server, trust the key under a name of your choice\n(administrators). Check that the fingerprint it prints matches export's:",[423,1299,1301],{"className":425,"code":1300,"language":427,"meta":428,"style":428},"relic --context airgap release trust-key build-server build-server.pem\n",[430,1302,1303],{"__ignoreMap":428},[433,1304,1305,1307,1310,1313,1315,1318,1321],{"class":435,"line":436},[433,1306,440],{"class":439},[433,1308,1309],{"class":457}," --context",[433,1311,1312],{"class":443}," airgap",[433,1314,444],{"class":443},[433,1316,1317],{"class":443}," trust-key",[433,1319,1320],{"class":443}," build-server",[433,1322,1323],{"class":443}," build-server.pem\n",[416,1325,1326],{},"Trusted keys also verify evidence.",[416,1328,1329],{},"Import the file (administrators):",[423,1331,1333],{"className":425,"code":1332,"language":427,"meta":428,"style":428},"relic --context airgap release import app-1.4.0.zip\n",[430,1334,1335],{"__ignoreMap":428},[433,1336,1337,1339,1341,1343,1345,1348],{"class":435,"line":436},[433,1338,440],{"class":439},[433,1340,1309],{"class":457},[433,1342,1312],{"class":443},[433,1344,444],{"class":443},[433,1346,1347],{"class":443}," import",[433,1349,1270],{"class":443},[416,1351,1352],{},"Import refuses an unsigned manifest, a signature that does not verify, an\nuntrusted key (the error names its fingerprint), and contents that differ from\nthe manifest.",[1354,1355,1356],"style",{},"html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sIO_5, html code.shiki .sIO_5{--shiki-light:#F76D47;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sWneD, html code.shiki .sWneD{--shiki-light:#39ADB5;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .smKOL, html code.shiki .smKOL{--shiki-light:#E53935;--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .sX5mu, html code.shiki .sX5mu{--shiki-light:#39ADB5;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sH4kE, html code.shiki .sH4kE{--shiki-light:#FF5370;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sHdwX, html code.shiki .sHdwX{--shiki-light:#E2931D;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .s8eFF, html code.shiki .s8eFF{--shiki-light:#39ADB5;--shiki-default:#CF222E;--shiki-dark:#FF7B72}",{"title":428,"searchDepth":539,"depth":539,"links":1358},[1359,1360,1361],{"id":808,"depth":539,"text":809},{"id":886,"depth":539,"text":887},{"id":1239,"depth":539,"text":1240},"Create, promote, tag, export and import releases.","md",null,{},true,{"title":370,"description":1362},"rg0XoZhJ7V1xuR0MlsFRlgj48lU9bT_H49EcJCnKSKA",[1370,1372],{"title":366,"path":367,"stem":368,"description":1371,"children":-1},"Scan files, images, SBOMs and project dependencies, and manage decisions, quarantine and waivers.",{"title":374,"path":375,"stem":376,"description":1373,"children":-1},"Sign statements about files, store them as evidence and verify them.",1793857342640]