Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,293,373
Community Members
 
Community Events
165
Community Groups

Bamboo YAML spec not working when I use with plan repo

Hi All,

 

I am using YAML spec with Atlassian Bamboo version 8.0.6 and configured plan repository with in the YAML spec. Please find the steps I used and error message.

How to pass empty passphrase? or what is workaround for this issue?

Any help will be greatly appreciated.

1). Generated SSH key

ssh-keygen -t ed25519 -C "l.xxxx@gmail.com"


2). Configured public key on Bitbucket server project level.

3). My plan repository YAML spec looks like below. sshKey_devops_public_key and bamboo.sshKey_devops_private_key are global variables. Used passphrase while generating SSH key.

repositories:
- spec-repo:
scope: global
- app-repo:
type: bitbucket-server
server: Bitbucket
project: DEV
slug: simple-java-maven-app
clone-url: ssh://git@xxxxxx:7999/dev/xxxx-app.git
public-key: ${bamboo.sshKey_devops_public_key}
private-key: ${bamboo.sshKey_devops_private_key}
branch: master
command-timeout-minutes: '180'
use-shallow-clones: 'false'
cache-on-agents: 'false'
submodules: 'false'
verbose-logs: 'false'
fetch-all: 'false'
lfs: 'false'
viewer: com.atlassian.bamboo.plugins.stash.atlassian-bamboo-plugin-stash:bbServerViewer

The above YAML spec not working and getting below error.

17-Apr-2022 01:41:20 java.lang.IllegalArgumentException: Cannot read keypair, passphrase wasn't set.

Here is the link to full error message: https://pastebin.com/8LXC69Z3

1 answer

1 accepted

0 votes
Answer accepted

Hello @Mohan L

Please check the following question that shows some good tips on using git and bitbucket type repositories.

Regards,

Eduardo Alvarenga
Atlassian Support APAC

Hi @Eduardo Alvarenga ,

It works when I hard code public-key and private-key values in YAML spec like below:

public-key: <hard code public key>

private-key: <Hard code Bamboo encrypted private key>

However I am getting same "java.lang.IllegalArgumentException: Cannot read keypair, passphrase wasn't set" when I try to create global variable with the public key and Bamboo encrypted private key.

Is there any way to keep the public and private key values out of YAML spec and reference in the spec instead of hard code it?

public-key: ${bamboo.sshKey_devops_public_key}

private-key: ${bamboo.sshKey_devops_private_key}

 

Thanks

Mohan

Hello @Mohan L

Bamboo will interpret the public-key and private-key fields as strings and will not expand variables there. If you want to have dynamic authentication you can use Global Shared credentials or Project Shared credentials -- available in Bamboo Data Center only.

Note: Your SSH private key needs to be converted to PEM format before getting added to Bamboo Shared credentials. Something like this will do the job:

openssl rsa -in id_rsa -outform pem > id_rsa.pem

Example:

- Calibration-git-local:
type: git
url: ssh://git@git.mydomain.net:7999/cal/calibration.git
branch: master
shared-credentials: shared-ssh-key

And then I have a Shared credential called shared-ssh-key of type SSH in Bamboo.

 

Regards,

Eduardo Alvarenga
Atlassian Support APAC

Hi @Eduardo Alvarenga ,

Thanks for your time.

1). Converted private key to converted to PEM format 

2).  Created shared-ssh-key in global shared credentials

3). spec looks like below:

The error turned "Document structure is incorrect".

Does bitbucket-server type support shared-credentials?

 

repositories:
- spec-repo:
scope: global
- app-repo:
type: bitbucket-server
server: Bitbucket
project: DEV
slug: simple-java-maven-app
clone-url: ssh://git@xxxxxx:7999/dev/simple-java-maven-app.git
shared-credentials: shared-ssh-key
branch: master
command-timeout-minutes: '180'
use-shallow-clones: 'false'
cache-on-agents: 'false'
submodules: 'false'
verbose-logs: 'false'
fetch-all: 'false'
lfs: 'false'
viewer: com.atlassian.bamboo.plugins.stash.atlassian-bamboo-plugin-stash:bbServerViewer



17-Apr-2022 07:43:47 Bamboo YAML import failed: Document structure is incorrect: Found following unused properties: repositories / [1] / app-repo / shared-credentials, repositories / [1] / app-repo / branch, repositories / [1] / app-repo / command-timeout-minutes, repositories / [1] / app-repo / use-shallow-clones, repositories / [1] / app-repo / cache-on-agents, repositories / [1] / app-repo / submodules, repositories / [1] / app-repo / verbose-logs, repositories / [1] / app-repo / fetch-all, repositories / [1] / app-repo / lfs, repositories / [1] / app-repo / viewer. 17-Apr-2022 07:43:47 Every property must have a correct key recognizable by Bamboo and must be used as part of the configuration in the current YAML document. Common sources of these problems are typos in properties keys, unused jobs, and mixing a plan and its permissions configuration in one YAML document. 17-Apr-2022 07:43:47 17-Apr-2022 07:43:47 17-Apr-2022 07:43:47 Do you need help? Please visit http://docs.atlassian.com/bamboo/docs-0800/Bamboo+Specs+troubleshooting 17-Apr-2022 07:43:47

 

Thanks

Mohan

Hello @Mohan L

As the error states you have a few issues, I can highlight this one:

  • repositories / [1] / app-repo / shared-credentials

The "shared-credentials" property is only valid if used along with "git" type repositories. When using a "bitbucket-server" type repository, Bamboo expects that you declare the following information:

When using Bamboo Specs in interactive mode, the Bamboo server can and fetch the data such as clone url or SSH keys from the Bitbucket Server. In RSS mode, it is not possible, as user session is not available during the automatic update. Therefore the following properties are mandatory when in RSS mode:

  • SSH private key of the repository (the key can be defined in both Bamboo Specs Encryption and plain format).
  • SSH public key of the repository.
  • SSH clone url of this repository, as used by git commands (can be found on repository’s page in Bitbucket Server).

Source: https://docs.atlassian.com/bamboo-specs-docs/8.0.6/specs.html?yaml#creating-bitbucket-server-repositories-in-rss-mode

So you have two choices:

  • Use a git type repository along with shared-credentials. You may also be interested in configuring a repository polling rule to allow Bamboo to retrieve changes from your Bitbucket repository periodically, or even set a remote trigger from your Bitbucket server back to your Bamboo instance.

or

  • Use a bitbucket-server type repository and hardcode the SSH keys on the spec code. The declared private key can't have a passphrase (but it can be encrypted using Bamboo Specs Encryption).

 

Regards,

Eduardo Alvarenga
Atlassian Support APAC

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Bamboo

Bamboo Data Center on Kubernetes

Hi, If you are running self-managed environments and looking to adopt modern infrastructure, Bamboo Data Center can now be deployed in a Kubernetes cluster. By leveraging Kubernetes, you can easily...

909 views 3 8
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you