Skip to content
This repository was archived by the owner on Sep 30, 2023. It is now read-only.

Commit 7817966

Browse files
committed
fix: добавил явное получение хэша по тегу релиза
До этого хэш релизного коммита получался из поля target_commitish, в котором при создании релизов через appveyor действительно указывался хэш С переходом на создание релизов через github cli в это поле стало попадать название ветки, из-за чего сломалось обновление через github, т.к. вместо хэша коммита, изменение которого говорит о необходимости обновления, там всегда было значение master ID-11071
1 parent a7bedfe commit 7817966

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

src/Cement.Cli.Common/Updaters/GitHubReleaseCementUpdater.cs

+28-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ public string GetNewCommitHash()
3737
try
3838
{
3939
var gitHubRelease = LoadGitHubRelease();
40-
if (gitHubRelease.Assets.Count == 1)
41-
return gitHubRelease.TargetCommitsh;
40+
41+
if (gitHubRelease.Assets.Count >= 1)
42+
return GetCommitSha(gitHubRelease.TagName);
4243

4344
log.LogError(
4445
"The GitHub Release '{GitHubReleaseVersion}' has incorrect number of assets: {GitHubReleaseAssetsCount}\n" +
@@ -124,4 +125,29 @@ private GitHubRelease LoadGitHubRelease()
124125

125126
return gitHubRelease;
126127
}
128+
129+
private string GetCommitSha(string gitRef)
130+
{
131+
using var cts = new CancellationTokenSource(DefaultTimeout);
132+
133+
var uri = new Uri($"https://api.github.com/repos/{Owner}/{Repository}/commits/{gitRef}");
134+
using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uri)
135+
{
136+
Headers =
137+
{
138+
Accept = {MediaTypeWithQualityHeaderValue.Parse("application/vnd.github.sha")},
139+
UserAgent = {ProductInfoHeaderValue.Parse("Anything")}
140+
}
141+
};
142+
143+
using var httpResponseMessage = httpClient.Send(httpRequestMessage, cts.Token);
144+
httpResponseMessage.EnsureSuccessStatusCode();
145+
146+
using var stream = httpResponseMessage.Content.ReadAsStream(cts.Token);
147+
using var streamReader = new StreamReader(stream, Encoding.UTF8);
148+
149+
var content = streamReader.ReadToEnd();
150+
151+
return content;
152+
}
127153
}

0 commit comments

Comments
 (0)