<commit_before>---
title: Uploading Releases
---

(See [What is a Release?](release.html) for an introduction to releases.)

As described earlier, each deployment references one or many releases on the Director. Before the Director can form a deployment, all referenced releases must be uploaded to the Director.

## <a id='find'></a> Finding Releases

Releases are distributed in two ways: as a release tarball or through a source code repository. The [Releases section of bosh.io](//bosh.io/releases) provides a good list of available releases and their tarballs.

Here are a few popular releases:

- [cf-release](//bosh.io/releases/github.com/cloudfoundry/cf-release) provides CloudFoundry
- [cf-mysql-release](//bosh.io/releases/github.com/cloudfoundry/cf-mysql-release) provides highly-available MySQL
- [cf-rabbitmq-release](//bosh.io/releases/github.com/pivotal-cf/cf-rabbitmq-release) provides RabbitMQ

---
## <a id='upload'></a> Uploading to the Director

Assuming that the CLI is already targeted at the Director, the CLI provides a single command to upload a release.

- If you have a URL to a release tarball (for example a URL provided by bosh.io):

	<pre class="terminal">
	$ bosh upload release https://bosh.io/d/github.com/cloudfoundry/cf-release --skip-if-exists
	</pre>

	Alternatively, if you have a release tarball on your local machine:

	<pre class="terminal">
	$ bosh upload release ~/Downloads/redis-12.tgz --skip-if-exists
	</pre>

- If you cloned a Git repository:

    Note that all release repositories have a `releases/` folder that contains release YAML files. These files have all the required information on how to assemble a specific version of a release (provided that the release maintainers produce and commit that version to the repository). You can use the YAML files to either directly upload a release, or to create a release tarball locally and then upload it.

    <pre class="terminal">
	$ cd ~/workspace/redis-boshrelease

	$ bosh upload release releases/redis/redis-12.yml --skip-if-exists
	</pre>

	Alternatively, to build a release tarball locally from a release YAML file:

	<pre class="terminal">
	$ cd ~/workspace/redis-boshrelease

	$ bosh create release releases/redis/redis-12.yml --with-tarball

	$ bosh upload release releases/redis/redis-12.tgz
	</pre>

Once the command succeeds, you can view all uploaded releases in the Director:
<commit_msg>change 'information on' to 'information about'<commit_after>---
title: Uploading Releases
---

(See [What is a Release?](release.html) for an introduction to releases.)

As described earlier, each deployment references one or many releases on the Director. Before the Director can form a deployment, all referenced releases must be uploaded to the Director.

## <a id='find'></a> Finding Releases

Releases are distributed in two ways: as a release tarball or through a source code repository. The [Releases section of bosh.io](//bosh.io/releases) provides a good list of available releases and their tarballs.

Here are a few popular releases:

- [cf-release](//bosh.io/releases/github.com/cloudfoundry/cf-release) provides CloudFoundry
- [cf-mysql-release](//bosh.io/releases/github.com/cloudfoundry/cf-mysql-release) provides highly-available MySQL
- [cf-rabbitmq-release](//bosh.io/releases/github.com/pivotal-cf/cf-rabbitmq-release) provides RabbitMQ

---
## <a id='upload'></a> Uploading to the Director

Assuming that the CLI is already targeted at the Director, the CLI provides a single command to upload a release.

- If you have a URL to a release tarball (for example a URL provided by bosh.io):

	<pre class="terminal">
	$ bosh upload release https://bosh.io/d/github.com/cloudfoundry/cf-release --skip-if-exists
	</pre>

	Alternatively, if you have a release tarball on your local machine:

	<pre class="terminal">
	$ bosh upload release ~/Downloads/redis-12.tgz --skip-if-exists
	</pre>

- If you cloned a Git repository:

    Note that all release repositories have a `releases/` folder that contains release YAML files. These files have all the required information about how to assemble a specific version of a release (provided that the release maintainers produce and commit that version to the repository). You can use the YAML files to either directly upload a release, or to create a release tarball locally and then upload it.

    <pre class="terminal">
	$ cd ~/workspace/redis-boshrelease

	$ bosh upload release releases/redis/redis-12.yml --skip-if-exists
	</pre>

	Alternatively, to build a release tarball locally from a release YAML file:

	<pre class="terminal">
	$ cd ~/workspace/redis-boshrelease

	$ bosh create release releases/redis/redis-12.yml --with-tarball

	$ bosh upload release releases/redis/redis-12.tgz
	</pre>

Once the command succeeds, you can view all uploaded releases in the Director:

{'fraction_non_alphanumeric': 0.09297520661157024, 'fraction_numerical': 0.003305785123966942, 'mean_word_length': 4.172008547008547, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2989786', 'n_tokens_mistral': 1478, 'n_tokens_neox': 1357, 'n_words': 575}