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 }}
0 commit comments