Add support for including and linking existing h3 on mac (#937) #274
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ubuntu | |
on: | |
push: | |
branches: | |
- master | |
env: | |
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: jammy | |
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 | |
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.*') }} | |
- 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}} --volume $GITHUB_WORKSPACE:${{env.kphp_root_dir}} kphp-build-img-${{matrix.os}} | |
- name: Change repo rights | |
run: docker exec kphp-build-container-${{matrix.os}} bash -c | |
"chown -R kitten ${{env.kphp_root_dir}}" | |
- name: Build all | |
run: docker exec -u kitten 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 -u kitten kphp-build-container-${{matrix.os}} bash -c | |
"make -C ${{env.kphp_build_dir}} -j$(nproc) test" | |
- name: Compile dummy PHP script | |
run: docker exec -u kitten 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" | |
- name: Polyfills composer install | |
run: docker exec -u kitten kphp-build-container-${{matrix.os}} bash -c | |
"composer install -d ${{env.kphp_polyfills_dir}}" | |
- name: Remove docker container | |
run: docker rm -f kphp-build-container-${{matrix.os}} |