Repository navigation
135 lines (113 loc) · 4.6 KB
/
Copy pathrelease.yml
File metadata and controls
135 lines (113 loc) · 4.6 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
name: Build and Release Percy Local Manager
on:
push:
tags:
- "v*.*.*"
permissions:
contents: write
jobs:
build:
name: Build distributables
runs-on: ubuntu-latest
steps:
# ------------------------------------------------------
# Checkout
# ------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v4
# ------------------------------------------------------
# Setup Go
# ------------------------------------------------------
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: "1.24"
# ------------------------------------------------------
# Setup Node
# ------------------------------------------------------
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
# ------------------------------------------------------
# Make build script executable & Build
# ------------------------------------------------------
- name: Make build script executable
run: chmod +x build-distributables.sh
- name: Build distributables
run: ./build-distributables.sh
# ------------------------------------------------------
# Verify output
# ------------------------------------------------------
- name: Verify distributables
run: |
echo "=========================================="
echo "Checking distributables"
echo "=========================================="
find Distributables -maxdepth 3 -type f | sort
echo
echo "Checking Linux..."
test -f Distributables/percy-linux/server
test -f Distributables/percy-linux/server.sh
test -f Distributables/percy-linux/Instruction.md
echo
echo "Checking Mac..."
test -f Distributables/percy-mac/server
test -f Distributables/percy-mac/server-arm64
test -f Distributables/percy-mac/server.sh
test -f Distributables/percy-mac/Instructions.md
echo
echo "Checking Windows..."
test -f Distributables/percy-windows/server.exe
test -f Distributables/percy-windows/server.bat
test -f Distributables/percy-windows/Instructions.md
echo
echo "Checking Extension..."
test -d Distributables/percy-local-manager-extension
echo
echo "✅ All distributables verified"
# ------------------------------------------------------
# Prepare release folders (Creates the exact tree structure)
# ------------------------------------------------------
- name: Prepare release packages
run: |
mkdir -p release/percy-linux
mkdir -p release/percy-mac
mkdir -p release/percy-windows
# Linux
cp -R Distributables/percy-linux/. release/percy-linux/
cp -R Distributables/percy-local-manager-extension release/percy-linux/
# Mac
cp -R Distributables/percy-mac/. release/percy-mac/
cp -R Distributables/percy-local-manager-extension release/percy-mac/
# Windows
cp -R Distributables/percy-windows/. release/percy-windows/
cp -R Distributables/percy-local-manager-extension release/percy-windows/
# ------------------------------------------------------
# Package into ZIPs
# ------------------------------------------------------
- name: Package Distributables
run: |
cd release
# Zipping the folders from the outside creates the root folder in the zip
zip -r ../percy-linux.zip percy-linux
zip -r ../percy-mac.zip percy-mac
zip -r ../percy-windows.zip percy-windows
# ------------------------------------------------------
# Show ZIPs
# ------------------------------------------------------
- name: Show release files
run: |
ls -lh percy-linux.zip percy-mac.zip percy-windows.zip
# ------------------------------------------------------
# Create Unified Release (Fixes the "Latest" link issue)
# ------------------------------------------------------
- name: Create Unified Release
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release create \
"${{ github.ref_name }}" \
percy-linux.zip percy-mac.zip percy-windows.zip \
--title "Percy Local Manager ${{ github.ref_name }}" \
--notes "Percy Local Manager for Linux, macOS, and Windows."