Repository navigation
147 lines (137 loc) · 5.53 KB
/
Copy pathbuild-release.yaml
File metadata and controls
147 lines (137 loc) · 5.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: Build-Release
on:
workflow_dispatch:
inputs:
tag:
description: "tag: git tag you want create. (sample 1.0.0)"
required: true
dry-run:
description: "dry-run: false = create release/nuget. true = never create release/nuget."
required: true
default: false
type: boolean
concurrency:
group: release
cancel-in-progress: false
jobs:
validate-release:
permissions:
contents: read
uses: Cysharp/Actions/.github/workflows/validate-release.yaml@main
with:
tag: ${{ inputs.tag }}
update-packagejson:
needs: [validate-release]
permissions:
actions: read
contents: write
uses: Cysharp/Actions/.github/workflows/update-packagejson.yaml@main
with:
file-path: |
./src/StructureOfArraysGenerator.Unity/Assets/Plugins/StructureOfArraysGenerator/package.json
tag: ${{ needs.validate-release.outputs.tag }}
dry-run: ${{ inputs.dry-run }}
build-dotnet:
needs: [validate-release, update-packagejson]
permissions:
contents: read
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- run: echo ${{ needs.update-packagejson.outputs.sha }}
- uses: Cysharp/Actions/.github/actions/checkout@main
with:
ref: ${{ needs.update-packagejson.outputs.sha }}
- uses: Cysharp/Actions/.github/actions/setup-dotnet@main
# pack nuget (.nupkg and .symbols.nupkg will be created)
- run: dotnet build -c Release -p:Version=${{ needs.validate-release.outputs.tag }}
- run: dotnet test -c Release --no-build
- run: dotnet pack -c Release --no-build -p:Version=${{ needs.validate-release.outputs.tag }} -p:IncludeSymbols=true -o ./publish
- uses: Cysharp/Actions/.github/actions/upload-artifact@main
with:
name: nuget
path: ./publish
retention-days: 1
build-unity:
needs: [validate-release, update-packagejson]
strategy:
matrix:
unity: ["2021.3.41f1"]
permissions:
contents: read
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Load secrets
id: op-load-secret
uses: 1password/load-secrets-action@581a835fb51b8e7ec56b71cf2ffddd7e68bb25e0 # v2.0.0
with:
export-env: false
env:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN_PUBLIC }}
UNITY_EMAIL: "op://${{ vars.OP_VAULT_ACTIONS_PUBLIC }}/UNITY_LICENSE/username"
UNITY_PASSWORD: "op://${{ vars.OP_VAULT_ACTIONS_PUBLIC }}/UNITY_LICENSE/credential"
UNITY_SERIAL: "op://${{ vars.OP_VAULT_ACTIONS_PUBLIC }}/UNITY_LICENSE/serial"
- run: echo ${{ needs.update-packagejson.outputs.sha }}
- uses: Cysharp/Actions/.github/actions/checkout@main
with:
ref: ${{ needs.update-packagejson.outputs.sha }}
# Execute scripts: Export Package
# /opt/Unity/Editor/Unity -quit -batchmode -nographics -silent-crashes -logFile -projectPath . -executeMethod PackageExporter.Export
- name: Build Unity (.unitypacakge)
uses: Cysharp/Actions/.github/actions/unity-builder@main
env:
UNITY_EMAIL: ${{ steps.op-load-secret.outputs.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ steps.op-load-secret.outputs.UNITY_PASSWORD }}
UNITY_SERIAL: ${{ steps.op-load-secret.outputs.UNITY_SERIAL }}
with:
projectPath: src/StructureOfArraysGenerator.Unity
unityVersion: ${{ matrix.unity }}
targetPlatform: StandaloneLinux64
buildMethod: PackageExporter.Export
# check meta files
- uses: Cysharp/Actions/.github/actions/check-metas@main # check meta files
with:
directory: src/StructureOfArraysGenerator.Unity
# Store artifacts.
- uses: Cysharp/Actions/.github/actions/upload-artifact@main
with:
name: StructureOfArraysGenerator.${{ needs.validate-release.outputs.tag }}.unitypackage
path: ./src/StructureOfArraysGenerator.Unity/StructureOfArraysGenerator.${{ needs.validate-release.outputs.tag }}.unitypackage
if-no-files-found: error
retention-days: 1
# release
create-release:
needs: [validate-release, update-packagejson, build-dotnet, build-unity]
permissions:
contents: write
uses: Cysharp/Actions/.github/workflows/create-release.yaml@main
with:
dry-run: ${{ inputs.dry-run }}
commit-id: ${{ needs.update-packagejson.outputs.sha }}
tag: ${{ needs.validate-release.outputs.tag }}
release-upload: true
release-asset-path: ./StructureOfArraysGenerator.${{ needs.validate-release.outputs.tag }}.unitypackage/StructureOfArraysGenerator.${{ needs.validate-release.outputs.tag }}.unitypackage
secrets: inherit
publish-package:
needs: [validate-release, create-release]
if: ${{ !inputs.dry-run }}
permissions:
contents: read
id-token: write # required for NuGet Trusted Publish in the calling repository
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- uses: Cysharp/Actions/.github/actions/publish-nuget@main
with:
artifact-name: nuget
user: ${{ secrets.NUGET_USER }}
version: ${{ needs.validate-release.outputs.version }}
cleanup:
if: ${{ always() && needs.update-packagejson.outputs.is-branch-created == 'true' }}
needs: [update-packagejson, create-release, publish-package]
permissions:
contents: write
uses: Cysharp/Actions/.github/workflows/clean-packagejson-branch.yaml@main
with:
branch: ${{ needs.update-packagejson.outputs.branch-name }}