Initializes a git repository of the content in the workspace, and publishes it to Bitbucket Cloud.
Input Schema
| Property | Type | Description | Required |
|---|---|---|---|
| token | string | The token to use for authorization to BitBucket Cloud | |
| repoUrl | string | Repository Location | |
| signCommit | boolean | Sign commit with configured PGP private key | |
| sourcePath | string | Path within the workspace that will be used as the repository root. If omitted, the entire workspace will be published as the repository. | |
| description | string | Repository Description | |
| defaultBranch | string | - | |
| repoVisibility | string | - | |
| gitCommitMessage | string | - |
Output Schema
| Property | Type | Description | Required |
|---|---|---|---|
| remoteUrl | string | A URL to the repository with the provider | |
| commitHash | string | The git commit hash of the initial commit | |
| repoContentsUrl | string | A URL to the root of the repository |
Usage Examples
Publish a private service repository to a Bitbucket Cloud workspace
Publishes the generated service to a new private repository in a Bitbucket Cloud workspace. Use this after fetching a template with fetch:template, then register it with catalog:register.
steps:
- id: fetch-template
action: fetch:template
name: Fetch project template
input:
url: ./skeleton
targetPath: ./
values:
name: ${{ parameters.component_id }}
owner: ${{ parameters.owner }}
description: ${{ parameters.description }}
- id: publish-repo
action: publish:bitbucketCloud
name: Publish to Bitbucket Cloud
input:
repoUrl: bitbucket.org?workspace=acme-ws&repo=${{ parameters.component_id }}
description: ${{ parameters.description }}
defaultBranch: main
repoVisibility: private
gitCommitMessage: "chore: scaffold ${{ parameters.component_id }}"
- id: register
action: catalog:register
name: Register in Backstage catalog
input:
repoContentsUrl: ${{ steps.publish-repo.output.repoContentsUrl }}
catalogInfoPath: /catalog-info.yamlPublish only a subdirectory to a new repository
Publishes a specific subdirectory of the workspace as the repository root. Use this when your template creates multiple packages and you want only one to be a separate repo.
steps:
- id: fetch-monorepo
action: fetch:template
name: Generate monorepo
input:
url: ./monorepo-template
targetPath: ./
values:
rootName: ${{ parameters.component_id }}
generateApi: true
generateWeb: true
- id: publish-api
action: publish:bitbucketCloud
name: Publish API package
input:
repoUrl: bitbucket.org?workspace=acme-ws&repo=${{ parameters.component_id }}-api
description: "API service for ${{ parameters.component_id }}"
defaultBranch: main
repoVisibility: private
sourcePath: packages/api
gitCommitMessage: "feat: bootstrap API package from template"
- id: register-api
action: catalog:register
name: Register API in catalog
input:
repoContentsUrl: ${{ steps.publish-api.output.repoContentsUrl }}
catalogInfoPath: /catalog-info.yamlPublish a public repo with a custom default branch and signed commit
Creates a public repository with a nonstandard default branch and signs the initial commit. Provide a Bitbucket Cloud app password or OAuth token via the action input.
steps:
- id: fetch-template
action: fetch:template
name: Materialize template
input:
url: ./skeleton
values:
name: ${{ parameters.component_id }}
- id: publish-public
action: publish:bitbucketCloud
name: Publish public repo with signed commit
input:
repoUrl: bitbucket.org?workspace=oss-ws&repo=${{ parameters.component_id }}
description: "Open source library ${{ parameters.component_id }}"
defaultBranch: develop
repoVisibility: public
gitCommitMessage: "init: open source initial commit"
signCommit: true
token: ${{ secrets.bitbucketCloudToken }}Publish into a specific Bitbucket Cloud project within a workspace
Targets a project within the workspace to group related repositories. Use this when your organization enforces project keys in Bitbucket Cloud.
steps:
- id: fetch-template
action: fetch:template
name: Fetch service template
input:
url: ./service-template
values:
name: ${{ parameters.component_id }}
description: ${{ parameters.description }}
- id: publish-to-project
action: publish:bitbucketCloud
name: Publish to workspace project
input:
repoUrl: bitbucket.org?workspace=acme-ws&project=ENG&repo=${{ parameters.component_id }}
description: ${{ parameters.description }}
defaultBranch: main
repoVisibility: private
gitCommitMessage: "chore: scaffold ${{ parameters.component_id }} in ENG project"Publish and use outputs for follow-up steps
Publishes the repo and then uses the outputs to log the created repository and commit hash. This is useful for audit or for passing metadata to later steps like catalog:register or other automation.
steps:
- id: fetch
action: fetch:template
name: Prepare workspace
input:
url: ./template
values:
name: ${{ parameters.component_id }}
- id: publish
action: publish:bitbucketCloud
name: Publish repository
input:
repoUrl: bitbucket.org?workspace=platform-ws&repo=${{ parameters.component_id }}
description: "Service ${{ parameters.component_id }}"
defaultBranch: main
repoVisibility: private
gitCommitMessage: "build: initial scaffold for ${{ parameters.component_id }}"
- id: announce
action: debug:log
name: Log publish details
input:
message: >
Created repo at ${{ steps.publish.output.remoteUrl }},
root contents at ${{ steps.publish.output.repoContentsUrl }},
initial commit ${{ steps.publish.output.commitHash }}