assemble_crate(name, authors, categories, crate_features, description, documentation, homepage, keywords, license, license_file, readme_file, repository, target, universe_manifests, version_file, workspace_refs)
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
authors | Project authors | List of strings | optional | [] |
categories | Project categories | List of strings | optional | [] |
crate_features | Available features in the crate, in format similar to the cargo features format. | Dictionary: String -> List of strings | optional | {} |
description | The description is a short blurb about the package. crates.io will display this with your package. This should be plain text (not Markdown). https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field | String | required | |
documentation | Link to documentation of the project | String | optional | "" |
homepage | Link to homepage of the project | String | required | |
keywords | The keywords field is an array of strings that describe this package. This can help when searching for the package on a registry, and you may choose any words that would help someone find this crate. Note: crates.io has a maximum of 5 keywords. Each keyword must be ASCII text, start with a letter, and only contain letters, numbers, _ or -, and have at most 20 characters. https://doc.rust-lang.org/cargo/reference/manifest.html#the-keywords-field |
List of strings | optional | [] |
license | The license field contains the name of the software license that the package is released under. https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields | String | required | |
license_file | License file for the crate. | Label | optional | None |
readme_file | README of the project | Label | optional | None |
repository | Repository of the project | String | required | |
target | rust_library label to be included in the package |
Label | required | |
universe_manifests | The Cargo manifests used by crates_universe to generate Bazel targets for crates.io dependencies. These manifests serve as the source of truth for emitting dependency configuration in the assembled crate, such as explicitly requested features and the exact version requirement. |
List of labels | optional | [] |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
workspace_refs | JSON file describing dependencies to other Bazel workspaces | Label | optional | None |
assemble_maven(name, developers, license, platform_overrides, project_description, project_name, project_url, scm_url, target, version_file, version_overrides, workspace_refs)
Assemble Java package for subsequent deployment to Maven repo
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
developers | Project developers to fill into pom.xml | Dictionary: String -> List of strings | optional | {} |
license | Project license to fill into pom.xml | String | optional | "apache" |
platform_overrides | Per-platform overrides for a dependency. Expects a dict of bazel labels to a JSON-encoded list of maven coordinates. Ex.: assemble_maven( ... platform_overrides = { ":bazel-dependency": json.encode([ "org.company:dependency-windows-x86_64:{pom_version}", "org.company:dependency-linux-aarch64:{pom_version}", "org.company:dependency-linux-x86_64:{pom_version}", "org.company:dependency-macosx-aarch64:{pom_version}", "org.company:dependency-macosx-x86_64:{pom_version}", ]) } ) | Dictionary: Label -> String | optional | {} |
project_description | Project description to fill into pom.xml | String | optional | "PROJECT_DESCRIPTION" |
project_name | Project name to fill into pom.xml | String | optional | "PROJECT_NAME" |
project_url | Project URL to fill into pom.xml | String | optional | "PROJECT_URL" |
scm_url | Project source control URL to fill into pom.xml | String | optional | "PROJECT_URL" |
target | Java target for subsequent deployment | Label | required | |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
version_overrides | Dictionary of maven artifact : version to pin artifact versions to | Dictionary: String -> String | optional | {} |
workspace_refs | JSON file describing dependencies to other Bazel workspaces | Label | optional | None |
assemble_npm(name, target, version_file)
Assemble npm_package
target for further deployment. Currently does not support remote execution (RBE).
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
target | npm_library label to be included in the package. |
Label | required | |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0'. | Label | optional | None |
assemble_pip(name, author, author_email, classifiers, description, keywords, license, long_description_file, package_name, python_requires, requirements_file, suffix, target, url, version_file)
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
author | Details about the author | String | required | |
author_email | The email for the author | String | required | |
classifiers | A list of strings, containing Python package classifiers | List of strings | required | |
description | A string with the short description of the package | String | required | |
keywords | A list of strings, containing keywords | List of strings | required | |
license | The type of license to use | String | required | |
long_description_file | A label with the long description of the package. Usually a README or README.rst file | Label | required | |
package_name | A string with Python pip package name | String | required | |
python_requires | If your project only runs on certain Python versions, setting the python_requires argument to the appropriate PEP 440 version specifier string will prevent pip from installing the project on other Python versions. | String | optional | ">0" |
requirements_file | A file with the list of required packages for this one | Label | required | |
suffix | A suffix that has to be removed from the filenames | String | optional | "" |
target | py_library label to be included in the package |
Label | required | |
url | A homepage for the project | String | required | |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
assemble_versioned(name, targets, version_file)
Version multiple archives for subsequent simultaneous deployment
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
targets | Archives to version and put into output archive | List of labels | optional | [] |
version_file | File containing version string | Label | optional | None |
checksum(name, archive)
Computes SHA256 checksum of file
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
archive | Archive to compute checksum of | Label | required |
deploy_apt(name, release, snapshot, target)
Deploy package built with assemble_apt
to APT repository.
Select deployment to `snapshot` or `release` repository with `bazel run //:some-deploy-apt -- [snapshot|release]
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
release | Release repository to deploy apt artifact to | String | required | |
snapshot | Snapshot repository to deploy apt artifact to | String | required | |
target | assemble_apt label to deploy | Label | optional | None |
deploy_brew(name, file_substitutions, formula, release, snapshot, type, version_file)
Deploy Homebrew (Caskroom) formula to Homebrew tap.
Select deployment to `snapshot` or `release` repository with `bazel run //:some-deploy-brew -- [snapshot|release]
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
file_substitutions | Substitute file contents into the formula. Key: file to read the substitution from. Value: placeholder in the formula template to substitute. | Dictionary: Label -> String | optional | {} |
formula | The brew formula definition | Label | required | |
release | Release repository to deploy brew artifact to | String | required | |
snapshot | Snapshot repository to deploy brew artifact to | String | required | |
type | Type of deployment (Homebrew/Caskroom). Cask is generally used for graphic applications | String | optional | "brew" |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
deploy_crate(name, release, snapshot, target)
Deploy assemble_crate
target into Crate repo
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
release | Release repository to release Crate artifact to | String | required | |
snapshot | Snapshot repository to release Crate artifact to | String | required | |
target | assemble_crate target to deploy | Label | required |
deploy_github(name, archive, draft, organisation, release_description, repository, title, title_append_version, version_file)
Deploy assemble_versioned
target to GitHub Releases
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
archive | assemble_versioned label to be deployed. |
Label | optional | None |
draft | Creates an unpublished / draft release when set to True. Defaults to True. | Boolean | optional | True |
organisation | Github organisation to deploy to | String | required | |
release_description | Description of GitHub release | Label | optional | None |
repository | Github repository to deploy to within organisation | String | required | |
title | Title of GitHub release | String | optional | "" |
title_append_version | Append version to GitHub release title | Boolean | optional | False |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
deploy_npm(name, release, snapshot, target)
Deploy `assemble_npm` target into npm registry using token authentication.
Select deployment to `snapshot` or `release` repository with `bazel run //:some-deploy-npm -- [snapshot|release]
## How to generate an auth token
### Using the command line (`npm adduser`)
1. Run `npm adduser <repo_url>` (example: `npm adduser --registry=https://repo.vaticle.com/repository/npm-private`)
2. When prompted, provide login credentials to sign in to the user account that is used in your CI and has permissions to publish the package
3. If successful, a line will be added to your `.npmrc` file (`$HOME/.npmrc` on Unix) which looks like: `//repo.vaticle.com/repository/npm-snapshot/:_authToken=NpmToken.00000000-0000-0000-0000-000000000000`. The token is the value of `_authToken`, in this case `NpmToken.00000000-0000-0000-0000-000000000000`.
4. Save the auth token somewhere safe and then delete it from your `.npmrc` file
### Using a UI
Some remote repository managers (e.g. the `npm` registry, https://npmjs.com) provide a UI to create auth tokens.
#### `npm` registry (`npmjs.com`)
1. Sign in to the user account at https://npmjs.com that is used in your CI and has permissions to publish the package
2. Navigate to the account's "Access Tokens", generate a new one and store it somewhere safe
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
release | Release repository to deploy npm artifact to. | String | required | |
snapshot | Snapshot repository to deploy npm artifact to. | String | required | |
target | assemble_npm target to be included in the package. |
Label | required |
deploy_packer(name, overwrite, target)
Execute Packer to perform deployment
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
overwrite | Overwrite already-existing image | Boolean | optional | False |
target | assemble_packer label to be deployed. |
Label | optional | None |
deploy_rpm(name, release, snapshot, target)
Deploy package built with assemble_rpm
to RPM repository.
Select deployment to `snapshot` or `release` repository with `bazel run //:some-deploy-rpm -- [snapshot|release]
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
release | Remote repository to deploy rpm release to | String | required | |
snapshot | Remote repository to deploy rpm snapshot to | String | required | |
target | assemble_rpm target to deploy |
Label | optional | None |
generate_json_config(name, substitutions, template)
Fills in JSON template with provided values
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
substitutions | Values to fill in | Dictionary: String -> String | optional | {} |
template | JSON template to fill in values | Label | optional | None |
java_deps(name, java_deps_root, java_deps_root_overrides, maven_name, target, version_file)
Packs Java library alongside with its dependencies into archive
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
java_deps_root | Folder inside archive to put JARs into | String | optional | "" |
java_deps_root_overrides | JARs with filenames matching the given patterns will be placed into the specified folders inside the archive, instead of the default folder. Patterns can be either the full name of a JAR, or a prefix followed by a '*'. | Dictionary: String -> String | optional | {} |
maven_name | Name JAR files inside archive based on Maven coordinates | Boolean | optional | False |
target | Java target to pack into archive | Label | required | |
version_file | File containing version string. Alternatively, pass --define version=VERSION to Bazel invocation. Not specifying version at all defaults to '0.0.0' | Label | optional | None |
tgz2zip(name, output_filename, tgz)
Converts .tar.gz into .zip
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
output_filename | Resulting filename | String | required | |
tgz | Input .tar.gz archive | Label | required |
JarToMavenCoordinatesMapping(filename, maven_coordinates)
FIELDS
Name | Description |
---|---|
filename | jar filename |
maven_coordinates | Maven coordinates of the jar |
MavenDeploymentInfo(jar, srcjar, pom)
FIELDS
Name | Description |
---|---|
jar | JAR file to deploy |
srcjar | JAR file with sources |
pom | Accompanying pom.xml file |
TransitiveJarToMavenCoordinatesMapping(mapping)
FIELDS
Name | Description |
---|---|
mapping | maps jar filename to coordinates |
assemble_apt(name, package_name, maintainer, description, version_file, installation_dir, workspace_refs, archives, empty_dirs, empty_dirs_permission, files, depends, symlinks, permissions, architecture, target_compatible_with)
Assemble package for installation with APT
PARAMETERS
Name | Description | Default Value |
---|---|---|
name | A unique name for this target. | none |
package_name | Package name for built .deb package https://www.debian.org/doc/debian-policy/ch-controlfields#package | none |
maintainer | The package maintainer's name and email address. The name must come first, then the email address inside angle brackets <> (in RFC822 format) | none |
description | description of the built package https://www.debian.org/doc/debian-policy/ch-controlfields#description | none |
version_file | File containing version number of a package. Alternatively, pass --define version=VERSION to Bazel invocation. Specifying commit SHA will result in prepending '0.0.0' to it to comply with Debian rules. Not specifying version at all defaults to '0.0.0' https://www.debian.org/doc/debian-policy/ch-controlfields#version | None |
installation_dir | directory into which .deb package is unpacked at installation | None |
workspace_refs | JSON file with other Bazel workspace references | None |
archives | Bazel labels of archives that go into .deb package | [] |
empty_dirs | list of empty directories created at package installation | [] |
empty_dirs_permission | UNIXy permission for the empty directories to be created | "0777" |
files | mapping between Bazel labels of archives that go into .deb package and their resulting location on .deb package installation | {} |
depends | list of Debian packages this package depends on https://www.debian.org/doc/debian-policy/ch-relationships.htm | [] |
symlinks | mapping between source and target of symbolic links created at installation | {} |
permissions | mapping between paths and UNIXy permissions | {} |
architecture | package architecture (default option: 'all', common other options: 'amd64', 'arm64') | "all" |
target_compatible_with | - |
[] |
assemble_aws(name, ami_name, install, region, files)
Assemble files for AWS deployment
PARAMETERS
assemble_azure(name, image_name, resource_group_name, install, image_publisher, image_offer, image_sku, disk_size_gb, files)
Assemble files for Azure deployment
PARAMETERS
assemble_gcp(name, project_id, install, zone, image_name, image_family, files, image_licenses, disable_default_service_account, source_image_family)
Assemble files for GCP deployment
PARAMETERS
assemble_packer(name, config, files)
Assemble files for HashiCorp Packer deployment
PARAMETERS
Name | Description | Default Value |
---|---|---|
name | A unique name for this target. | none |
config | Packer JSON config | none |
files | Files to include into deployment | {} |
assemble_rpm(name, package_name, spec_file, version_file, workspace_refs, installation_dir, archives, empty_dirs, files, permissions, symlinks, tags)
Assemble package for installation with RPM
PARAMETERS
assemble_targz(name, output_filename, targets, additional_files, empty_directories, permissions, append_version, visibility, tags, target_compatible_with)
Assemble distribution archive (.tar.gz)
PARAMETERS
assemble_zip(name, output_filename, targets, additional_files, empty_directories, permissions, append_version, visibility, tags, target_compatible_with)
Assemble distribution archive (.zip)
PARAMETERS
deploy_maven(name, target, snapshot, release, kwargs)
PARAMETERS
Name | Description | Default Value |
---|---|---|
name | - |
none |
target | - |
none |
snapshot | - |
none |
release | - |
none |
kwargs | - |
none |
deploy_pip(name, target, snapshot, release, suffix, distribution_tag)
PARAMETERS
Name | Description | Default Value |
---|---|---|
name | - |
none |
target | - |
none |
snapshot | - |
none |
release | - |
none |
suffix | - |
"" |
distribution_tag | - |
"py3-none-any" |