Skip to content

Release 2.7.1#2260

Merged
mjcheetham merged 13 commits intoreleasefrom
main
Feb 4, 2026
Merged

Release 2.7.1#2260
mjcheetham merged 13 commits intoreleasefrom
main

Conversation

@mjcheetham
Copy link
Copy Markdown
Contributor

Move from a runtime `condition` on the ESRP steps to a YAML parse-time
condition so that no usage of the `esrp*ConnectionName` variables exist
when the esrp parameter is false.

This means we can avoid the need to approve runs of this workflow in
the internal secure environment when not accessing ESRP (for example,
when debugging and testing the release process).

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
All other platforms use the package filename format:

  gcm(user)-$RUNTIME-$VERSION.$EXT

But the Linux packages have been set to:

  gcm-$RUNTIME.$VERSION.$EXT

Let's standardise on the `.` separator between runtime and version.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
All other platforms use the package filename format:

```
  gcm(user)-$RUNTIME-$VERSION.$EXT
```

But the Linux packages have been set to:

```
  gcm-$RUNTIME.$VERSION.$EXT
```

Let's standardise on the `.` separator between runtime and version.
Move from a runtime `condition` on the ESRP steps to a YAML parse-time
condition so that no usage of the `esrp*ConnectionName` variables exist
when the esrp parameter is false.

This means we can avoid the need to approve runs of this workflow in the
internal secure environment when not accessing ESRP (for example, when
debugging and testing the release process).
Mirroring #1811, add support to set default settings for Linux, via MDM
tooling. For this platform we look for files in the
`/etc/git-credential-manager/config.d` directory.

Files are a simple format of `key=value\n`, where the `key` is a
configuration value name from `docs/config.md`. This format prevents
values from containing a `\n` line feed character, but this is unlikely
to be an issue in practice.
Remove the cruft code signing summary file from the Windows payload
zips. There's nothing interesting in this file anyway.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
When building locally the gcm(user)-$RID-$VERSION.exe installer files
were being written to the PayloadPath, rather than the OutputPath.

Also, since we're now specifying a RID for all invocations of the
project file, we should disable the appending of the RID to the
OutputPath variable - we already have the RID as part of the PayloadPath
(for keeping binaries separated by RID) and the resulting installer
filenames also contain the RID anyway.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
We assume the input paths given to the Windows layout.ps1 scripts do not
have a trailing slash - we should make sure this is the case before
proceeding and doing path-math with that.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Improve the handling of output paths and build artifacts in the Windows
installer build pipeline.

We accidentally started including some code signing summary report files
in the output zip archives on Windows - let's delete those.

Also I noticed that local builds were now outputting the Windows
installers to the payload directory, rather than the expected output
path. This is because now that we specify a RID we were getting the RID
appended to the output path (which would then be the same as the payload
path.. what a coincidence!).

Finally let's be a bit more robust with the path-math in our layout.ps1
script - we should not assume if the path has the trailing slash or not.
(Note that in MSBuild, the convention is that directory path variables
should end with a slash.)
If there is no GCM configuration defaults directory on Linux, we had
been inadvertently returning `null` for the setting value!

Fix the issue by explictly returning `false` (no setting found) to
`TryGetExternalDefault` rather than `true` (setting found).

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
If there is no GCM configuration defaults directory on Linux, we had
been inadvertently returning `null` for the setting value!

Fix the issue by explictly returning `false` (no setting found) to
`TryGetExternalDefault` rather than `true` (setting found).
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
@mjcheetham mjcheetham requested a review from dscho February 4, 2026 09:05
@mjcheetham mjcheetham requested a review from a team as a code owner February 4, 2026 09:06
@mjcheetham
Copy link
Copy Markdown
Contributor Author

Install from source on Ubuntu is a know issue. The version of the .NET SDK on that image has an issue. Unrelated to these changes.

@mjcheetham mjcheetham merged commit aff4a59 into release Feb 4, 2026
22 of 23 checks passed
@chewi
Copy link
Copy Markdown
Contributor

chewi commented Feb 17, 2026

Install from source on Ubuntu is a know issue. The version of the .NET SDK on that image has an issue. Unrelated to these changes.

Is the issue this? I'm seeing this on Gentoo with .NET SDK 9.0.111. Same with GCM 2.7.2. GCM 2.7.0 is fine.

src/shared/Core/Interop/Linux/LinuxConfigParser.cs(34,45): error CS0121: The call is ambiguous between the following methods or properties: 'string.Split(char[]?, StringSplitOptions)' and 'string.Split(string?, StringSplitOptions)' [src/shared/Core/Core.csproj::TargetFramework=net8.0]

@orbitalvoodoo

This comment was marked as spam.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants