{"id":18045256,"url":"https://github.com/dpb587/bosh-release-resource","last_synced_at":"2025-04-05T03:41:46.210Z","repository":{"id":64304790,"uuid":"134403223","full_name":"dpb587/bosh-release-resource","owner":"dpb587","description":"A Concourse resource for working with versions of a BOSH release.","archived":false,"fork":false,"pushed_at":"2020-01-11T03:06:49.000Z","size":2036,"stargazers_count":3,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-10T11:48:26.956Z","etag":null,"topics":["bosh-release","concourse-resource"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dpb587.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-22T11:07:53.000Z","updated_at":"2023-03-22T18:23:28.000Z","dependencies_parsed_at":"2023-01-15T10:15:20.112Z","dependency_job_id":null,"html_url":"https://github.com/dpb587/bosh-release-resource","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpb587%2Fbosh-release-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpb587%2Fbosh-release-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpb587%2Fbosh-release-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dpb587%2Fbosh-release-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dpb587","download_url":"https://codeload.github.com/dpb587/bosh-release-resource/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284914,"owners_count":20913691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bosh-release","concourse-resource"],"created_at":"2024-10-30T18:12:39.224Z","updated_at":"2025-04-05T03:41:46.188Z","avatar_url":"https://github.com/dpb587.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bosh-release-resource\n\n[![license](https://img.shields.io/badge/license-mit-blue.svg?longCache=true)](LICENSE) [![build](https://travis-ci.org/dpb587/bosh-release-resource.svg)](https://travis-ci.org/dpb587/bosh-release-resource) [![dockerhub](https://img.shields.io/badge/dockerhub-latest-green.svg?longCache=true)](https://hub.docker.com/r/dpb587/bosh-release-resource/)\n\nA [Concourse](https://concourse-ci.org/) resource for working with versions of a [BOSH](https://bosh.io/) release. Specifically focused on support for non-[bosh.io releases](https://bosh.io/releases), private release repositories, version constraints, dev releases, and `finalize-release` tasks.\n\n\n## Source Configuration\n\n * **`uri`** - location of the BOSH release git repository\n * `branch` - the branch to use (optional unless using `out`; uses default remote branch)\n * `dev_releases` - set to `true` to create dev releases from every commit\n * `name` - a specific release name to use (default is `name` from `config/final.yml`)\n * `private_config` - a hash of settings which will be serialized to `config/private.yml` for `in`/`out`\n * `private_key` - a SSH private key when using private git repositories\n * `version` - a [supported](https://github.com/Masterminds/semver#basic-comparisons) version constraint (e.g. `2.x`, `\u003e= 2.3.4`, `\u003e2.3.2, \u003c3`)\n\n\n## Operations\n\n### `check`\n\nGet the latest versions of the release.\n\nWhen `dev_releases` is enabled, the version will be in the format of `((version))-dev.((commit-date-utc))+commit.((short-commit-hash))`. The version number is an incremented patch from the latest final version (as of the referenced commit), followed by the commit-based, pre-release data. For example, if the last final release was `5.0.0` and the last commit was made on `2018-06-13` in `dd7c33e1d`... the version would be `5.0.1-dev.20180613T040837Z.commit.dd7c33e1d`).\n\nVersion:\n\n * `version` - release version\n\n\n### `in`\n\nGet a specific version of the release.\n\nParameters:\n\n * `tarball` - create a release tarball (default `true`)\n * `tarball_name` - file name to use for the tarball (default `{{.Name}}-{{.Version}}.tgz`)\n\nResource:\n\n * `name` - release name\n * `release.tgz` - source release tarball\n * `version` - release version\n\nMetadata:\n\n * `bosh` - version of `bosh` CLI used to create the tarball\n * `time` - timestamp when the tarball was created\n\n\n### `out`\n\nCreate a new version of the release from an existing tarball or repository checkout.\n\nParameters:\n\n * **`repository`** - path to a repository checkout from which to create a release (one of `repository` or `tarball` must be configured)\n * **`tarball`** - path to an existing release tarball to finalize (one of `repository` or `tarball` must be configured)\n * **`version`** - path to the file with contents of a specific version to use\n * `commit_file` - path to the file with contents of a commit message (default message `Version {version}`)\n * `author_name` - full name to use as commit author (default `CI Bot`)\n * `author_email` - email address to use as commit author (default `ci@localhost`)\n * `rebase` - enable automatic rebasing if there are conflicts on push (default `false`)\n * `skip_tag` - disable creating an annotated tag pointing to the commit the release tarball was created with (default `false`)\n\nMetadata:\n\n * `bosh` - version of `bosh` CLI used to finalize the release\n * `commit` - commit reference where the new version was finalized\n\n\n### `create-dev-release`\n\nThe `create-dev-release` script may be used to create a release tarball from a clone in the current working directory. See [`create-dev-release.yml`](tasks/create-dev-release.yml) for an example [task config](https://concourse-ci.org/tasks.html).\n\nArguments:\n\n * **Output directory** - for creating the release tarball\n\n\n### `load-release-notes`\n\nThe `load-release-notes` script may be used to output release notes for a given release version from a clone in the current working directory. See [`load-release-notes.yml`](tasks/load-release-notes.yml) for an example [task config](https://concourse-ci.org/tasks.html). Release notes are checked in the following order...\n\n * locally-committed release notes in `releases/{name}/{name}-{version}.md`\n * GitHub release notes for tags `v{version}` or `{version}` (based on the clone's remote origin)\n\nArguments:\n\n * **Output path** - for writing the release notes contents\n * **Release version** - to lookup release notes (either literal version, or path to a file whose contents is the version)\n\nEnvironment Variables:\n\n * **`GITHUB_TOKEN`** - a GitHub API [OAuth authentication token](https://developer.github.com/v3/#authentication)\n * `missing_ok` - set to `true` to exit with success even if no release notes are found\n * `skip_github` - set to `true` to skip checking GitHub release notes\n * `skip_local` - set to `true` to skip checking local release notes\n\n\n## Usage\n\nTo use this resource type, you should configure it in the [`resource_types`](https://concourse-ci.org/resource-types.html) section of your pipeline.\n\n    - name: bosh-release\n      type: docker-image\n      source:\n        repository: dpb587/bosh-release-resource\n\nThe default `latest` tag will refer to the current, stable version of this Docker image. For using the latest development version, you can refer to the `master` tag. If you need to refer to an older version of this image, you can refer to the appropriate `v{version}` tag.\n\n\n### Alternative to `bosh-io-release`\n\nThis resource is generally equivalent to the `check`/`get` behaviors of [`bosh-io-release`](https://github.com/concourse/bosh-io-release-resource).\n\nIf you originally used the `bosh-io-release`...\n\n    - name: concourse\n      type: bosh-io-release\n      source:\n        repository: concourse/concourse\n\nThe equivalent `bosh-release` resource would be...\n\n    - name: concourse\n      type: bosh-release\n      source:\n        uri: https://github.com/concourse/concourse.git\n\nThe release tarball is named `{{.Name}}-{{.Version}}.tgz`. If you were not using globs (e.g. `release/*.tgz`) you can retain the `bosh-io-release` behavior by configuring `tarball_name`. For example...\n\n    - get: stable-release\n      params:\n        tarball_name: release.tgz\n\nNote that `url` and `sha1` are not provided since tarballs are built locally.\n\n\n## Examples\n\nA few examples which may be helpful...\n\n * [BOSH Release Notifications](examples/bosh-release-notifications.yml) - a simple pipeline to send a [Slack](https://slack.com/) notification when there is a new release of [cloudfoundry/bosh](https://github.com/cloudfoundry/bosh)\n * [dpb587/openvpn-bosh-release](https://github.com/dpb587/openvpn-bosh-release/blob/master/ci/pipelines/main.yml) - used in the pipeline for building and finalizing releases\n * [dpb587/caddy-bosh-release](https://github.com/dpb587/caddy-bosh-release/blob/master/ci/pipelines/main.yml) - used in the pipeline for building and finalizing releases\n\n\n## Caveats\n\nSubtle details you might care about...\n\n * This tags the commit from which the release tarball was created (`commit_hash`), not the commit which finalizes the release in the `releases` directory. This is primarily to ensure git tags match `commit_hash` and refer to the underlying source where changes between versions occur (as opposed to when it was finalized which may have a different set of files).\n * This uses annotated tags as opposed to lightweight tags. This enables additional metadata to be associated with when the release is published, as opposed to being restricted to when `commit_hash` occurred.\n * This requires that versions match semver conventions. If your release does not use a semver-compatible version, this may not work. This is primarily to encourage semver-like conventions. For releases where typical 3-tuple version numbers are not meaningful, date-based semver numbers may be a useful alternative.\n * This currently requires an externally-provided version file rather than supporting `bosh`'s automatic major version-bumping strategy. This is primarily to encourage more explicit version management. If this becomes too burdensome, it may be worth supporting.\n\n\n## Development\n\nBefore committing, tests can be run locally with [`bin/test`](bin/test). After pushing, [Travis CI](https://travis-ci.org/) should automatically run tests for commits and pull requests.\n\n\n## License\n\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpb587%2Fbosh-release-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdpb587%2Fbosh-release-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdpb587%2Fbosh-release-resource/lists"}