Pattern strings / tokens
Runway uses a system of ‘tokens’ to allow for dynamic values in things like:
Wherever you set these strings in Runway, including tokens will allow Runway to dynamically inject values and also understand the different strings it pulls in from the outside world. Certain tokens can have ‘modifiers’, which allow you to customize the format of the data associated with those tokens.
Available token types
{version} — three-segment SemVer
Example:
1.2.3Modifier available — pre-padding
Example:
{version}[0,0,2]:1.2.3-> 1.2.03
{nextVersion} — three-segment SemVer for the next version that Runway detects
{previousVersion} — three-segment SemVer for the previous version that Runway detects
{versionConcise}— truncates trailing zeroes in SemVer versions
Example:
1.2.3-> 1.2.3Example:
1.2.0-> 1.2Example
1.0.0-> 1Modifier available — minimum digits
Example:
{versionConcise}[2]:1.0.0-> 1.0
{nextVersionConcise} — truncates trailing zeroes in SemVer versions for the next version that Runway detects
{previousVersionConcise} — truncates trailing zeroes in SemVer versions for the previous version that Runway detects
{versionMajorMinor} — SemVer major and minor digits only
Example:
2.0.0-> 2.0Example:
2.0.1-> 2.0
{releaseName} — human-readable release name
Example:
CinnamonExample:
Big Feature
{releaseType}
Example:
standardExample:
hotfixExample:
rollback
{releasePilot} — email of the release pilot
Modifier available — mention current release pilot on Slack or Teams
Example:
{releasePilot}[ping]-> @jane_done
{previousReleasePilot} — email of the release pilot
Modifier available — mention previous release pilot on Slack or Teams
Example:
{previousReleasePilot}[ping]-> @jane_done
{upcomingReleasePilot} — email of the release pilot
Modifier available — mention upcoming release pilot on Slack or Teams
Example:
{upcomingReleasePilot}[ping]-> @jane_done
{kickoffDate}
Modifier available — day, hour, minute
Example:
{kickoffDate}[day: -1]-> 1 day before the target kickoff dateExample:
{kickoffDate}[hour: 6]-> 6 hours after the kickoff dateExample:
{kickoffDate}[minute: 45]-> 45 minutes after the kickoff date
{submitDate}
Modifier available — day, hour, minute
Example:
{submitDate}[day: -1]-> 1 day before the target submission dateExample:
{submitDate}[hour: 6]-> 6 hours after the submission dateExample:
{submitDate}[minute: 45]-> 45 minutes after the submission date
{releaseDate}
Modifier available — day, hour, minute
Example:
{releaseDate}[day: -1]-> 1 day before the target release dateExample:
{releaseDate}[hour: 6]-> 6 hours after the release dateExample:
{releaseDate}[minute: 45]-> 45 minutes after the release date
{appName}
{releaseBranchName}
{workingBranchName} — the name of your trunk branch (e.g.
develop){targetBranchName} — target branch for a backmerge PR
{*} — any string
{commitMessage} — commit’s message
{commitShortHash} — commit’s short hash
{prTitle} — e.g.
from cherry-picked PR{prBody} — e.g.
from cherry-picked PR{prTitleOrCommitMessage} — PR title or commit message
{prBodyOrCommitHash} — PR body or commit hash
{prNumberOrCommitHash} — PR number or commit hash
{releaseNotesTerm} — a title or label for the release notes appropriate to their destination in the app store
Example:
What’s Newin App Store ConnectExample:
Release notesin Google Play Console, Amazon Appstore, and Huawei AppGallery
{releaseNotes} — notes included in app store metadata on release
Modifier available to allow users to enter either single release notes for specific locales
{releaseNotes}[en]-> release notes for English only{releaseNotes}[en,fr]-> release notes for English & French locales with a title header for each to separate them
{aiGeneratedReleaseDescription} — AI-generated release description based on the current state of the release
Modifier available to allow users to indicate if the generated notes are for an internal or external audience
aiGeneratedReleaseDescription[internal]-> release description generated by AI for an internal audienceaiGeneratedReleaseDescription[external]-> release description generated by AI for an external audience
{aiGeneratedBetaTestingNotes} — AI-generated beta testing notes based on the current state of the release
Modifier available to allow users to indicate if the generated notes are for an internal or external audience
aiGeneratedBetaTestingNotes[internal]-> beta testing notes generated by AI for an internal audienceaiGeneratedBetaTestingNotes[external]-> beta testing notes generated by AI for an external audience
{aiGeneratedWhatsNew} — AI-generated "What's new" notes based on the current state of the release
Modifier available to allow users to indicate if the generated notes are for an internal or external audience
aiGeneratedWhatsNew[internal]-> "What's new" notes generated by AI for an internal audienceaiGeneratedWhatsNew[external]-> "What's new" notes generated by AI for an external audience
{releaseDuration} — the duration of a given release cycle from kickoff to when the release went live
{releasedAt} — date the release went live
{releaseWorkItemsLink} — link to Feature Readiness step in Runway to view the work items for a given release
{stabilityMonitoringReleaseLink} — link to release in your stability monitoring tool
{releaseAppStoreLink} — link to release in App Store Connect or Play Console
{releaseVCSReleaseLink} — link to the release in your version control system
{appStoreBuildNumber} — build number as it appears in App Store Connect or Play Console
Modifier available — substrings and trimming
{appStoreBuildNumber}[2]: App store build 12345 -> 12{appStoreBuildNumber}[-2]: App store build 12345 -> 45{appStoreBuildNumber}[2]: App store build 1.2.3.45 -> 1.2{appStoreBuildNumber}[-2]: App store build 1.2.3.45 -> 45{appStoreBuildNumber}[-3,true]: App store build 1.2.3.1602061 -> 61
{appPlatform} — e.g.
iOS,Android,Wear OS{ciBuildsCount} — number of successful CI release candidate builds in the release
Modifier available — offset
Example:
{ciBuildsCount}[1]-> 2 if number of successful CI builds is 1
{ciBuildNumber} — build number as it appears in CI
Modifier available — resolve token only after the version is released
{ciBuildNumber}[released]: CI #123 -> 1.2.123
{workItems} — changelog-like list of a release’s work items (commits in the diff with links to corresponding tickets where applicable)
Example:
{workItems}[bug]returns all Feature Readiness work items with commits having commit message containing the string “bug”Modifier available for prLabel
Example:
{workItems}[prLabel:new-feature]-> all Feature Readiness work items that have PRs with the label new-featureExample:
{workItems}[prLabel:!new-feature,!sync]-> all Feature Readiness work items not having PRs with the label new-feature or sync
{workItemsCount} — number of work items for a given release
{issuesCount} — number of tickets that were completed in a given release
{commitsCount} — number of commits in release
{contributorsCount} — number of contributors in release
{linesOfCodeCount} — number of lines of code in release
Usage
Required:
Either {version}, {versionConcise}, or {versionMajorMinor}
Not allowed:
{*}, {commitMessage}, {targetBranchName}, {prTitle}, {prBody}, {prTitleOrCommitMessage}, {prBodyOrCommitHash}, {prNumberOrCommitHash}, {workItems}, {appName}, {appPlatform}, {workItemsCount}, {issuesCount},{commitsCount}, {contributorsCount}, {linesOfCodeCount}, {releaseDuration}, {releasedAt}, {releaseWorkItemsLink}, {releaseAppStoreLink}, {releaseVCSReleaseLink}, or {releaseNotes}
Required:
At least one of {version}, {versionConcise}, and {releaseName}
Not allowed:
{*}, {commitMessage}, {targetBranchName}, {prTitle}, {prBody}, {prTitleOrCommitMessage}, {prBodyOrCommitHash}, {prNumberOrCommitHash}, {ciBuildNumber}, {ciBuildsCount}, {appStoreBuildNumber}, {workItems}, {appName}, {appPlatform}, {workItemsCount}, {issuesCount}, {commitsCount}, {contributorsCount}, {linesOfCodeCount}, {releasedAt}, {releaseWorkItemsLink}, {releaseAppStoreLink}, {releaseVCSReleaseLink}, or {releaseNotes}
If branch is versioned (i.e. branches are created per release)
Required:
Either {version}, {versionConcise}, or {releaseName}
Not allowed:
{*}, {commitMessage}, {targetBranchName}, {prTitle}, {prBody}, {prTitleOrCommitMessage}, {prBodyOrCommitHash}, {prNumberOrCommitHash}, {ciBuildNumber}, {ciBuildsCount}, {appStoreBuildNumber}, {workItems}, {appName}, {appPlatform}, {workItemsCount}, {issuesCount}, {commitsCount}, {contributorsCount}, {linesOfCodeCount}, {releasedAt}, {releaseWorkItemsLink}, {releaseAppStoreLink}, {releaseVCSReleaseLink}, or {releaseNotes}
If branch is static (same across all releases)
No token types are allowed
Required:
No tokens are required
Not allowed:
{appStoreBuildNumber}, {ciBuildNumber}, {commitMessage}, {*}, {commitMessage}, {targetBranchName}, {prTitle}, {prBody}, {prTitleOrCommitMessage}, {prBodyOrCommitHash}, {prNumberOrCommitHash}, {releasedAt},{releaseWorkItemsLink}, {releaseAppStoreLink}, {releaseVCSReleaseLink}, or {releaseNotes}
Last updated
Was this helpful?