Onboarding software to your private catalog
The process to onboard your software includes importing a version to your private catalog, configuring the deployment details, setting any license requirements, and validating that the version can be successfully installed on the target infrastructure that you require.
Before you begin
-
Upload your source code to a release in your GitHub, GitLab, or Azure repository. For more information, see Setting up your source code repository.
-
Verify that you're using a Pay-As-You-Go or Subscription account. See Viewing your account type for more information.
-
Make sure you're assigned the editor role on the catalog management service. See Assigning access to account management services.
-
Set up the test environment that was previously created for you:
-
Install the IBM Cloud CLI and the IBM Cloud Schematics plug-in. See Setting up the CLI.
-
Upload a readme file that contains your product installation instructions to your source repository. See Setting up your source code repository.
-
For containerized apps:
- Create your Kubernetes cluster or Red Hat OpenShift cluster.
- For deployments to IBM Cloud Kubernetes Service, set up your Helm chart.
- For deployments to Red Hat OpenShift, set up your Helm chart or Operator.
-
For virtual server images:
- Review the list of supported images.
- If required, create your Terraform template. Virtual server images for VPC do not require a Terraform template.
- Create an instance of IBM Cloud Object Storage and add your image to a bucket.
-
Importing a version to your private catalog
Complete the following steps to import a version of your software to your private catalog. Your private catalog was created for you as part of Getting set up to sell software.
-
In the IBM Cloud console, click the Navigation Menu icon > Partner Center > My products.
-
Select the product that you're onboarding.
-
From the Software tab, click Import a version.
-
Select your deployment method.
-
Select whether you are adding your product from a private or public repository. For Operators, select your source repository and then choose private or public repository.
-
Enter your source URL.
You can review the following list of supported formats per software type:
- Helm chart:
https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
- Node-RED Operator:
https://github.com/IBM-Cloud/operator-bundle-sample/archive/refs/tags/v0.0.3.tar.gz
- Operator bundle from a Red Hat OpenShift on IBM Cloud registry: For an example, select the
Akka Cluster Operator
from the list of available Operators in the Certified repository. - OVA image:
https://github.com/gcatalog/OVA-sample/blob/main/ova-sample.yaml
- Terraform template:
https://github.com/IBM-Cloud/terraform-sample/archive/refs/tags/v1.1.0.tar.gz
- Virtual server image with Terraform:
https://github.com/IBM-Cloud/isv-vsi-product-deploy-sample/releases/download/v1.0/isv-vsi-product-deploy-sample.tar.gz
- Virtual server image for VPC: Select an image from the list of available images that were imported into your VPC, or import a new image to your account.
A virtual server image for VPC can only be added to one product within one private catalog at a time. If the virtual server image you want to import is already imported into another product, you must remove the image from that product or delete the product before you add the virtual server image to a new product.
If you're adding your product from a private repository, you can choose to provide a personal access token or you can use a secret. Instead of giving users a personal access token, you can give them access to a secret, add the token to a secret, and centrally manage all tokens and access the secret allows.
If your software is located in GitLab, you must use a personal access token as GitLab doesn't support downloading releases using project access tokens. You can create a personal access token with the required
read_api
permission by following the instructions here.- If you're using a personal access token, select No to indicate that you aren't using a secret and provide your personal access token.
- If you're using a secret, select Yes and click Select from Secrets Manager. Select your service instance, secret group, and secret. If you don't see your secret, make sure you're using the correct secret group and service instance.
The message
No service instance available
might be displayed if you haven't created a secret or if you don't have the correct access to use secrets, even if you have service instances that are created. - Helm chart:
-
If applicable, set your deployment target and add your software version.
-
Click Add version.
Configuring the version details
- From the version list, click the row that contains your software.
- Review the version details, and click Next.
- Depending on your software type, there might be additional steps, including setting deployment values.
- Click Next.
Set deployment values
If applicable to your software type, you can set deployment values that users are required to specify when they install the software. You can add new deployment values or import deployment values from an existing version.
Add new deployment values
- Click Configure version > Next.
- Click Add deployment values.
- In the table, select Parameter > Add to select and add all options.
- If necessary, you can customize the parameters by selecting them from the table and clicking Edit.
Import existing values
Complete these steps if you previously set deployment values for an existing version and want to import the values to your current version.
Imported values don't replace any deployment values that you already added to your current version.
- Click Configure version > Next.
- Click Add deployment values.
- Click Import values from a previous version
- Select the version that contains the values that you want to import.
- Click Import.
- If necessary, you can customize the parameters by selecting them from the table and clicking Edit.
Edit output value descriptions
You can improve the descriptions for your Terraform template's output values to help users better understand the purpose of the parameters. The description of any output value that you include in your template can be updated.
To add output values, you need to include them in a new imported version of your Terraform template.
Complete the following steps to edit the product's output value descriptions:
- Click Configure version > Next.
- From the Output value descriptions section, provide a new description for the parameter that you want to update.
- Click Next.
Define IAM access
If applicable to your software type, you can add the service access and platform access roles that are required to install your product from the IBM Cloud catalog. You can define new IAM access or import IAM access that you set in an earlier version.
Defining new IAM access
Use the following steps to define your product's access:
- Click Configure version > Next > Next.
- Click Add.
- Select the service and the required service and platform access.
- The service access role allows access for using the service and performing service API calls.
- The platform access role enables actions to be performed on platform resources, such as creating an instance, connecting instances to apps, and assigning user access.
- Click Save.
Importing existing IAM access
Complete the following steps if you previously defined IAM access for an existing version and want to import the values to your current version.
Imported IAM access doesn't replace any IAM access that you already added to your current version.
- Click Configure version > Next > Next.
- Click Add.
- Click Import IAM access from a previous version.
- Select the version that contains the IAM access that you want to import.
- Click Add.
Adding license agreements
If users are required to accept any license agreements beyond the IBM Cloud Services Agreement when they install the software, provide the URL to each agreement or import licenses from an existing version.
Add new license agreements
- Click Add license agreements > Add license.
- Enter the name and URL, and click Add license.
- After entering all additional license agreements, click Next.
Import license agreements
Complete these steps if you previously added license agreements for an existing version and want to import the licenses to your current version.
Imported licenses don't replace any license agreements that you already added to your current version.
- Click Add license agreements > Add license.
- Click Import licenses from a previous version.
- Select the version that contains the licenses that you want to import.
- Click Import.
Reviewing your readme file
When users install the software, they can view product information by clicking the Readme link. The information in the Readme link is generated from the readme file that you uploaded to your source repository.
- From the Edit readme tab, click the Edit icon .
- Preview how the information in the readme file will be displayed to users when they are installing the software.
- To make updates, click the Edit icon next to the Readme section title.
- Click Save.
- Click Next.
If you are importing a virtual server image for VPC, the readme file is not automatically generated. Copy and paste the contents of the readme file template and make updates as needed.
Validating the product
The steps to validate your product can vary based on the type of software that you're onboarding.
- From the Validate product tab, configure your validation target, and click Next. This step applies only to Helm charts and Operators.
- Configure your workspace, and click Next. This step applies only to Helm charts, Operators, Terraform templates, and virtual server images with Terraform.
- Click Validate.
To monitor the progress of the validation process, click View logs.
Validating your software by using the API
You can validate your software by calling the Catalog Management API.
String authRefreshToken = "{authRefreshToken}";
String versionLocator = "{versionLocator}";
ValidationInstallOptions installOptions = new ValidationInstallOptions.Builder().xAuthRefreshToken(authRefreshToken).versionLocId(versionLocator).build();
Response<Void> response = service.validationInstall(installOptions).execute();
System.out.println(response.getResult());
versionLocator = "{versionLocator}";
authRefreshToken = "{authRefreshToken}";
response = await service.validationInstall({ 'versionLocatorId': versionLocator, 'xAuthRefreshToken': authRefreshToken });
console.log(response);
authRefreshToken="{authRefreshToken}"
versionLocator = "{versionLocator}"
response = self.service.validation_install(version_locator_id=versionLocator, x_auth_refresh_token=authRefreshToken)
print(response)
versionLocator := "{versionLocator}"
authRefreshToken := "{authRefreshToken}"
installOptions := service.NewValidationInstallOptions(versionLocator, authRefreshToken)
response, _ := service.ValidationInstall(installOptions)
fmt.Println(response)
Manage security and compliance controls
Controls are safeguards that are used to meet security and compliance requirements. Only controls that are supported by Security and Compliance Center, formatted correctly, and validated by Code Risk Analysis and Security and Compliance Center scans appear in the catalog. For more information, see Formatting controls in your readme file.
- Click Add controls.
- Choose a profile.
- Select the controls that you want to add to your version.
- Click Add.
- In the Code Risk Analyzer scan section, click Run scan.
- Wait for the scan to finish.
- In the Security and Compliance Center scan section, select the profile that you scanned.
- Select the Security and Compliance Center scan.
- Click Add scan.
- Click Next.
Review requirements
You must complete validation and any other requirements to publish your product.