Repository navigation
118 lines (100 loc) · 3.42 KB
/
Copy pathrelease.yml
File metadata and controls
118 lines (100 loc) · 3.42 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
name: Release
on:
push:
tags:
- "v*"
release:
types:
- published
- released
- prereleased
- edited
workflow_dispatch:
inputs:
release_tag:
description: "Existing release tag to build and publish, for example v1.1.5"
required: false
type: string
permissions:
contents: write
jobs:
build-windows-installer:
runs-on: windows-latest
steps:
- name: Determine target reference
id: target
shell: pwsh
run: |
$inputTag = "${{ github.event.inputs.release_tag }}".Trim()
$releaseTag = "${{ github.event.release.tag_name }}".Trim()
$ref = "${{ github.ref }}".Trim()
$refName = "${{ github.ref_name }}".Trim()
$targetRef = ""
$targetTag = ""
if ($inputTag) {
$targetRef = $inputTag
$targetTag = $inputTag
} elseif ($releaseTag) {
$targetRef = $releaseTag
$targetTag = $releaseTag
} elseif ($ref -like "refs/tags/*") {
$targetRef = $ref
$targetTag = $refName
} elseif ($ref) {
$targetRef = $ref
$targetTag = ""
} else {
$targetRef = "main"
$targetTag = ""
}
Write-Host "Target ref for checkout: $targetRef"
Write-Host "Target tag for release: $targetTag"
"ref=$targetRef" >> $env:GITHUB_OUTPUT
"tag=$targetTag" >> $env:GITHUB_OUTPUT
- name: Check out repository
uses: actions/checkout@v4
with:
ref: ${{ steps.target.outputs.ref }}
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
- name: Show workflow source revision
shell: pwsh
run: |
Write-Host "github.event_name=${{ github.event_name }}"
Write-Host "github.ref=${{ github.ref }}"
Write-Host "github.sha=${{ github.sha }}"
Write-Host "input.release_tag=${{ github.event.inputs.release_tag }}"
Write-Host "release.tag_name=${{ github.event.release.tag_name }}"
Write-Host "target.outputs.ref=${{ steps.target.outputs.ref }}"
Write-Host "target.outputs.tag=${{ steps.target.outputs.tag }}"
git rev-parse HEAD
git log -1 --oneline
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt pytest pyinstaller
- name: Install Inno Setup
run: choco install innosetup --no-progress -y
- name: Run test suite
run: python -m pytest -q
- name: Validate translation integrity
run: python -m i18n check
- name: Build Windows installer
shell: pwsh
run: powershell -ExecutionPolicy Bypass -File .\scripts\build_installer.ps1
- name: Upload installer artifact
uses: actions/upload-artifact@v4
with:
name: windows-installer
path: dist/installer/AiteCommander-Setup-*.exe
if-no-files-found: error
- name: Publish GitHub release asset
if: steps.target.outputs.tag != ''
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.target.outputs.tag }}
files: dist/installer/AiteCommander-Setup-*.exe
generate_release_notes: true