This document serves as a guide to configure a generic automated process for versioning and importing Appian applications using a defined DevOps pipeline. This guide has been assembled as a holistic process that covers automated versioning, application import/export, and testing. While the pipeline described can be used as-is for many different projects, it can also be adapted to fit other configurations and environments.
Development and Operations (DevOps) is a set of practices and tools that help foster a culture of collaboration between development and operations to enable the rapid, frequent, and reliable delivery of software.
Continuous Integration (CI) and Continuous Delivery (CD) describe a set of procedures many modern software companies follow in order to ensure their software is robust and compatible with current and previous versions. A DevOps pipeline breaks the CI and CD processes into discrete automated stages.
Appian applications, though faster and simpler to build and maintain than traditional software applications, must also go through a basic life cycle that goes from conception to implementation and testing before they can be deployed to end users. Automating and modularizing this process makes Appian application development even faster and simpler.
The recommended Appian DevOps Pipeline leverages trunk-based development. The Appian Dev environment can be interpreted as a “branch”. Adding the Appian Applications to the “master” branch in version control is the equivalent of “merging”. After the “merge”, the Appian Dev environment can be interpreted as a “new branch”. The goal is to “merge” frequently to the “master” branch to keep the spirit of “short-lived branches”.
README.md
devops/f4a/test_suites/QuickStart<Integration/Acceptance>Test/content.txt
|set appian url to |https://<integration/acceptance-site-url>/suite | |set appian version to |<site-url-version> | |set appian locale to |en_US | |login with username |<username-for-site> |
FullscreenXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX### Environment-specific properties ## REQUIRED. URL of the environment url=[Enter URL of the appian site e.g. https://yourCloudSite.appiancloud.com/suite] siteApiKey=[Enter the API key for the deployment service account created in Appian] packageFileName=app-package.zip ### Import-specific properties ## REQUIRED Name for the deployment deploymentName=[ Enter a name for the deployment, to appear in the deployment tab within Appian] ## REQUIRED Description for the deployment deploymentDescription=[ Enter a description for the deployment, to appear in the deployment tab within Appian]
### Environment-specific properties ## REQUIRED. URL of the environment url=[Enter URL of the appian site e.g. https://yourCloudSite.appiancloud.com/suite] siteApiKey=[Enter the API key for the deployment service account created in Appian] packageFileName=app-package.zip ### Import-specific properties ## REQUIRED Name for the deployment deploymentName=[ Enter a name for the deployment, to appear in the deployment tab within Appian] ## REQUIRED Description for the deployment deploymentDescription=[ Enter a description for the deployment, to appear in the deployment tab within Appian]
devops/f4a/users.properties
FullscreenXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# List of username/password combination with access to Appian environment # Example: fitnesse.user=password <username-for-site>=<password>
# List of username/password combination with access to Appian environment # Example: fitnesse.user=password <username-for-site>=<password>
Jenkinsfile
REPOUSERNAME
Username for remote repository
REPOPASSWORD
Password for remote repository.
ARTIFACTORYAPIKEY
API Key to access Artifactory repo containing ADM and F4A
ARTIFACTORYURL
URL to access Artifactory repo containing ADM and F4A
version-manager.properties
devops/adm/version-manager.local.properties
FullscreenXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX### Environment-specific properties ## REQUIRED. Username of the version control account vcUsername=<remote-repo-username> ## REQUIRED. Password of the version control account vcPassword=<remote-repo-password> ## REQUIRED. URL to access the remote repository repoUrl=<remote-repo-url> ## REQUIRED. Path to the folder containing the local repository localRepoPath=<local-repo-path> ## Path to the folder containing the Appian objects in the repository. This path is relative to the path of the local repository. If not specified, the Appian objects are checked out to and committed from the root of the local repository path. ## Assure that the path does not contain any preceding or trailing forward slashes. Example: appian/applications/Hello_World appianObjectsRepoPath=appian/applications/<application-name> ### Action-specific properties ## REQUIRED. Valid choices are addContents, buildAllApps, buildSingleApp, or updateLocalRepo action=addContents ## Path for the application ZIP file to add to version control. Used for the addContents action. applicationPath=<path-to-local-application-ZIP>
### Environment-specific properties ## REQUIRED. Username of the version control account vcUsername=<remote-repo-username> ## REQUIRED. Password of the version control account vcPassword=<remote-repo-password> ## REQUIRED. URL to access the remote repository repoUrl=<remote-repo-url> ## REQUIRED. Path to the folder containing the local repository localRepoPath=<local-repo-path> ## Path to the folder containing the Appian objects in the repository. This path is relative to the path of the local repository. If not specified, the Appian objects are checked out to and committed from the root of the local repository path. ## Assure that the path does not contain any preceding or trailing forward slashes. Example: appian/applications/Hello_World appianObjectsRepoPath=appian/applications/<application-name> ### Action-specific properties ## REQUIRED. Valid choices are addContents, buildAllApps, buildSingleApp, or updateLocalRepo action=addContents ## Path for the application ZIP file to add to version control. Used for the addContents action. applicationPath=<path-to-local-application-ZIP>
appian/properties
Download Sample Code Repository File Structure
Download ADM and FitNesse for Appian. Rename the .zip files as adm.zip and f4a.zip respectively. Upload them to an Artifactory repo named appian-devops.