Skip to content

Commit a4e716a

Browse files
committed
initial release
0 parents  commit a4e716a

File tree

3 files changed

+197
-0
lines changed

3 files changed

+197
-0
lines changed

.github/workflows/build-w7.yml

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
name: Build latest for Windows 7
2+
run-name: Check latest TorrServer release and build with go1.21.4 for Windows 7 🚀
3+
permissions:
4+
contents: write
5+
on:
6+
schedule:
7+
# Every day at 15:30 UTC
8+
- cron: 30 15 * * *
9+
workflow_dispatch:
10+
11+
env:
12+
TS_REPO_NAME: ${{ vars.REPO_VAR__SOURCE_REPO }}
13+
W7_REPO_NAME: ${{ github.repository }}
14+
15+
jobs:
16+
check_build_needed:
17+
name: "Check if new build needed"
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Get latest ${{ env.TS_REPO_NAME }} release tag
21+
id: get_ts_release_tag
22+
run: |
23+
echo "ts_release_tag=$(curl -s https://api.github.com/repos/$TS_REPO_NAME/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> "$GITHUB_ENV"
24+
- name: Get latest ${{ env.W7_REPO_NAME }} release tag
25+
run: echo "w7_release_tag=$(curl -s https://api.github.com/repos/$W7_REPO_NAME/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> "$GITHUB_ENV"
26+
- name: Decide that there is a need to compile a new release
27+
run: |
28+
echo "is_needed_build=${{ ((env.w7_release_tag == '') || (env.w7_release_tag == 'null') || (env.w7_release_tag != env.ts_release_tag)) && 'TRUE' || 'FALSE' }}" >> "$GITHUB_ENV"
29+
- name: Export variables
30+
id: export_vars
31+
run: |
32+
echo "is_needed_build=$is_needed_build" >> "$GITHUB_OUTPUT"
33+
echo "ts_release_tag=$ts_release_tag" >> "$GITHUB_OUTPUT"
34+
echo "w7_release_tag=$w7_release_tag" >> "$GITHUB_OUTPUT"
35+
36+
echo "ts_repo_name: $TS_REPO_NAME"
37+
echo "w7_repo_name: $W7_REPO_NAME"
38+
echo "Need build: $is_needed_build"
39+
echo "TS release tag: $ts_release_tag"
40+
echo "W7 release tag: $w7_release_tag"
41+
42+
outputs:
43+
is_needed_build: ${{ steps.export_vars.outputs.is_needed_build }}
44+
ts_release_tag: ${{ steps.export_vars.outputs.ts_release_tag }}
45+
46+
print_data_and_check:
47+
name: "Print data"
48+
needs: check_build_needed
49+
runs-on: ubuntu-latest
50+
env:
51+
is_needed_build: ${{ needs.check_build_needed.outputs.is_needed_build }}
52+
ts_release_tag: ${{ needs.check_build_needed.outputs.ts_release_tag }}
53+
steps:
54+
- name: Print data
55+
run: |
56+
echo "is_needed_build=$is_needed_build"
57+
echo "ts_release_tag=$ts_release_tag"
58+
- name: Fail on empty TS_RELEASE_TAG
59+
if: ${{ env.ts_release_tag == '' }}
60+
run: |
61+
echo "::error ::TS_RELEASE_TAG ($ts_release_tag) is EMPTY"
62+
exit 1
63+
- name: Succeed on IS_NEED_BUILD is TRUE
64+
if: ${{ env.is_needed_build != 'TRUE' }}"
65+
run: |
66+
echo "::notice ::IS_NEED_BUILD is TRUE"
67+
outputs:
68+
is_needed_build: ${{ env.is_needed_build }}
69+
ts_release_tag: ${{ env.ts_release_tag }}
70+
71+
build_release:
72+
name: "Build release"
73+
needs: print_data_and_check
74+
runs-on: ubuntu-latest
75+
env:
76+
is_needed_build: ${{ needs.print_data_and_check.outputs.is_needed_build }}
77+
ts_release_tag: ${{ needs.print_data_and_check.outputs.ts_release_tag }}
78+
if: ${{ needs.print_data_and_check.outputs.is_needed_build == 'TRUE'}}
79+
steps:
80+
- name: Check out latest release
81+
uses: actions/checkout@v4
82+
with:
83+
repository: ${{ env.TS_REPO_NAME }}
84+
ref: ${{ env.ts_release_tag }}
85+
lfs: true
86+
submodules: true
87+
path: torrserver
88+
- name: Install node
89+
uses: actions/setup-node@v4
90+
with:
91+
node-version: '18.19.0'
92+
- name: Install Go
93+
uses: actions/setup-go@v5
94+
with:
95+
go-version: '1.21.4'
96+
- name: Install Yarn
97+
run: |
98+
npm install --global yarn
99+
- name: Install modules
100+
working-directory: ./torrserver/web
101+
run: |
102+
npm install
103+
- name: Install swag
104+
run: |
105+
go install github.com/swaggo/swag/cmd/swag@latest
106+
- name: Run swag
107+
working-directory: ./torrserver/server
108+
run: |
109+
$HOME/go/bin/swag init -g web/server.go
110+
$HOME/go/bin/swag fmt
111+
- name: Build web
112+
run: |
113+
NODE_OPTIONS=--openssl-legacy-provider yarn build
114+
working-directory: ./torrserver/web
115+
- name: Remove non-windows platforms
116+
working-directory: ./torrserver
117+
run: |
118+
sed -i -r "/^\s+\x27(linux|darwin|freebsd)\/\S+\x27\s*$/d" ./build-all.sh
119+
sed -i -r "/^\s+\x22\S+:\S+linux-android\S+\x22\s*$/d" ./build-all.sh
120+
- name: Build TorrServer
121+
working-directory: ./torrserver
122+
run: |
123+
chmod +x ./build-all.sh
124+
./build-all.sh
125+
- name: Create release
126+
id: create_release
127+
env:
128+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
129+
uses: softprops/action-gh-release@v1
130+
with:
131+
name: ${{ env.ts_release_tag }} for Windows 7
132+
tag_name: ${{ env.ts_release_tag }}
133+
draft: false
134+
prerelease: false
135+
files: |
136+
./torrserver/dist/*.exe
137+
body: |
138+
${{ env.ts_release_tag }} для Windows 7
139+
Эта сборка выполнена автоматически и предоставляется AS-IS.
140+
Скрипт сборки вы можете найти в репозитории.
141+
142+
Начиная с go1.21.5 приложения, собранные с его помощью, не запускаются в Windows 7.
143+
Поддержка Windows 7 прекращена с go1.21.
144+
С помощью go1.20 уже нельзя собрать TorrServer.
145+
146+
Таким образом, неизвестно, как долго получится поддерживать
147+
сборку с помощью go1.21.4, последней совместимой с Windows 7.
148+
149+
This is automated daily build and provided AS-IS
150+
fail_on_unmatched_files: true
151+
generate_release_notes: false
152+
- run: echo "Finished"

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[![en](https://img.shields.io/badge/lang-en-gray.svg)](/README.md)
2+
[![ru](https://img.shields.io/badge/lang-ru-blue.svg)](/README.ru.md)
3+
4+
## TorrServer for Windows 7
5+
Original project repository: [TorrServer](https://github.com/YouROK/TorrServer)
6+
7+
This repository only autobuilds [TorrServer](https://github.com/YouROK/TorrServer) releases using legacy go1.21.4 for Windows.
8+
9+
This assembly is fully automated and provided by AS-IS.<br>
10+
You can find the build script in the repository.<br>
11+
Build starts 15:30 UTC daily (18:30 MSK).
12+
13+
<hr>
14+
15+
Starting with go1.21.5, applications built using it do not run on Windows 7.<br>
16+
TorrServer Matrix.129 is already built using go1.21.6 and it does not run on Windows 7.
17+
18+
Support for Windows 7 ended with go1.21.0, but applications still worked up to version 1.21.4 inclusive.<br>
19+
TorrServer uses components only available in go1.21.
20+
21+
Thus, it is unknown how long it will be possible to support the build using go1.21.4, the latest compatible with Windows 7.

README.ru.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
[![en](https://img.shields.io/badge/lang-en-blue.svg)](/README.md)
2+
[![ru](https://img.shields.io/badge/lang-ru-gray.svg)](/README.ru.md)
3+
4+
5+
## TorrServer для Windows 7
6+
Оригинальный репозиторий проекта: [TorrServer](https://github.com/YouROK/TorrServer)
7+
8+
В этом репозитории происходит только автоматическая сборка релизов [TorrServer](https://github.com/YouROK/TorrServer) с помощью устаревшего go1.21.4 для Windows.
9+
10+
Сборка выполняется автоматически и предоставляется AS-IS.<br>
11+
Скрипт сборки вы можете найти в репозитории.<br>
12+
Сборка производится ежедневно в 15:30 UTC (18:30 по Москве).
13+
14+
<hr>
15+
16+
Начиная с go1.21.5 приложения, собранные с его помощью, не запускаются в Windows 7.<br>
17+
TorrServer Matrix.129 уже собран с помощью go1.21.6 и он не запускается на Windows 7.
18+
19+
Поддержка Windows 7 прекращена с go1.21.0, но до версии 1.21.4 включительно приложения все-таки работали.<br>
20+
В TorrServer используются компоненты, доступные только в go1.21.
21+
22+
Таким образом, неизвестно, как долго получится поддерживать сборку с помощью go1.21.4, последней совместимой с Windows 7.
23+
24+

0 commit comments

Comments
 (0)