Skip to content

Commit e53c784

Browse files
committed
Added windows workflow.
1 parent ebb78ff commit e53c784

7 files changed

Lines changed: 194 additions & 5 deletions

File tree

.github/workflows/windows.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: Windows
2+
3+
on:
4+
push:
5+
branches: ["main", "feat/pipelines"]
6+
pull_request:
7+
branches: ["main"]
8+
9+
env:
10+
BUILD_TYPE: Release
11+
BUILD_DIR: build/clang_release
12+
13+
jobs:
14+
windows-msys2:
15+
runs-on: windows-latest
16+
17+
defaults:
18+
run:
19+
shell: msys2 {0}
20+
21+
steps:
22+
- uses: actions/checkout@v6
23+
24+
- uses: msys2/setup-msys2@v2
25+
with:
26+
path-type: inherit
27+
msystem: clang64
28+
release: true
29+
install: >-
30+
make
31+
libcurl
32+
unzip
33+
git
34+
zip
35+
mingw-w64-clang-x86_64-clang
36+
mingw-w64-clang-x86_64-cmake
37+
mingw-w64-clang-x86_64-boost
38+
mingw-w64-clang-x86_64-crypto++
39+
mingw-w64-clang-x86_64-ninja
40+
mingw-w64-clang-x86_64-python
41+
mingw-w64-clang-x86_64-pugixml
42+
mingw-w64-clang-x86_64-fmt
43+
mingw-w64-clang-x86_64-libssh
44+
mingw-w64-clang-x86_64-cppwinrt
45+
46+
- name: Workspace Path Fixup
47+
run: |
48+
echo "WSPACE=$(cygpath '${{ github.workspace }}')" >> "$GITHUB_ENV"
49+
50+
- uses: actions/setup-node@v6
51+
with:
52+
node-version: 24
53+
54+
- name: Test node
55+
run: node --version && whereis node
56+
57+
- name: Run setup.sh
58+
run: |
59+
cd "${{ env.WSPACE }}" && bash setup.sh
60+
61+
- name: Configure CMake
62+
run: |
63+
cmake \
64+
-B "${{ env.WSPACE }}/${{ env.BUILD_DIR }}" \
65+
-G Ninja \
66+
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
67+
-DCMAKE_C_COMPILER=clang \
68+
-DCMAKE_CXX_COMPILER=clang++ \
69+
-DCMAKE_LINKER=lld \
70+
-DCMAKE_CXX_EXTENSIONS=on \
71+
-DNUI_ENABLE_TESTS=off \
72+
-DNUI_BUILD_EXAMPLES=off \
73+
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
74+
-DCMAKE_CXX_STANDARD=23 \
75+
-DJSON_Diagnostics=ON \
76+
-DNUI_FETCH_TRAITS=OFF \
77+
-DNUI_BUILD_XML_TOOL=ON \
78+
79+
- name: Build
80+
run: |
81+
cmake --build \
82+
"${{ env.WSPACE }}/${{ env.BUILD_DIR }}" \
83+
--config "${{ env.BUILD_TYPE }}"
84+
85+
- name: Read version information
86+
run: |
87+
VERSION_FILE="${{ env.WSPACE }}/${{ env.BUILD_DIR }}/text/version.txt"
88+
VERSION=$(sed -n '1p' "$VERSION_FILE")
89+
VERSION_CLEAN=$(sed -n '2p' "$VERSION_FILE")
90+
{
91+
echo "VERSION=$VERSION"
92+
echo "VERSION_CLEAN=$VERSION_CLEAN"
93+
} >> "$GITHUB_ENV"
94+
95+
# Output lands in ${{ env.WSPACE }}/${{ env.BUILD_DIR }}/build/install
96+
- name: Run deploy script
97+
run: |
98+
cd "${{ env.WSPACE }}" && bash scripts/deploy.sh
99+
100+
- name: Zip deployed files
101+
run: |
102+
cd "${{ env.WSPACE }}" && \
103+
zip -r "nui-sftp-windows-x86_64_${{ env.VERSION }}.zip" "${{ env.WSPACE }}/build/install"
104+
105+
- name: Upload artifacts to MEGA S4
106+
# if: github.ref == 'refs/heads/main'
107+
env:
108+
AWS_ACCESS_KEY_ID: ${{ secrets.MEGAS4ACCESS }}
109+
AWS_SECRET_ACCESS_KEY: ${{ secrets.MEGAS4KEY }}
110+
ENDPOINT: https://s3.eu-central-1.s4.mega.io
111+
FILENAME: "nui-sftp-windows-x86_64_${{ env.VERSION }}.zip"
112+
S3_PATH: "s3://nui-sftp-releases/windows/x86_64/"
113+
run: |
114+
# Check if the file exists on the remote
115+
if aws s3 ls "${{ env.S3_PATH }}${{ env.FILENAME }}" --endpoint-url ${{ env.ENDPOINT }} > /dev/null 2>&1; then
116+
echo "Error: File ${{ env.FILENAME }} already exists in S4. Aborting to prevent overwrite."
117+
exit 1
118+
fi
119+
120+
# If it doesnt exist, upload it
121+
aws s3 cp "${{ env.FILENAME }}" "${{ env.S3_PATH }}" --endpoint-url ${{ env.ENDPOINT }}

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cmake_minimum_required(VERSION 3.21)
22

3-
project(nui-sftp VERSION 0.1.0)
3+
include("${CMAKE_CURRENT_LIST_DIR}/_cmake/version.cmake")
4+
5+
project(nui-sftp VERSION "${VERSION_NON_DIRTY}" LANGUAGES CXX)
46

57
set(NUI_FETCH_ROAR OFF CACHE BOOL "Dont fetch roar, use local copy" FORCE)
68
set(NUI_FETCH_NLOHMANN_JSON OFF CACHE BOOL "Dont fetch nlohmann, use local copy" FORCE)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#pragma once
2+
3+
#define GIT_TAG "@GIT_TAG@"
4+
#define GIT_BRANCH "@GIT_BRANCH@"
5+
#define VERSION "@VERSION@"
6+
#define VERSION_NON_DIRTY "@VERSION_NON_DIRTY@"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@VERSION@
2+
@VERSION_NON_DIRTY@
3+
@GIT_BRANCH@
4+
@GIT_TAG@

_cmake/version.cmake

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
find_package(Git REQUIRED)
2+
execute_process(
3+
COMMAND
4+
"${GIT_EXECUTABLE}" rev-list --tags --max-count=1
5+
OUTPUT_VARIABLE
6+
REV_LIST
7+
OUTPUT_STRIP_TRAILING_WHITESPACE
8+
)
9+
execute_process(
10+
COMMAND
11+
"${GIT_EXECUTABLE}" describe --tags --dirty
12+
OUTPUT_VARIABLE
13+
VERSION
14+
OUTPUT_STRIP_TRAILING_WHITESPACE
15+
)
16+
execute_process(
17+
COMMAND
18+
"${GIT_EXECUTABLE}" describe --tags ${REV_LIST}
19+
OUTPUT_VARIABLE
20+
VERSION_NON_DIRTY
21+
OUTPUT_STRIP_TRAILING_WHITESPACE
22+
)
23+
24+
#if tag starts with "v" remove it
25+
if ("${VERSION}" MATCHES "^v.+")
26+
string(SUBSTRING "${VERSION}" 1 -1 VERSION)
27+
endif()
28+
if ("${VERSION_NON_DIRTY}" MATCHES "^v.+")
29+
string(SUBSTRING "${VERSION_NON_DIRTY}" 1 -1 VERSION_NON_DIRTY)
30+
endif()
31+
32+
if("${VERSION}" STREQUAL "")
33+
set(GIT_TAG "N/A")
34+
set(GIT_BRANCH "N/A")
35+
set(VERSION "0.0.0")
36+
set(VERSION_NON_DIRTY "0.0.0")
37+
else()
38+
execute_process(
39+
COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags OUTPUT_VARIABLE GIT_TAG ERROR_QUIET)
40+
execute_process(
41+
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE GIT_BRANCH)
42+
43+
string(STRIP "${GIT_TAG}" GIT_TAG)
44+
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
45+
string(STRIP "${VERSION}" VERSION)
46+
string(STRIP "${VERSION_NON_DIRTY}" VERSION_NON_DIRTY)
47+
endif()
48+
49+
configure_file(
50+
"${CMAKE_CURRENT_LIST_DIR}/configured_files/version.hpp.in"
51+
"${CMAKE_BINARY_DIR}/include/version.hpp"
52+
)
53+
configure_file(
54+
"${CMAKE_CURRENT_LIST_DIR}/configured_files/version.txt.in"
55+
"${CMAKE_BINARY_DIR}/text/version.txt"
56+
)

backend/source/backend/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,10 +367,10 @@ int main(int const argc, char const* const* argv)
367367
};
368368

369369
sigaction(SIGCHLD, &sa, nullptr);
370-
# pragma clang diagnostic pop
371-
#endif
372370

373371
setenv("WEBKIT_DISABLE_DMABUF_RENDERER", "1", 0);
372+
# pragma clang diagnostic pop
373+
#endif
374374

375375
ssh_init();
376376

work_dependencies.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
"sources": [
33
{
44
"url": "https://github.com/5cript/work-dependency-cloner.git",
5-
"rev": "3e5e3524c2bcd7747c2cf18e0eed561d79c912f4",
5+
"rev": "1b62276e6c47f408601cca8bcd69bd9d0e0b3046",
66
"branch": "main",
77
"name": "work-dependency-cloner"
88
},
99
{
1010
"url": "https://github.com/NuiCpp/Nui.git",
11-
"rev": "c51bba6c0d01980282ec4a554f0678cb31083e6e",
11+
"rev": "98189036b52addca0435e48512e83ea35ceb8367",
1212
"branch": "main",
1313
"name": "Nui"
1414
},

0 commit comments

Comments
 (0)