Skip to content

Commit

Permalink
Add support for including a suffix in the Commit message/PR message (#…
Browse files Browse the repository at this point in the history
…1351)

Add support for including a suffix in the Commit message/PR message

This is useful if you have e.g. the Azure Boards integration set up in
your repository. Then you can add "AB#<WorkItemId>" to your commit/PR
messages. Currently in BCApps we require a workitem so we have to
manually edit the PRs for "Update AL-Go System Files" so it includes the
workitem. See for example: microsoft/BCApps#2455

Also related to #1352

---------

Co-authored-by: Maria Zhelezova <43066499+mazhelez@users.noreply.github.com>
  • Loading branch information
aholstrup1 and mazhelez authored Dec 10, 2024
1 parent 98a79c8 commit 006019b
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
32 changes: 31 additions & 1 deletion Actions/AL-Go-Helper.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,11 @@ function ReadSettings {
"defaultReleaseMD" = "## Release reference documentation\n\nThis is the generated reference documentation for [{REPOSITORY}](https://github.com/{REPOSITORY}).\n\nYou can use the navigation bar at the top and the table of contents to the left to navigate your documentation.\n\nYou can change this content by creating/editing the **{INDEXTEMPLATERELATIVEPATH}** file in your repository or use the alDoc:defaultReleaseMD setting in your repository settings file (.github/AL-Go-Settings.json)\n\n{RELEASENOTES}"
}
"trustMicrosoftNuGetFeeds" = $true
"commitOptions" = [ordered]@{
"messageSuffix" = ""
"pullRequestAutoMerge" = $false
"pullRequestLabels" = @()
}
"trustedSigning" = [ordered]@{
"Endpoint" = ""
"Account" = ""
Expand Down Expand Up @@ -1355,9 +1360,23 @@ function CommitFromNewFolder {
invoke-git add *
$status = invoke-git -returnValue status --porcelain=v1
if ($status) {
$title = $commitMessage

# Add commit message suffix if specified in settings
$settings = ReadSettings
if ($settings.commitOptions.messageSuffix) {
$commitMessage = "$commitMessage / $($settings.commitOptions.messageSuffix)"
$body = "$body`n$($settings.commitOptions.messageSuffix)"
}

if ($commitMessage.Length -gt 250) {
$commitMessage = "$($commitMessage.Substring(0,250))...)"
}

if ($title.Length -gt 250) {
$title = "$($title.Substring(0,250))...)"
}

invoke-git commit --allow-empty -m "$commitMessage"
$activeBranch = invoke-git -returnValue -silent name-rev --name-only HEAD
# $branch is the name of the branch to be used when creating a Pull Request
Expand All @@ -1377,7 +1396,18 @@ function CommitFromNewFolder {
}
invoke-git push -u $serverUrl $branch
try {
invoke-gh pr create --fill --head $branch --repo $env:GITHUB_REPOSITORY --base $ENV:GITHUB_REF_NAME --body "$body"
$prCreateCmd = "invoke-gh pr create --fill --title ""$title"" --head ""$branch"" --repo ""$env:GITHUB_REPOSITORY"" --base ""$ENV:GITHUB_REF_NAME"" --body ""$body"""
if ($settings.commitOptions.pullRequestLabels) {
$labels = "$($settings.commitOptions.pullRequestLabels -join ",")"
Write-Host "Adding labels: $labels"
$prCreateCmd += " --label ""$labels"""
}

Invoke-Expression $prCreateCmd

if ($settings.commitOptions.pullRequestAutoMerge) {
invoke-gh pr merge --auto --squash --delete-branch
}
}
catch {
OutputError("GitHub actions are not allowed to create Pull Requests (see GitHub Organization or Repository Actions Settings). You can create the PR manually by navigating to $($env:GITHUB_SERVER_URL)/$($env:GITHUB_REPOSITORY)/tree/$branch")
Expand Down
4 changes: 4 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
### New Repository Settings

- `useGitSubmodules` can be either `true` or `recursive` if you want to enable Git Submodules in your repository. If your Git submodules resides in a private repository, you need to create a secret called `gitSubmodulesToken` containing a PAT with access to the submodule repositories. Like with all other secrets, you can also create a setting called `gitSubmodulesTokenSecretName` and specify the name of another secret, with these permissions (f.ex. ghTokenWorkflow).
- `commitOptions` - is a structure defining how you want AL-Go to handle automated commits or pull requests coming from AL-Go (e.g. for Update AL-Go System Files). The structure contains the following properties
- `messageSuffix` : A string you want to append to the end of commits/pull requests created by AL-Go. This can be useful if you are using the Azure Boards integration (or similar integration) to link commits to workitems.
- `pullRequestAutoMerge` : A boolean defining whether you want AL-Go pull requests to be set to auto-complete. This will auto-complete the pull requests once all checks are green and all required reviewers have approved.
- `pullRequestLabels` : A list of labels to add to the pull request. The labels need to be created in the repository before they can be applied.

### Support for Git submodules

Expand Down
1 change: 1 addition & 0 deletions Scenarios/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ The repository settings are only read from the repository settings file (.github
| <a id="UpdateGitHubGoSystemFilesSchedule"></a>UpdateGitHubGoSystemFilesSchedule | CRON schedule for when Update AL-Go System Files should run. When Update AL-Go System Files runs on a schedule, it uses direct Commit instead of creating a PR. Default is no scheduled run, only manual trigger. Build your CRON string here: [https://crontab.guru](https://crontab.guru). You need to run the Update AL-Go System Files workflow for the schedule to take effect. |
| <a id="buildModes"></a>buildModes | A list of build modes to use when building the AL-Go projects. Every AL-Go project will be built using each build mode. AL-Go ships with the following build modes out of the box:<br /> **Default**: Apps are compiled as they are in the source code.<br />**Clean**: _PreprocessorSymbols_ are enabled when compiling the apps. The values for the symbols correspond to the `cleanModePreprocessorSymbols` setting of the AL-Go project.<br />**Translated**: `TranslationFile` compiler feature is enabled when compiling the apps.<br /><br />It is also possible to specify custom build modes by adding a build mode that is different than 'Default', 'Clean' or 'Translated'. |
| <a id="useGitSubmodules"></a>useGitSubmodules | If your repository is using Git Submodules, you can set the `useGitSubmodules` setting to `"true"` or `"recursive"` in order to use these submodules during build workflows. If `useGitSubmodules` is not set, git submodules are not initialized. If the submodules reside in private repositories, you need to define a `gitSubmodulesToken` secret. Read [this](https://aka.ms/algosecrets#gitSubmodulesToken) for more information. |
| <a id="commitOptions"></a>commitOptions | If you want more control over how AL-Go creates pull requests or commits changes to the repository you can define `commitOptions`. It is a structure defining how you want AL-Go to handle automated commits or pull requests coming from AL-Go (e.g. for Update AL-Go System Files). The structure contains the following properties:<br />`messageSuffix` : A string you want to append to the end of commits/pull requests created by AL-Go. This can be useful if you are using the Azure Boards integration (or similar integration) to link commits to work items. <br />`pullRequestAutoMerge` : A boolean defining whether you want AL-Go pull requests to be set to auto-complete. This will auto-complete the pull requests once all checks are green and all required reviewers have approved.<br /> `pullRequestLabels` : A list of labels to add to the pull request. The labels need to be created in the repository before they can be applied.<br />If you want different behavior in different AL-Go workflows you can add the `commitOptions` setting to your [workflow-specific settings files](https://github.com/microsoft/AL-Go/blob/main/Scenarios/settings.md#where-are-the-settings-located). |

## Advanced settings

Expand Down

0 comments on commit 006019b

Please sign in to comment.