Compare commits

..

13 Commits

Author SHA1 Message Date
Ikiru Yoshizaki
e5acc106ee Merge pull request #715 from Cysharp/ci/nuget
ci: use OIDC for NuGet package push authentication
2026-05-20 21:40:43 +09:00
Ikiru Yoshizaki
b0d26bebea ci: add dedicated publish job gated on build and build-unity 2026-05-20 19:38:57 +09:00
Ikiru Yoshizaki
4cfac5c9d2 ci: fix symbol generation options 61d8d3 2026-05-20 18:59:38 +09:00
Ikiru Yoshizaki
37251f09d4 ci: publish symbol files 2026-05-20 18:22:01 +09:00
Ikiru Yoshizaki
a18e8e38da ci: handle SymbolPackageFormat on build 2026-05-20 18:06:57 +09:00
Ikiru Yoshizaki
19b01fe8d6 ci: id-token permission 2026-05-20 16:48:40 +09:00
Ikiru Yoshizaki
a09a450b0f ci: use OIDC for NuGet package push authentication
This updates the build-release workflow to leverage OpenID Connect (OIDC) for authenticating with NuGet.org. The package push operation is now performed directly within the build job, replacing static API key usage with ephemeral credentials for enhanced security.
2026-05-20 16:12:26 +09:00
github-actions[bot]
2e993ff18f chore(automate): Update package.json to 2.5.11
Commit by [GitHub Actions](https://github.com/Cysharp/UniTask/actions/runs/26083685280)
2026-05-19 07:47:19 +00:00
Yoshifumi Kawai
f248391774 Merge pull request #706 from chikacc/master
fix: resolve TreeView deprecation in Unity 6.2+
2026-05-19 16:46:26 +09:00
Chika Chang
0d304f1feb fix: resolve TreeView deprecation in Unity 6.2+ 2026-03-28 15:36:49 +08:00
Ikiru Yoshizaki
a9e27c03d4 chore: add groups for dependabot 2026-02-25 18:03:24 +09:00
Ikiru Yoshizaki
73a63b7f67 Merge pull request #680 from Cysharp/ci/nuget_release
ci: add id-token: write for NuGet Trusted Publish
2025-10-01 16:31:33 +09:00
Ikiru Yoshizaki
30bec5d5c4 ci: add id-token: write for NuGet Trusted Publish 2025-10-01 16:03:54 +09:00
10 changed files with 56 additions and 24 deletions

View File

@@ -5,6 +5,10 @@ updates:
directory: "/"
schedule:
interval: "weekly" # Check for updates to GitHub Actions every week
groups:
dependencies:
patterns:
- "*"
cooldown:
default-days: 14 # Wait 14 days before creating another PR for the same dependency. This will prevent vulnerability on the package impact.
ignore:

View File

@@ -35,10 +35,10 @@ jobs:
with:
ref: ${{ needs.update-packagejson.outputs.sha }}
- uses: Cysharp/Actions/.github/actions/setup-dotnet@main
# build and pack
# build and pack nuget (.nupkg and .symbols.nupkg will be created)
- run: dotnet build -c Release -p:Version=${{ inputs.tag }}
- run: dotnet test -c Release --no-build
- run: dotnet pack ./src/UniTask.NetCore/UniTask.NetCore.csproj -c Release --no-build -p:Version=${{ inputs.tag }} -o ./publish
- run: dotnet pack ./src/UniTask.NetCore/UniTask.NetCore.csproj -c Release --no-build -p:Version=${{ inputs.tag }} -p:IncludeSymbols=true -o ./publish
# Store artifacts.
- uses: Cysharp/Actions/.github/actions/upload-artifact@main
with:
@@ -96,24 +96,48 @@ jobs:
path: ./src/UniTask/UniTask.${{ inputs.tag }}.unitypackage
retention-days: 1
# publish
publish:
name: "Publish NuGet packages"
needs: [build-dotnet, build-unity]
permissions:
contents: read
id-token: write # required for NuGet Trusted Publish
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: Cysharp/Actions/.github/actions/setup-dotnet@main
- uses: Cysharp/Actions/.github/actions/download-artifact@main
# push nuget
- name: NuGet login (OIDC)
uses: NuGet/login@8d196754b4036150537f80ac539e15c2f1028841 # v1.2.0
id: login
with:
user: ${{ secrets.NUGET_USER }}
- run: dotnet nuget push "./nuget/*.nupkg" --skip-duplicate -s https://api.nuget.org/v3/index.json -k "${NUGET_KEY}"
if: ${{ !inputs.dry-run }}
env:
NUGET_KEY: ${{ steps.login.outputs.NUGET_API_KEY }}
# release
create-release:
needs: [update-packagejson, build-dotnet, build-unity]
needs: [update-packagejson, publish]
permissions:
contents: write
id-token: write # required for NuGet Trusted Publish
uses: Cysharp/Actions/.github/workflows/create-release.yaml@main
with:
commit-id: ${{ needs.update-packagejson.outputs.sha }}
dry-run: ${{ inputs.dry-run }}
tag: ${{ inputs.tag }}
nuget-push: true
nuget-push: false
release-upload: true
release-asset-path: ./UniTask.${{ inputs.tag }}.unitypackage/UniTask.${{ inputs.tag }}.unitypackage
secrets: inherit
cleanup:
if: ${{ needs.update-packagejson.outputs.is-branch-created == 'true' }}
needs: [update-packagejson, build-dotnet, build-unity]
needs: [update-packagejson, create-release]
permissions:
contents: write
uses: Cysharp/Actions/.github/workflows/clean-packagejson-branch.yaml@main

View File

@@ -10,6 +10,11 @@ using UnityEditor.IMGUI.Controls;
using Cysharp.Threading.Tasks.Internal;
using System.Text;
using System.Text.RegularExpressions;
#if UNITY_6000_2_OR_NEWER
using TreeView = UnityEditor.IMGUI.Controls.TreeView<int>;
using TreeViewItem = UnityEditor.IMGUI.Controls.TreeViewItem<int>;
using TreeViewState = UnityEditor.IMGUI.Controls.TreeViewState<int>;
#endif
namespace Cysharp.Threading.Tasks.Editor
{
@@ -179,4 +184,3 @@ namespace Cysharp.Threading.Tasks.Editor
}
}

View File

@@ -67,13 +67,13 @@ namespace Cysharp.Threading.Tasks
return (UniTask.FromCanceled(cancellationToken), default(CancellationTokenRegistration));
}
var promise = AutoResetUniTaskCompletionSource.Create();
var promise = new UniTaskCompletionSource();
return (promise.Task, cancellationToken.RegisterWithoutCaptureExecutionContext(cancellationTokenCallback, promise));
}
static void Callback(object state)
{
var promise = (AutoResetUniTaskCompletionSource)state;
var promise = (UniTaskCompletionSource)state;
promise.TrySetResult();
}

View File

@@ -91,7 +91,7 @@ namespace Cysharp.Threading.Tasks
{
readonly Queue<T> items;
readonly SingleConsumerUnboundedChannelReader readerSource;
AutoResetUniTaskCompletionSource completedTaskSource;
UniTaskCompletionSource completedTaskSource;
UniTask completedTask;
Exception completionError;
@@ -208,7 +208,7 @@ namespace Cysharp.Threading.Tasks
return parent.completedTask;
}
parent.completedTaskSource = AutoResetUniTaskCompletionSource.Create();
parent.completedTaskSource = new UniTaskCompletionSource();
return parent.completedTaskSource.Task;
}
}

View File

@@ -36,11 +36,11 @@ namespace Cysharp.Threading.Tasks.Linq
public UniTask<bool> MoveNextAsync()
{
var tcs = AutoResetUniTaskCompletionSource<bool>.Create();
var tcs = new UniTaskCompletionSource<bool>();
cancellationToken.Register(state =>
{
var task = (AutoResetUniTaskCompletionSource<bool>)state;
var task = (UniTaskCompletionSource<bool>)state;
task.TrySetCanceled(cancellationToken);
}, tcs);

View File

@@ -18,13 +18,13 @@ namespace Cysharp.Threading.Tasks
#endif
/// <summary>This CancellationToken is canceled when the GameObject will be destroyed.</summary>
/// <summary>This CancellationToken is canceled when the MonoBehaviour will be destroyed.</summary>
public static CancellationToken GetCancellationTokenOnDestroy(this GameObject gameObject)
{
return gameObject.GetAsyncDestroyTrigger().CancellationToken;
}
/// <summary>This CancellationToken is canceled when the Component will be destroyed.</summary>
/// <summary>This CancellationToken is canceled when the MonoBehaviour will be destroyed.</summary>
public static CancellationToken GetCancellationTokenOnDestroy(this Component component)
{
#if UNITY_2022_2_OR_NEWER

View File

@@ -16,11 +16,11 @@ namespace Cysharp.Threading.Tasks
/// </summary>
public static UniTask<T> AsUniTask<T>(this Task<T> task, bool useCurrentSynchronizationContext = true)
{
var promise = AutoResetUniTaskCompletionSource<T>.Create();
var promise = new UniTaskCompletionSource<T>();
task.ContinueWith((x, state) =>
{
var p = (AutoResetUniTaskCompletionSource<T>)state;
var p = (UniTaskCompletionSource<T>)state;
switch (x.Status)
{
@@ -46,11 +46,11 @@ namespace Cysharp.Threading.Tasks
/// </summary>
public static UniTask AsUniTask(this Task task, bool useCurrentSynchronizationContext = true)
{
var promise = AutoResetUniTaskCompletionSource.Create();
var promise = new UniTaskCompletionSource();
task.ContinueWith((x, state) =>
{
var p = (AutoResetUniTaskCompletionSource)state;
var p = (UniTaskCompletionSource)state;
switch (x.Status)
{

View File

@@ -11,7 +11,7 @@ namespace Cysharp.Threading.Tasks
{
public static UniTask<T> ToUniTask<T>(this IObservable<T> source, bool useFirstValue = false, CancellationToken cancellationToken = default)
{
var promise = AutoResetUniTaskCompletionSource<T>.Create();
var promise = new UniTaskCompletionSource<T>();
var disposable = new SingleAssignmentDisposable();
var observer = useFirstValue
@@ -109,7 +109,7 @@ namespace Cysharp.Threading.Tasks
{
static readonly Action<object> callback = OnCanceled;
readonly IPromise<T> promise;
readonly UniTaskCompletionSource<T> promise;
readonly SingleAssignmentDisposable disposable;
readonly CancellationToken cancellationToken;
readonly CancellationTokenRegistration registration;
@@ -117,7 +117,7 @@ namespace Cysharp.Threading.Tasks
bool hasValue;
T latestValue;
public ToUniTaskObserver(IPromise<T> promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken)
public ToUniTaskObserver(UniTaskCompletionSource<T> promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken)
{
this.promise = promise;
this.disposable = disposable;
@@ -180,14 +180,14 @@ namespace Cysharp.Threading.Tasks
{
static readonly Action<object> callback = OnCanceled;
readonly IPromise<T> promise;
readonly UniTaskCompletionSource<T> promise;
readonly SingleAssignmentDisposable disposable;
readonly CancellationToken cancellationToken;
readonly CancellationTokenRegistration registration;
bool hasValue;
public FirstValueToUniTaskObserver(IPromise<T> promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken)
public FirstValueToUniTaskObserver(UniTaskCompletionSource<T> promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken)
{
this.promise = promise;
this.disposable = disposable;

View File

@@ -2,7 +2,7 @@
"name": "com.cysharp.unitask",
"displayName": "UniTask",
"author": { "name": "Cysharp, Inc.", "url": "https://cysharp.co.jp/en/" },
"version": "2.5.10",
"version": "2.5.11",
"unity": "2018.4",
"description": "Provides an efficient async/await integration to Unity.",
"keywords": [ "async/await", "async", "Task", "UniTask" ],