-
Notifications
You must be signed in to change notification settings - Fork 91
195 lines (160 loc) · 7.25 KB
/
Build.yml
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
name: build
on:
pull_request:
branches:
- master
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: true
HOMEBREW_NO_INSTALL_FROM_API: ""
kphp_root_dir: /home/kitten/kphp
kphp_polyfills_dir: /home/kitten/kphp/kphp-polyfills
kphp_build_dir: /home/kitten/kphp/build
jobs:
# build-linux:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# include:
# - os: buster
# compiler: g++
# cpp: 17
# asan: off
# ubsan: off
# - os: focal
# compiler: clang++
# cpp: 17
# asan: off
# ubsan: on
# - os: focal
# compiler: g++-10
# cpp: 20
# asan: on
# ubsan: off
# - os: jammy
# compiler: g++
# cpp: 20
# asan: on
# ubsan: off
# name: "${{matrix.os}}/${{matrix.compiler}}/c++${{matrix.cpp}}/asan=${{matrix.asan}}/ubsan=${{matrix.ubsan}}"
# steps:
# - uses: actions/checkout@v3
# - name: Get polyfills repo
# uses: actions/checkout@v3
# with:
# repository: 'VKCOM/kphp-polyfills'
# path: 'kphp-polyfills'
# - name: Cache docker image
# uses: actions/cache@v3
# id: docker-image-cache
# with:
# path: kphp-build-env-${{matrix.os}}.tar
# key: docker-image-cache-${{matrix.os}}-${{ hashFiles('.github/workflows/Dockerfile.*', 'tests/python/requirements.txt') }}
# - name: Build and save docker image
# if: steps.docker-image-cache.outputs.cache-hit != 'true'
# run: |
# docker build -f $GITHUB_WORKSPACE/.github/workflows/Dockerfile.${{matrix.os}} $GITHUB_WORKSPACE -t kphp-build-img-${{matrix.os}}
# docker save --output kphp-build-env-${{matrix.os}}.tar kphp-build-img-${{matrix.os}}
# - name: Load docker image from cache
# if: steps.docker-image-cache.outputs.cache-hit == 'true'
# run: docker load --input kphp-build-env-${{matrix.os}}.tar
# - name: Start docker container
# run: |
# docker run -dt --name kphp-build-container-${{matrix.os}} kphp-build-img-${{matrix.os}}
# docker cp $GITHUB_WORKSPACE/. kphp-build-container-${{matrix.os}}:${{env.kphp_root_dir}}
# - name: Add git safe directory
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "git config --global --add safe.directory ${{env.kphp_root_dir}}"
# - name: Build all
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "cmake -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DADDRESS_SANITIZER=${{matrix.asan}} -DUNDEFINED_SANITIZER=${{matrix.ubsan}} -DPDO_DRIVER_MYSQL=ON -DPDO_DRIVER_PGSQL=ON -DPDO_LIBS_STATIC_LINKING=ON -S ${{env.kphp_root_dir}} -B ${{env.kphp_build_dir}} && make -C ${{env.kphp_build_dir}} -j$(nproc) all"
# - name: Run unit tests
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "make -C ${{env.kphp_build_dir}} -j$(nproc) test"
# - name: Compile dummy PHP script
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "cd ${{env.kphp_build_dir}} && echo 'hello world' > demo.php && ${{env.kphp_root_dir}}/objs/bin/kphp2cpp --cxx ${{matrix.compiler}} demo.php && kphp_out/server -o --user kitten"
# - name: Polyfills composer install
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "composer install -d ${{env.kphp_polyfills_dir}}"
# - name: Run python tests
# id: python_tests
# continue-on-error: true
# run: docker exec kphp-build-container-${{matrix.os}} bash -c
# "chown -R kitten /home && su kitten -c 'GITHUB_ACTIONS=1 KPHP_TESTS_POLYFILLS_REPO=${{env.kphp_polyfills_dir}} KPHP_CXX=${{matrix.compiler}} python3.7 -m pytest --tb=native -n$(nproc) ${{env.kphp_root_dir}}/tests/python/'"
# - name: Prepare python tests artifacts
# if: steps.python_tests.outcome == 'failure'
# run: docker cp kphp-build-container-${{matrix.os}}:${{env.kphp_root_dir}}/tests/python/_tmp/ ${{runner.temp}} &&
# rm -rf ${{runner.temp}}/_tmp/*/working_dir
# - name: Upload python tests artifacts
# uses: actions/upload-artifact@v3
# if: steps.python_tests.outcome == 'failure'
# with:
# path: ${{runner.temp}}/_tmp/
# - name: Fail pipeline if python tests failed
# if: steps.python_tests.outcome == 'failure'
# run: exit 1
# - name: Remove docker container
# run: docker rm -f kphp-build-container-${{matrix.os}}
install-linux:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- os: buster
compiler: g++
- os: focal
compiler: g++
- os: jammy
compiler: g++
steps:
- uses: actions/checkout@v3
- name: Build and start Docker container
run: |
docker build -f $GITHUB_WORKSPACE/.github/workflows/Dockerfile.${{matrix.os}}.install $GITHUB_WORKSPACE -t kphp-build-img-${{matrix.os}}.install
docker run -dt --name kphp-build-container-${{matrix.os}}.install kphp-build-img-${{matrix.os}}.install
- name: Run php dummy script
run: docker exec kphp-build-container-${{matrix.os}}.install bash -c
"echo 'hello world' > demo.php && kphp --mode=cli demo.php && ./kphp_out/cli"
# build-macos:
# runs-on: ${{matrix.os}}-12
# strategy:
# matrix:
# include:
# - os: macos
# compiler: clang++
# cpp: 17
# name: "${{matrix.os}}/${{matrix.compiler}}/c++${{matrix.cpp}}"
# steps:
# - uses: actions/checkout@v3
# - name: Get polyfills repo
# uses: actions/checkout@v3
# with:
# repository: 'uber/h3'
# path: 'h3'
# ref: stable-3.x
# # because of https://github.com/orgs/Homebrew/discussions/4612
# - name: Check Environment
# run: |
# export HOMEBREW_NO_INSTALL_FROM_API=0
# brew untap --force homebrew/cask
# - name: Setup Environment
# run: |
# brew tap shivammathur/php
# brew update
# brew install re2c cmake coreutils openssl libiconv re2 pcre yaml-cpp zstd googletest shivammathur/php/[email protected]
# brew link --overwrite --force shivammathur/php/[email protected]
# /usr/local/Frameworks/Python.framework/Versions/3.11/bin/pip3 install jsonschema
# - name: Build Uber h3
# run: cmake -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -S $GITHUB_WORKSPACE/h3 -B ${{runner.workspace}}/h3/build && make install -C ${{runner.workspace}}/h3/build -j$(nproc) all
# - name: Run cmake
# run: cmake -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DDOWNLOAD_MISSING_LIBRARIES=On -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build
# - name: Build all
# run: make -C ${{runner.workspace}}/build -j$(nproc) all
# - name: Run unit tests
# run: make -C ${{runner.workspace}}/build -j$(nproc) test
# - name: Compile dummy PHP script
# working-directory: ${{runner.workspace}}/build
# run: |
# echo 'hello world' > demo.php
# $GITHUB_WORKSPACE/objs/bin/kphp2cpp --cxx ${{matrix.compiler}} demo.php
# kphp_out/server -o