-
Notifications
You must be signed in to change notification settings - Fork 56
131 lines (117 loc) · 4.19 KB
/
build_linux_x86_64.yml
File metadata and controls
131 lines (117 loc) · 4.19 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
name: Linux x86_64
on:
push:
# branches:
# - 'master'
# - 'main'
# - 'dev'
paths-ignore:
- '.gitignore'
- '.gitattributes'
- '**.txt'
- '**.md'
- '**.rc'
pull_request:
branches:
- 'master'
- 'main'
- 'dev'
jobs:
linux-x86_64:
runs-on: ubuntu-24.04
permissions:
contents: read
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install prerequisites
run: |
lsb_release -d
sudo add-apt-repository universe && sudo sudo apt-get -qq update
sudo apt-get install -yq --no-install-recommends \
ninja-build gcc-12 g++-12 \
ccache \
mariadb-client libmariadb-dev
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 90 --slave /usr/bin/g++ g++ /usr/bin/g++-12
- name: Set up ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{github.job}}
- name: Configure ccache
run: ccache --set-config sloppiness="include_file_mtime, include_file_ctime, time_macros, pch_defines"
- name: Report building tools
run: |
echo "GCC:" && gcc -v
echo "Default Linker:" && ld -v
echo && echo "CMake:" && cmake --version
echo && echo "Ninja:" && ninja --version
- name: CMake
run: |
mkdir -p build
cmake -G "Ninja" -DCMAKE_BUILD_TYPE="Nightly" \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/Linux-GNU-x86_64.cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fpch-preprocess" \
-DCMAKE_CXX_FLAGS="-fpch-preprocess" \
-S ./ -B ./build
- name: Ninja
run: ninja -C build -v
- name: Create package
run: |
mkdir accounts logs save scripts
tar -czf SphereSvrX-linux-x86_64-nightly.tar.gz accounts/ logs/ save/ scripts/ -C build/bin-x86_64/ SphereSvrX64_nightly -C ../../src sphere.ini sphereCrypt.ini
# Upload artifact linked to the workflow run - only if the run is for a pull request, or for selected branches
- name: Upload artifact
if: contains(fromJson('["master", "main", "dev"]'), github.ref_name) || github.event_name == 'pull_request'
uses: actions/upload-artifact@v7
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: Build-linux-x86_64
path: SphereSvrX-linux-x86_64-nightly.tar.gz
overwrite: true
upload_github_release:
needs: linux-x86_64
# Upload artifact linked to GitHub RELEASE we are creating - only if the run is for a pull request, or for selected branches
if: contains(fromJson('["master", "main"]'), github.ref_name)
permissions:
contents: write
actions: read
runs-on: ubuntu-latest
steps:
- name: Download builds
uses: actions/download-artifact@v8
with:
name: Build-linux-x86_64
merge-multiple: true
run-id: ${{ github.run_id }}
- name: Create release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: Nightly
tag_name: Nightly
prerelease: true
files: SphereSvrX-linux-x86_64-nightly.tar.gz
upload_selfhost_release:
needs: linux-x86_64
if: contains(fromJson('["master", "main"]'), github.ref_name) && (github.repository == 'SphereServer/Source-X')
permissions:
contents: write
actions: read
runs-on: ubuntu-latest
steps:
- name: Download builds
uses: actions/download-artifact@v8
with:
name: Build-linux-x86_64
merge-multiple: true
run-id: ${{ github.run_id }}
- name: Push release
run: |
curl -sST "{SphereSvrX-linux-x86_64-nightly.tar.gz}" -u ${{secrets.UP_USER}}:${{secrets.UP_PASS}} ${{secrets.UP_WHERE}}
curl -sST "{SphereSvrX-linux-x86_64-nightly.tar.gz}" --ftp-pasv --ssl --ssl-reqd -u '${{secrets.FTP_USER}}:${{secrets.FTP_PASS}}' ${{secrets.FTP_LOC}}/release/prod/