Preprocess PCF Artifacts to Match Supported Types
Harness supports the most common Pivotal Web Services artifact package types.
If your artifact doesn't match the supported types, you can run a script to preprocess the artifact (unzip, untar, etc). Preprocessing occurs when setting up the app during deployment.
In this topic:
- Before You Begin
- Limitations
- Review: Supported Artifact Types
- Step 1: Select Preprocessing in App Setup Step
- Step 2: Add Preprocessing Script
- Step 3: View the Preprocessing in the Deployment Logs
- See Also
- Configure As Code
Before You Begin
- Add Container Images for PCF Deployments
- Create a Basic PCF Deployment
- Pivotal Cloud Foundry Quickstart
Limitations
- Preprocessing is for non-Docker artifacts.
Review: Supported Artifact Types
Harness supports the following PCF artifact servers/types.
Metadata-only Sources:
- Jenkins
- AWS (Amazon Web Services) S3
- Artifactory (includes Docker)
- Nexus
- Bamboo
File-based Sources:
- Docker Registry
- Artifactory (Tgz files)
- Nexus (Tgz files)
- Google Container Service (GCS)
- AWS Elastic Container Registry (ECR)
- SMB
- SFTP
- Custom Repository
cf push
. TAR, WAR, JAR, ZIP, and Docker are supported.Step 1: Select Preprocessing in App Setup Step
This step assumes you've created a PCF Workflow before. If not, see:
Open the App Setup step in the Workflow.
Select Pre-Process Package for PCF Deployment. The script option appears.
Step 2: Add Preprocessing Script
Enter a script to perform preprocessing on the downloaded artifact before deployment.
Reference the downloaded artifact using the expression ${downloadedArtifact}
.
For example:
tar -xvf ${downloadedArtifact}
Copy the processed artifact to a directory using ${processedArtifactDir}
.
For example:
cp myfolder/helloworld.war ${processedArtifactDir}
The entire preprocessing script might look like this:
tar -xvf ${downloadedArtifact}
cp myfolder/helloworld.war ${processedArtifactDir}
Let's look at another example:
Let's say you have a zip archive that contains a folder named myArtifact. Inside the myArtifact folder is an artifact named myArtifact.war.
You unzip the archive:
unzip ${downloadedArtifact}
Once you unzip the archive the result is myArtifact/myArtifact.war.
Next, you need to copy myArtifact.war to a directory. The directory is identified using the expression ${processedArtifactDir}
.
For example:
cp myArtifact/myArtifact.war ${processedArtifactDir}
Step 3: View the Preprocessing in the Deployment Logs
When you deploy the Workflow the preprocessing is shown in the logs for the App Setup step.
Here's an example:
# Executing artifact processing script:
._package2
package2/
package2/._index.js
package2/index.js
package2/._package.json
package2/package.json
SUCCESS
See Also
Configure As Code
To see how to configure the settings in this topic using YAML, configure the settings in the UI first, and then click the YAML editor button (</>).
The preprocessing YAML looks something like this:
...
- type: PCF_SETUP
name: App Setup
properties:
artifactProcessingScript: |
# Preprocessing script for non-Docker artifacts:
# Enter a script to perform preprocessing on the downloaded artifact before deployment.
# Reference the downloaded artifact using the expression: $\{downloadedArtifact}
# Reference the processed final artifact directory using: $\{processedArtifactDir}
# For example: if unarchiving $\{downloadedArtifact} is a file
# named helloworld.war, an artifact preprocessing script
# might look like:
# tar -xvf $\{downloadedArtifact}
# cp helloworld.war $\{processedArtifactDir}
tar -xvf ${downloadedArtifact}
cp -r package2 ${processedArtifactDir}
...