Note: Nintex Apps data centers are located in West US and Australia (AUS). In-region processing of Nintex Apps data is only available in these regions.
skuid CLI
skuid is a command line interface (CLI) for retrieving and deploying Nintex Apps objects (data and metadata) on Nintex Apps sites.
, it can be helpful to:
- download an entire site's worth of pages to make small adjustments locally
- move Nintex Apps configurations from a sandbox site to a production site
- store Nintex Apps configurations in a version control system (VCS)
While it's possible to save page XML and create page packs, moving entire apps' worth of Nintex Apps objects from site to site can prove challenging.
Enter the skuid CLI. Using skuid , you can easily pull—download—app pages and push—upload—Nintex Apps metadata from one site to another using only a few commands.
Note: skuid CLI is open source, and we accept pull requests! If there is a feature you'd like to see, feel free to contribute.
Working with Nintex Apps for Salesforce?
We now have skuid-sfdx , our open-source Salesforce CLI plugin designed to handle Nintex Apps metadata on the Salesforce platform.
This plugin can push/pull app pages to and from Salesforce orgs.
Nintex Apps for Salesforce and Salesforce-related features have been deprecated in skuid CLI in favor of skuid-sfdx . Consider updating any relevant tooling and processes. To learn more, see the skuid-sfdx repository
If you work primarily on Nintex Apps, then continue using the skuid CLI.
Prerequisites
- Some basic knowledge of the command line is required, including how to open and use a command line program such as Terminal or Powershell.
- You should feel comfortable interacting with the file system with commands like cd , mv , and rm .
- You should feel comfortable using the skuid command with the necessary environment variables and flags.
Installation
macOS and Linux
If you have curl , grep and awk in your environment, you can quickly install the application via the command line:
# macOS:
curl -Lo skuid https://github.com/skuid/skuid-cli/releases/latest/download/skuid_darwin_amd64
# Linux:
curl -Lo skuid https://github.com/skuid/skuid-cli/releases/latest/download/skuid_linux_amd64
# Give the skuid application the permissions it needs to run
chmod +x skuid
# Move the skuid application to a folder where it can be used easily,
# for example, a directory in your $PATH.
# Enter your computer account password if prompted
sudo mv skuid /usr/local/bin/skuid
To manually install the application, follow these steps:
-
Download the latest release of the skuid application binary.
-
Navigate to the directory containing the skuid binary file in a terminal application.
Copycd /path/to/the/downloaded/binary
-
Rename the downloaded application binary file to skuid :
Copy# macOS:
mv skuid_darwin_amd64 skuid
# Linux:
# mv skuid_linux_amd64 skuid -
Give the application executable permissions:
Copychmod +x skuid
-
Ensure the binary is accessible in your $PATH variable. This can be done one of two ways:
-
Move the application to a folder that's already in your $PATH variable, like /usr/local/bin
Copymv skuid /usr/local/bin/skuid
-
Add the application's folder to the PATH variable:
Copy# This method doesn't require moving the `skuid` binary, which may be not be possible depending on user permissions.
# The location of the `skuid` binary isn't important in this use case, but try to store it in a folder it's unlikely to move from. # This example assumes the `skuid` binary is located in ~/Documents/Skuid
export PATH=$PATH:~/Documents/Skuid
Note: If you choose to update your shell profile you'll need to source your shell profile or restart your session for those changes to take effect.
-
-
Verify that you can run the application:
Copyskuid --version
Windows
-
Download the latest Windows executable release in your web browser.
-
( Optional ) Move the executable to a more permanent location, such as C:\Program Files\Skuid\ .
-
( Optional ) Set an alias to easily access the executable.
In Windows Powershell, use Set-Alias. For information about saving aliases in Powershell, see Microsoft documentation
CopySet-Alias skuid C:\Path\To\skuid_windows_amd64.exe
In the Windows Command Prompt, use doskey. For information about saving doskey aliases for future sessions, see Microsoft documentation.
Copydoskey skuid=C:\Path\To\skuid_windows_amd64.exe
-
Invoke the executable by typing its name or alias and pressing enter: skuid --help .
Using go
Use the the Go programming language? If so, you can also install skuid by running go get github.com/skuid/skuid-cli .
Building from source
To build the application from the source, first clone the repository or download the source. You also need Go installed on your machine.
-
To build from source for your machine:
Copygo build
-
Building for a specific platform:
CopyGOOS=linux GOARCH=amd64 go build
# or
GOOS=linux GOARCH=amd64 make build #requires docker
Upgrading skuid CLI
To upgrade skuid , first remove the previous version's binary:
# Use the rm command with the appropriate path to the skuid binary
# For example, if the binary is installed in /usr/local/bin:
rm /usr/local/bin/skuid
After removing the previous version, repeat the installation steps listed above.
Configuration
Information can be passed to skuid CLI as flags or as environment variables. At minimum you must provide a username, password, and a host. While you can set username, password, and host with flags, consider setting the following environment variables to avoid entering credentials with every command.
For information that requires set values, set the flag or environment variable to the appropriate value:
# Retrieve using the "exampleuser" user name
# With a flag
skuid retrieve --username "exampleuser"
# With an environment variable
export SKUID_UN='exampleuser'
skuid retrieve
For boolean (on/off) features, set flag or set the environment variable to true/false:
# Retrieve metadata and generate a log file for the action in the parent directory
# With a flag
skuid retrieve --file-logging --log-directory="../"
# With an environment variable
export SKUID_FILE_LOGGING="true"
export SKUID_LOGGING_DIRECTORY="../"
skuid retrieve
macOS and Linux
Enter the appropriate information in the format listed below, listing your own username, password, etc., immediately following the = equals sign. You can drop these in your ~/.bash_profile , ~/.zshrc , or into a .env file in the project directory.
export SKUID_UN='username'
export SKUID_PW='password'
export SKUID_HOST='https://example.nintex.app'
Windows
How you set your environment variables differs depending on your command line program of choice:
Powershell
Set-Item Env:SKUID_UN 'username'
Set-Item Env:SKUID_PW 'password'
Set-Item Env:SKUID_HOST 'https://example.nintex.app'
Command Prompt
Set SKUID_UN=username
Set SKUID_PW=password
Set SKUID_HOST=https://example.nintex.app
Usage
skuid is used to do two things:
- Retrieve/pullNintex Apps data and metadata from a Nintex Apps tenant and store it on the local machine
- Deploy/pushNintex Apps data and metadata from the local machine to a Nintex Apps tenant
All of this is done using the following syntax:
skuid [command] [flags]
Commands
- retrieve retrieves metadata from a Nintex Apps site.
- deploy sends metadata to a Nintex Apps site.
- watch listens for changes to local metadata files and sends changes to a Nintex Apps site.
- help displays short documentation about the CLI's features, and it can be used in combination with other commands, e.g. skuid help deploy displays information about the deploy command
Command Flags
Authentication and Platform
These flags can be used when authenticating to either platform in lieu of exporting environment variables.
- --host : (string) The Nintex Apps host platform's base URL, e.g. https://example.nintex.app for Nintex Apps
- Environment variable: SKUID_HOST
- --password : (string) Nintex Apps password
- Abbreviated form: -p
- Environment variable: SKUID_PW
- --username : (string) Nintex Apps username
- Abbreviated form: -u
- Environment variable: SKUID_UN
- --dataServiceProxy (string): The IP or URI through which traffic should be routed to reach a Nintex Apps tenant's data services. May be necessary for cases where skuid CLI is executed from a machine on an internal network and VPN rules require proxy use.
- --metadataServiceProxy (string): The IP or URI through which traffic should be routed to reach a Nintex Apps tenant's metadata service. May be necessary for cases where skuid CLI is executed from a machine on an internal network and VPN rules require proxy use.
- --app : (string) The Nintex Apps app to retrieve or deploy all associated metadata for. Using this flag means the CLI will not retrieve/deploy any other metadata outside of the app's resources. Only accepts one argument.
- Abbreviated form: -a
- Note: If an app's name contains spaces, be sure to wrap it in quotes: skuid retrieve --app "Multi-word App Name"
Data management
-
--dir : (string) The input/output directory where files are retrieved and stored to or deployed from.
- Abbreviated form: -d
- Environment variable: SKUID_DEFAULT_FOLDER
-
--since : (string) For use with the retrieve command, only retrieves files that have been modified since the given date value. Date values can appear in any of the layouts mentioned in Go's time library's Constants section, and several abbreviations are respected for phrasal values (e.g. minutes can be written as "m," "min," "mins," etc.)
Some common formats include:
Timestamp:
Copy# Retrieve metadata updated since May 22nd, 2023
skuid retrieve --since "2023-05-22"Phrasal date:
Copy# Retrieve metadata updated in the last three days
skuid retrieve --since "3 days"Abbreviated combinations:
Copy# Retrieve metadata updated in the past week, 4 days, 3 hours, and 15 minutes skuid retrieve --since "1w4d3h15m"
Warning: If using a date value with spaces, be sure to encase the value in quotes—otherwise the empty space characters may result in the following error: A --since option was provided but was not parsable as a time or duration
Note: Due to necessary backend implementation details SQL connections, and permission sets on those connections, are typically returned regardless of their updated date.
Debugging
- --version : Displays the version of the skuid CLI binary in use
- --verbose : When used, skuid displays additional logging information, including authentication status, file/folder CRUD operations, and confirmation of a successful or erroneous deployment/retrieval.
- Abbreviated form: -v
- Environment variable: SKUID_VERBOSE which accepts true/false
- --trace : When used, skuid displays all information available through --verbose , as well as network request attempts, request details, and additional information on file/folder CRUD operations.
- --diagnostic : When used, display all information available through --trace , with information on the username, host, attempted process, and start datetime stamp for each event.
- Environment variable: SKUID_FIELD_LOGGING which accepts true/false
- --file-logging : When using --file-logging, all information available through --diagnostic and other technical details are logged to a .log file within the current directory with the current timestamp as the file name. Diagnostic information does not appear in the terminal when this flag is used.
- Environment variable: SKUID_FILE_LOGGING which accepts true/false
- --log-directory : Determines the output directory for the .log file produced by the --file-logging flag. Target directory for file logging
- Abbreviated form: -l
- Environment variable: SKUID_LOGGING_DIRECTORY which accepts a string
Other
It is also possible to use the --api-version flag to select which version of the deployment API to use, however it does not have much use as only version 1 is active at this time.
Examples
-
Retrieve all Nintex Apps metadata from a Nintex Apps site and store in the current directory:
Copyskuid retrieve
-
Retrieve all Nintex Apps metadata from a Nintex Apps site and store in a specified directory:
Copyskuid retrieve -d sites/humboldt-us-trial
-
Only retrieve Nintex Apps metadata for an app named "Example app"
Copyskuid retrieve --app "Example app"
-
Deploy all metadata in the current directory to a Nintex Apps site:
Copyskuid deploy
-
Deploy all metadata in a different directory to a Nintex Apps site:
Copyskuid deploy -d path/to/directory
-
Deploy metadata from a different directory, but only for an app named "Example app," to a Nintex Apps site:
Copyskuid deploy -d path/to/directory --app "Example app"
-
Listen for changes to Nintex Apps metadata in the current directory and deploy changed files to a Nintex Apps site:
Copyskuid watch
-
Listen for changes to Nintex Apps metadata in a different directory, and deploy changed files to a Nintex Apps site:
Copyskuid watch -d path/to/directory
Nintex Apps Object Structure
When retrieving from Nintex Apps sites, the following is downloaded:
- All apps, and the routes within them, in the apps directory
- All authentication providers in the authproviders directory
- All component packs in the componentpacks directory
- All connections in the Data Sources directory
- All design systems in the designsystems directory
- All files in the files directory
- All pages in the pages directory
- All site permission sets in the sitepermissionsets directory
- All site settings in the site directory (including a site's logo and/or favicon)
- All themes in the themes directory
- All [variables] in the variables directory
What Is Not Retrieved by skuid
- Created by and Modified by metadata for pages
- When deploying app pages to a site, the created/modified by user and date matches the identity of whoever is running the deployment, as well as the time and date of the deployment.
- Authentication provider credentials
- You must re-enter any client ID and client secret pairs on all Nintex Apps authentication providers in the target site, even if those authentication providers already existed.
- Users and user data for Nintex Apps
- While user profiles are transferred, individual user accounts and their information are not. Users must be manually re-created—or provisioned through single sign-on —for at least the first deployment.
Use Cases
Version control
Retrieving Nintex Apps data objects for local storage allows for the use of version control systems, such as git .
For example, you could create a directory for your Nintex Apps tenant and initiate a git repository:
mkdir my-skuid-site
cd my-skuid-site
git init
After exporting the proper Nintex Apps authentication credentials, you could retrieve and commit Nintex Apps data within that git repo:
skuid retrieve
git add -A
git commit -m 'Initial commit of tenant metadata'
With a workflow like this, it's easier to capture snapshots of Nintex Apps tenants at certain points in time, allowing for both easy rollbacks (should issues arise) as well as developer collaboration on these Nintex Apps objects.
Sandboxes
skuid is particularly useful for moving Nintex Apps data from a sandbox—or testing space—to production for end-users.
The -u , -p and --host flags can be used to temporarily set different authentication and platform settings.
For example, consider a workflow like below:
# Set the authentication credentials for the sandbox site, assuming they are not set already
export SKUID_UN='{sandbox-username}'
export SKUID_PW='{sandbox-password}'
export SKUID_HOST='{https://example-sandbox.skuidsite.com}'
# Retrieve sandbox data
skuid retrieve
# Deploy sandbox data to production by temporarily using different credentials
skuid deploy -u production-username -p production-password --host https://production-sandbox.skuidsite.com}
Consider automating this process using shell scripts. Experiment to find the workflow that best suits your lifecycle management processes.
Troubleshooting
skuid tries to only show basic information to avoid cluttering the terminal. If you're seeing errors, a good first step is try the command again with the -v or --verbose flag to log more information.
Some possible error messages include:
- unexpected end of JSON input
- This may mean that the SKUID_UN and SKUID_PW variables are not set.
- Error deploying metadata: Post https://example.nintex.app/api/v1/metadata/deploy: EOF
- This may mean your Nintex Apps credentials are not correct within your environment variables. Verify both your username and password.
- Error retrieving metadata: Error making HTTP request%!(EXTRA string=413 Payload Too Large)
- This can indicate that there are files besides Nintex Apps data within the directory you are attempting to deploy. Verify that there are no other applications or files in the Nintex Apps data directory. If you are using the skuid CLI application in the same directory as your data, you'll need to move your data a different directory and use the --dir flag to point to it.
- Error retrieving metadata: Error making HTTP request%!(EXTRA string=401 Unauthorized)
- Your SKUID_UN or SKUID_PW may not be set correctly. Verify your user credentials.
- Ensure you have the latest version of the skuid CLI. If your credentials are correct, try removing your current installation and reinstalling the binary.
- Error deploying metadata: Error making HTTP request%!(EXTRA string=400 Bad Request) or Error deploying metadata: Error making HTTP request%!(EXTRA string=500 Internal Server Error)
- These errors indicate there may be an issue with the retrieval of your apps.
- Ensure that all apps you have retrieved are properly configured, with correct routes and corresponding pages for those routes.
- Verify there are no issues with user profile access to the apps you are attempting to deploy.
- If all the options appear correct, delete the apps folder on your local machine and attempt skuid deploy again. Recreate your apps manually on the destination Nintex Apps site.
- These errors indicate there may be an issue with the retrieval of your apps.
- Error executing retrieve plan: Post https://<IP address>/api/v2/metadata/retrieve: dial tcp <IP address>: i/o timeout
- This error indicates an issue retrieving metadata from a data service. Verify the URLs/IP addresses of all data services listed in Configure > Connections > Data Services are correct, and ensure that they all can respond to Nintex Apps's metadata requests.
skuid vs skuid-grunt
skuid-grunt previously provided the above-documented push/pull functionality as a Grunt plugin. While great for projects already using NodeJS and Grunt, the plugin was problematic if you didn't want to require those dependencies. skuid solves that dependency problem by producing a self-contained CLI to perform all the same operations.