-
Notifications
You must be signed in to change notification settings - Fork 74
148 lines (130 loc) · 5.2 KB
/
main.yml
File metadata and controls
148 lines (130 loc) · 5.2 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
148
name: CI
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: windows-2022
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Step to check if the commit message contains #GITBUILD
- name: Check Commit Message
shell: powershell
run: |
# Get the commit message
$strVal = '${{ github.event.commits[0].message }}'
# Convert commit message to a single line if multiline
$singleLineStrVal = $strVal -replace "`r`n", " " -replace "`n", " "
if ($singleLineStrVal -match '#GITBUILD') {
Write-Host 'Build commit detected. Proceeding with build...'
echo "build_trigger=true" >> $env:GITHUB_ENV
} else {
Write-Host 'No build commit. Skipping build steps...'
echo "build_trigger=false" >> $env:GITHUB_ENV
}
# Step to ensure the repository is checked out
- uses: actions/checkout@v2
# Inform if build steps are skipped
- name: Inform Skipped Build Steps
if: env.build_trigger != 'true'
shell: powershell
run: |
Write-Host "Skipping build steps because the commit message does not contain #GITBUILD."
# Install 7Zip PowerShell module
- name: Install 7Zip PowerShell Module
if: env.build_trigger == 'true'
shell: powershell
run: Install-Module 7Zip4PowerShell -Force -Verbose
# Restore NuGet packages
- name: Restore NuGet packages
if: env.build_trigger == 'true'
run: nuget restore UnityLauncherPro.sln
# Build the binary
- name: Build Binary
if: env.build_trigger == 'true'
shell: cmd
run: call .\Build.cmd
# Build the artifact
- name: Build Artifact
if: env.build_trigger == 'true'
shell: cmd
run: call .\ArtifactBuild.cmd
# Bump version for installer
- name: Bump Installer Version
if: env.build_trigger == 'true'
shell: cmd
run: call .\InstallerBumpVersion.bat
# Build MSI installer project using Visual Studio 2022 workaround
- name: Build Installer MSI
if: env.build_trigger == 'true'
shell: cmd
run: call .\BuildInstaller.bat
# Get the current date and time
- name: Get current date and time
id: datetime
if: env.build_trigger == 'true' # Only run if build was triggered
run: |
# Save the current date and time to an environment variable
echo "current_datetime=$(date +'%d/%m/%Y %H:%M')" >> $GITHUB_ENV
# Step to get previous tag and commits
- name: Get commits since last release
id: get_commits
if: env.build_trigger == 'true' # Only run if build was triggered
shell: bash
run: |
# Get the most recent tag
PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")
if [ "$PREV_TAG" = "none" ]; then
echo "No previous tag found, listing all commits"
COMMITS=$(git log --pretty=format:"* %s" --no-merges)
else
echo "Previous tag: $PREV_TAG"
# List commits since last tag
COMMITS=$(git log $PREV_TAG..HEAD --pretty=format:"* %s" --no-merges)
fi
# Save commits to the environment
echo "commits=$COMMITS" >> $GITHUB_ENV
# Create a release
- name: Create Release
id: create_release
if: env.build_trigger == 'true' # Execute only if build was triggered
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{github.run_number}}
release_name: ${{ env.current_datetime }} (${{ github.run_number }})
body: |
Automated Release by GitHub Action CI
### Commits in this release:
${{ env.commits }}
draft: false
prerelease: false
# Upload the release asset
- name: Upload Release Asset
id: upload-release-asset
if: env.build_trigger == 'true' # Execute only if build was triggered
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./UnityLauncherPro.zip
asset_name: UnityLauncherPro.zip
asset_content_type: application/zip
# Upload MSI installer to release
- name: Upload MSI Installer
if: env.build_trigger == 'true'
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./UnityLauncherProInstaller/Release/UnityLauncherPro-Installer.msi
asset_name: UnityLauncherPro-Installer.msi
asset_content_type: application/x-msi