Repository navigation
142 lines (124 loc) · 4.53 KB
/
Copy pathalpine.yml
File metadata and controls
142 lines (124 loc) · 4.53 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
136
137
138
139
140
141
142
name: Alpine
'on':
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
ASAN_OPTIONS: detect_odr_violation=2
CXX: clang++-22
CC: clang-22
CCACHE_DIR: /home/runner/.cache/ccache
CCACHE_NOHASHDIR: true
# Keep CPM cache on the same filesystem as the build tree. gRPC's
# download_archive uses file(RENAME) from build_debug/ into the CPM cache;
# a separate bind-mount for CPM_SOURCE_CACHE causes "Cross-device link".
CPM_SOURCE_CACHE: ${{ github.workspace }}/.cpm
jobs:
posix:
strategy:
fail-fast: false
name: alpine (build-only)
runs-on: ubuntu-24.04
env:
CMAKE_PROGRAM_PATH: /usr/lib/llvm22/bin
CMAKE_FLAGS: >-
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_CXX_STANDARD=20
-DUSERVER_USE_LD=lld
-DUSERVER_NO_WERROR=OFF
-DUSERVER_BUILD_ALL_COMPONENTS=1
-DUSERVER_BUILD_SAMPLES=1
-DUSERVER_BUILD_TESTS=1
-DUSERVER_FEATURE_JEMALLOC=OFF
-DUSERVER_FEATURE_KAFKA=OFF
-DUSERVER_FEATURE_CLICKHOUSE=OFF
-DUSERVER_FEATURE_STACKTRACE=OFF
-DUSERVER_FEATURE_PATCH_LIBPQ=OFF
-DUSERVER_FEATURE_YDB=OFF
-DUSERVER_DISABLE_RSEQ_ACCELERATION=YES
-DUSERVER_FORCE_DOWNLOAD_ABSEIL=1
-DUSERVER_FORCE_DOWNLOAD_PROTOBUF=1
-DUSERVER_FORCE_DOWNLOAD_GRPC=1
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Restore cached directories
id: restore-cache
uses: actions/cache/restore@v6
with:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: 'alpine-cache-dir ${{github.ref}} run-${{github.run_number}}'
restore-keys: |
alpine-cache-dir ${{github.ref}}
alpine-cache-dir
- name: Setup host cache dirs
run: |
mkdir -p ${{env.CCACHE_DIR}}
mkdir -p ${{env.CPM_SOURCE_CACHE}}
- name: Setup latest Alpine Linux
uses: jirutka/setup-alpine@v1
with:
volumes: |
${{env.CCACHE_DIR}}:${{env.CCACHE_DIR}}
- name: Install dependencies
shell: alpine.sh --root {0}
run: |
pwd
cat /etc/alpine-release
apk add gcc lld22 compiler-rt ccache git gdb
apk add $(cat scripts/docs/en/deps/alpine.md)
# Tell clang22 to use lld for linking
echo '-fuse-ld=lld' >> /etc/clang22/$(clang++-22 -dumpmachine).cfg
- name: Install test dependencies
shell: alpine.sh --root {0}
run: |
apk add postgresql16 \
redis \
rabbitmq-server \
- name: Setup caches
shell: alpine.sh --root {0}
run: |
echo "Cached CPM packages:"
du -h -d 1 ${{env.CPM_SOURCE_CACHE}}
for f in $(find ${{env.CPM_SOURCE_CACHE}} -name "cmake.lock");
do
repo=$(ls -d $(dirname $f)/*/);
echo "Repository: $repo";
git config --global --add safe.directory $repo;
done
ccache -M 2.0GB
ccache -s -v
- name: Run cmake
shell: alpine.sh --root {0}
run: |
pwd
cmake -S . -B build_debug $CMAKE_FLAGS
- name: Reconfigure cmake
shell: alpine.sh --root {0}
run: |
pwd
cmake -S . -B build_debug $CMAKE_FLAGS
- name: Compile
shell: alpine.sh --root {0}
run: |
cmake --build build_debug -j$(nproc)
- name: Save cached directories
uses: actions/cache/save@v6
with:
path: |
${{env.CCACHE_DIR}}
${{env.CPM_SOURCE_CACHE}}
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
- name: Show cache stats
shell: alpine.sh {0}
run: |-
du -h -d 1 ${{env.CCACHE_DIR}}
du -h -d 1 ${{env.CPM_SOURCE_CACHE}}
ccache -s -v