cipd/

directory
v0.0.0-...-678bb0e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2017 License: Apache-2.0

README

CIPD (Chrome Infrastructure Package Deployment)

CIPD is package deployment infrastructure. It consists of a package registry and a [CLI client][cipd client] to create/upload/download/install packages.

A CIPD package has a package name (e.g. infra/tools/foo) and a list of content-addressed instances (e.g. bec8e88201949be06b06174178c2f62b81e4008e), where slashes in package names form a hierarchy of packages and an instance is a ZIP file with package file contents.

CIPD is different from apt-get, brew, nuget, pip, npm, etc is that it is not tied to a specific OS or language. It is achieved by keeping it simple.

The package registry is implemented in Python and the source code is in infra.git repository.

Versions

A package instance can be referenced by a tuple (package name, version), for example when installing a package. A version can be one of

  • an instance id which is a hash of the instance file contents, e.g. "bec8e88201949be06b06174178c2f62b81e4008e"
  • a tag, e.g. "git_revision:deadbeef", if it is unique among all instances of the package. Read more about tags below.
  • a ref, e.g. "latest", see below.
Tags

A package instance can be marked with tags, where a tag is a colon-separated key-value pair, e.g. "git_revision:deadbeef". If some tag points to only one instance, such tag can be used as version identifier.

Refs

A package can have git-like refs, where a ref of a package points to one of the instances of the package by id. For example, chrome-infra continuous builders always update "latest" ref of a package to the instance that they upload.

Platforms

If a package is platform-specific, the package name should have /<os>-<arch> suffix where os can be linux, mac or windows and arch can be 386, amd64 or armv6l. For example, infra/tools/cipd/linux-amd64. See [the ensure package docs][client/cipd/ensure/doc.go] for os and arch values.

Some [cipd client] subcomands accept a package name "directory" that ends with slash, e.g. "infra/tools/cipd/", and apply a change to all packages in that directory (non-recursively).

Access control

A package directory can have an ACL that applies to packages in that directory and inherited by subdirectories. ACLs can be read/controlled by the [cipd client].

Directories

Path Synopsis
client
cipd
Package cipd implements client side of Chrome Infra Package Deployer.
Package cipd implements client side of Chrome Infra Package Deployer.
cipd/common
Package common defines structures and functions used by cipd/* packages.
Package common defines structures and functions used by cipd/* packages.
cipd/ensure
Package ensure contains methods and types for interacting with the 'ensure file format'.
Package ensure contains methods and types for interacting with the 'ensure file format'.
cipd/internal/messages
Package messages is a generated protocol buffer package.
Package messages is a generated protocol buffer package.
cli
Package cli implements command line interface for CIPD client.
Package cli implements command line interface for CIPD client.
cmd/cipd
Package main contains CIPD CLI implementation that uses Chrome Infrastructure defaults.
Package main contains CIPD CLI implementation that uses Chrome Infrastructure defaults.
cmd/cipd2isolate
Package main contains a tool to upload cipd packages to an isolate server.
Package main contains a tool to upload cipd packages to an isolate server.
Package version provides a way for CIPD packaged Go binaries to discover their current package instance ID.
Package version provides a way for CIPD packaged Go binaries to discover their current package instance ID.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL