add new line #448
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: debian | |
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: buster | |
compiler: g++ | |
cpp: 17 | |
asan: off | |
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}} \ | |
--cache-from=type=local,src=kphp-build-img-${{matrix.os}}-cache | |
docker tag kphp-build-img-${{matrix.os}} kphp-build-img-${{matrix.os}}-cache | |
docker save kphp-build-img-${{matrix.os}}-cache -o kphp-build-env-${{matrix.os}}.tar | |
- 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}}-cache | |
docker cp $GITHUB_WORKSPACE/. kphp-build-container-${{matrix.os}}:${{env.kphp_root_dir}} | |
- 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}} |