diff options
author | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/.github/workflows | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/.github/workflows')
-rw-r--r-- | meson/.github/workflows/cygwin.yml | 96 | ||||
-rw-r--r-- | meson/.github/workflows/file_format.yml | 17 | ||||
-rw-r--r-- | meson/.github/workflows/images.yml | 62 | ||||
-rw-r--r-- | meson/.github/workflows/lint_mypy.yml | 47 | ||||
-rw-r--r-- | meson/.github/workflows/macos.yml | 98 | ||||
-rw-r--r-- | meson/.github/workflows/msys2.yml | 104 | ||||
-rw-r--r-- | meson/.github/workflows/nonative.yml | 38 | ||||
-rw-r--r-- | meson/.github/workflows/os_comp.yml | 129 | ||||
-rw-r--r-- | meson/.github/workflows/unusedargs_missingreturn.yml | 74 | ||||
-rw-r--r-- | meson/.github/workflows/website.yml | 47 |
10 files changed, 712 insertions, 0 deletions
diff --git a/meson/.github/workflows/cygwin.yml b/meson/.github/workflows/cygwin.yml new file mode 100644 index 000000000..224f82d41 --- /dev/null +++ b/meson/.github/workflows/cygwin.yml @@ -0,0 +1,96 @@ +name: cygwin + +concurrency: + group: cygwin-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/cygwin.yml" + - "run*tests.py" + pull_request: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/cygwin.yml" + - "run*tests.py" + +jobs: + test: + runs-on: windows-latest + name: ${{ matrix.NAME }} + strategy: + fail-fast: false + matrix: + include: + - NAME: gccx64ninja + ARCH: x86_64 + + steps: + # cache should be saved on failure, but the action doesn't support that + # https://github.com/actions/cache/issues/92 + - uses: actions/cache@v1 + with: + # should use 'pip3 cache dir' to discover this path + path: C:\cygwin\home\runneradmin\.cache\pip + key: cygwin-pip-${{ github.run_number }} + restore-keys: cygwin-pip- + + - run: git config --global core.autocrlf input + + - uses: actions/checkout@v2 + + - uses: cygwin/cygwin-install-action@master + with: + platform: ${{ matrix.ARCH }} + packages: | + cmake + gcc-fortran + gcc-objc++ + gcc-objc + git + gobject-introspection + gtk-doc + libboost-devel + libglib2.0-devel + libgtk3-devel + libxml2-devel + libxslt-devel + ninja + python2-devel + python3-devel + python3-libxml2 + python3-libxslt + python38-pip + python38-wheel + vala + zlib-devel + + - name: Run pip + run: | + export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32 + python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-xdist coverage codecov + shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}' + + - name: Run tests + run: | + export PATH=/usr/bin:/usr/local/bin:$(cygpath ${SYSTEMROOT})/system32 + python3 ./tools/run_with_cov.py run_tests.py --backend=ninja + env: + # Cygwin's static boost installation is broken (some static library + # variants such as boost_thread are not present) + SKIP_STATIC_BOOST: 1 + shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}' + + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.NAME }} + path: meson-test-run.* + # test log should be saved on failure + if: ${{ !cancelled() }} + + - name: Upload coverage report + run: ./ci/upload_cov.sh "${{ matrix.NAME }}" diff --git a/meson/.github/workflows/file_format.yml b/meson/.github/workflows/file_format.yml new file mode 100644 index 000000000..278fb297d --- /dev/null +++ b/meson/.github/workflows/file_format.yml @@ -0,0 +1,17 @@ +name: File format check + +on: [push, pull_request] + +concurrency: + group: file_fmt-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - run: python3 ./run_format_tests.py diff --git a/meson/.github/workflows/images.yml b/meson/.github/workflows/images.yml new file mode 100644 index 000000000..9c11f4d2d --- /dev/null +++ b/meson/.github/workflows/images.yml @@ -0,0 +1,62 @@ +name: CI image builder + +concurrency: + group: img_builder-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + branches: + - master + paths: + - 'ci/ciimage/**' + - '.github/workflows/images.yml' + + pull_request: + branches: + - master + paths: + - 'ci/ciimage/**' + - '.github/workflows/images.yml' + + # Rebuild the images every week (Sunday) + schedule: + - cron: '0 0 * * 0' + +jobs: + build: + env: + HAS_DOCKER_CREDENTIALS: ${{ secrets.DOCKER_PASSWORD != '' }} + name: ${{ matrix.cfg.name }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + cfg: + - { name: Arch Linux, id: arch } + - { name: CUDA (on Arch), id: cuda } + - { name: Fedora, id: fedora } + - { name: OpenSUSE, id: opensuse } + - { name: Ubuntu Bionic, id: bionic } + - { name: Ubuntu Rolling, id: ubuntu-rolling } + steps: + - uses: actions/checkout@v2 + + # Login to dockerhub + - name: Docker login + if: (github.event_name == 'push' || github.event_name == 'schedule') && env.HAS_DOCKER_CREDENTIALS == 'true' + uses: azure/docker-login@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # Build and test + - name: Building the ${{ matrix.cfg.id }} image + run: ./ci/ciimage/build.py -t build ${{ matrix.cfg.id }} + - name: Testing the ${{ matrix.cfg.id }} image + run: ./ci/ciimage/build.py -t test ${{ matrix.cfg.id }} + + # Publish + - name: Push the ${{ matrix.cfg.id }} image + run: docker push mesonbuild/${{ matrix.cfg.id }} + if: (github.event_name == 'push' || github.event_name == 'schedule') && env.HAS_DOCKER_CREDENTIALS == 'true' diff --git a/meson/.github/workflows/lint_mypy.yml b/meson/.github/workflows/lint_mypy.yml new file mode 100644 index 000000000..195d733de --- /dev/null +++ b/meson/.github/workflows/lint_mypy.yml @@ -0,0 +1,47 @@ +name: LintMypy + +concurrency: + group: mypy-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + paths: + - "**.py" + - ".github/workflows/lint_mypy.yml" + pull_request: + paths: + - "**.py" + - ".github/workflows/lint_mypy.yml" + +jobs: + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + # pylint version constraint can be removed when https://github.com/PyCQA/pylint/issues/3524 is resolved + - run: python -m pip install pylint==2.4.4 + - run: pylint mesonbuild + + custom_lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - run: python ./run_custom_lint.py + + mypy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - run: python -m pip install mypy + - run: python run_mypy.py diff --git a/meson/.github/workflows/macos.yml b/meson/.github/workflows/macos.yml new file mode 100644 index 000000000..90fc56b61 --- /dev/null +++ b/meson/.github/workflows/macos.yml @@ -0,0 +1,98 @@ +name: macos + +concurrency: + group: macos-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/macos.yml" + - "run_unittests.py" + pull_request: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/macos.yml" + - "run_unittests.py" + +jobs: + unittests-appleclang: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - run: | + python -m pip install --upgrade pip + python -m pip install pytest pytest-xdist jsonschema coverage codecov + - run: brew install pkg-config ninja llvm qt@5 + - env: + CPPFLAGS: "-I/usr/local/include" + LDFLAGS: "-L/usr/local/lib" + MESON_UNIT_TEST_BACKEND: ninja + # These cannot evaluate anything, so we cannot set PATH or SDKROOT here + run: | + export SDKROOT="$(xcodebuild -version -sdk macosx Path)" + export PATH="$HOME/tools:/usr/local/opt/qt@5/bin:$PATH:$(brew --prefix llvm)/bin" + export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH" + ./tools/run_with_cov.py ./run_unittests.py + - name: Upload coverage report + run: ./ci/upload_cov.sh "appleclang [unit tests]" + + + project-tests-appleclang: + runs-on: macos-latest + strategy: + matrix: + unity: ["on", "off"] + steps: + - uses: actions/checkout@v2 + # use python3 from homebrew because it is a valid framework, unlike the actions one: + # https://github.com/actions/setup-python/issues/58 + - run: brew install pkg-config ninja llvm qt@5 boost ldc hdf5 openmpi lapack scalapack sdl2 python3 + - run: | + python3 -m pip install --upgrade setuptools + python3 -m pip install --upgrade pip + python3 -m pip install cython coverage codecov + - env: + CPPFLAGS: "-I/usr/local/include" + LDFLAGS: "-L/usr/local/lib" + MESON_ARGS: --unity=${{ matrix.unity }} + CI: 1 + # These cannot evaluate anything, so we cannot set PATH or SDKROOT here + run: | + export SDKROOT="$(xcodebuild -version -sdk macosx Path)" + export PATH="$HOME/tools:/usr/local/opt/qt@5/bin:$PATH:$(brew --prefix llvm)/bin" + export PKG_CONFIG_PATH="/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH" + ./tools/run_with_cov.py ./run_project_tests.py --backend=ninja + - name: Upload coverage report + run: ./ci/upload_cov.sh "appleclang [project tests; unity=${{ matrix.unity }}]" + + Qt4macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - run: python -m pip install -e . + - run: brew install pkg-config ninja gcc + - run: brew tap cartr/qt4 + - run: brew install qt@4 + - run: meson setup "test cases/frameworks/4 qt" build -Drequired=qt4 + - run: meson compile -C build + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Qt4_Mac_build + path: build/meson-logs/meson-log.txt + - run: meson test -C build -v + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Qt4_Mac_test + path: build/meson-logs/testlog.txt diff --git a/meson/.github/workflows/msys2.yml b/meson/.github/workflows/msys2.yml new file mode 100644 index 000000000..f0cfa5d28 --- /dev/null +++ b/meson/.github/workflows/msys2.yml @@ -0,0 +1,104 @@ +name: msys2 + +concurrency: + group: msys2-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/msys2.yml" + - "run_unittests.py" + pull_request: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/msys2.yml" + - "run_unittests.py" + +jobs: + test: + runs-on: windows-2019 + name: ${{ matrix.NAME }} + strategy: + fail-fast: false + matrix: + include: + - NAME: gccx86ninja + MSYSTEM: MINGW32 + MSYS2_ARCH: i686 + MSYS2_CURSES: ncurses + COMPILER: gcc + TOOLCHAIN: toolchain + - NAME: gccx64ninja + MSYSTEM: MINGW64 + MSYS2_ARCH: x86_64 + MSYS2_CURSES: pdcurses + COMPILER: gcc + TOOLCHAIN: toolchain + - NAME: clangx64ninja + MSYSTEM: MINGW64 + MSYS2_ARCH: x86_64 + MSYS2_CURSES: + COMPILER: clang + TOOLCHAIN: clang + + defaults: + run: + shell: msys2 {0} + + steps: + - uses: actions/checkout@v2 + + - uses: msys2/setup-msys2@v2 + with: + msystem: ${{ matrix.MSYSTEM }} + update: true + install: >- + base-devel + git + mercurial + lcov + mingw-w64-${{ matrix.MSYS2_ARCH }}-cmake + mingw-w64-${{ matrix.MSYS2_ARCH }}-glib2 + mingw-w64-${{ matrix.MSYS2_ARCH }}-libxml2 + mingw-w64-${{ matrix.MSYS2_ARCH }}-ninja + mingw-w64-${{ matrix.MSYS2_ARCH }}-pkg-config + mingw-w64-${{ matrix.MSYS2_ARCH }}-python2 + mingw-w64-${{ matrix.MSYS2_ARCH }}-python + mingw-w64-${{ matrix.MSYS2_ARCH }}-python-lxml + mingw-w64-${{ matrix.MSYS2_ARCH }}-python-setuptools + mingw-w64-${{ matrix.MSYS2_ARCH }}-python-pip + mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.TOOLCHAIN }} + + - name: Install dependencies + run: | + python3 -m pip --disable-pip-version-check install gcovr jsonschema pefile pytest pytest-xdist coverage codecov + + - name: Run Tests + run: | + export BOOST_ROOT= + export PATHEXT="$PATHEXT;.py" + + if [[ '${{ matrix.COMPILER }}' == 'clang' ]]; then + export CC=clang + export CXX=clang++ + export OBJC=clang + export OBJCXX=clang++ + fi + + if [[ "${{ matrix.MSYS2_CURSES }}" != "" ]]; then + pacman --noconfirm --needed -S mingw-w64-${{ matrix.MSYS2_ARCH }}-${{ matrix.MSYS2_CURSES }} + fi + + MSYSTEM= python3 ./tools/run_with_cov.py run_tests.py --backend=ninja + + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.NAME }} + path: meson-test-run.* + + - name: Upload coverage report + run: ./ci/upload_cov.sh "${{ matrix.NAME }}" diff --git a/meson/.github/workflows/nonative.yml b/meson/.github/workflows/nonative.yml new file mode 100644 index 000000000..4adffbe14 --- /dev/null +++ b/meson/.github/workflows/nonative.yml @@ -0,0 +1,38 @@ +name: Cross-only compilation environment + +concurrency: + group: nonative-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + branches: + - master + # Stable branches such as 0.56 or the eventual 1.0 + - '[0-9]+.[0-9]+' + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/nonative.yml" + - "run*tests.py" + pull_request: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/nonative.yml" + - "run*tests.py" + +jobs: + cross-only-armhf: + runs-on: ubuntu-latest + container: mesonbuild/eoan:latest + steps: + - run: | + apt-get -y purge clang gcc gdc + apt-get -y autoremove + python3 -m pip install coverage codecov + - uses: actions/checkout@v2 + - name: Run tests + run: bash -c 'source /ci/env_vars.sh; cd $GITHUB_WORKSPACE; ./tools/run_with_cov.py ./run_tests.py $CI_ARGS --cross ubuntu-armhf.json --cross-only' + - name: Upload coverage report + run: ./ci/upload_cov.sh "Ubuntu nonnative" diff --git a/meson/.github/workflows/os_comp.yml b/meson/.github/workflows/os_comp.yml new file mode 100644 index 000000000..fd716ce8d --- /dev/null +++ b/meson/.github/workflows/os_comp.yml @@ -0,0 +1,129 @@ +name: linux + +concurrency: + group: linux-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + branches: + - master + # Stable branches such as 0.56 or the eventual 1.0 + - '[0-9]+.[0-9]+' + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/images.yml" + - ".github/workflows/os_comp.yml" + - "run_unittests.py" + pull_request: + paths: + - "mesonbuild/**" + - "test cases/**" + - ".github/workflows/images.yml" + - ".github/workflows/os_comp.yml" + - "run_unittests.py" + +jobs: + arch: + name: ${{ matrix.cfg.name }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + cfg: + - { name: Arch Linux, id: arch } + - { name: CUDA (on Arch), id: cuda } + - { name: Fedora, id: fedora } + - { name: OpenSUSE, id: opensuse } + - { name: Ubuntu Bionic, id: bionic } + container: mesonbuild/${{ matrix.cfg.id }}:latest + env: + MESON_CI_JOBNAME: linux-${{ matrix.cfg.id }}-gcc + + steps: + - uses: actions/checkout@v2 + - name: Run tests + # All environment variables are stored inside the docker image in /ci/env_vars.sh + # They are defined in the `env` section in each image.json. CI_ARGS should be set + # via the `args` array ub the image.json + run: bash -c 'source /ci/env_vars.sh; cd $GITHUB_WORKSPACE; ./tools/run_with_cov.py ./run_tests.py $CI_ARGS' + - name: Upload coverage report + run: ./ci/upload_cov.sh "OS Comp [${{ matrix.cfg.name }}]" + + ubuntu-rolling: + name: 'Ubuntu Rolling' + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + cfg: + - CC: 'gcc' + CXX: 'g++' + - MESON_ARGS: '--unity=on -Ddefault_library=static' + RUN_TESTS_ARGS: '--no-unittests' + CC: 'gcc' + CXX: 'g++' + - MESON_ARGS: '-Ddefault_library=both' + RUN_TESTS_ARGS: '--no-unittests' + CC: 'gcc' + CXX: 'g++' + - CC: 'clang' + CXX: 'clang++' + - MESON_ARGS: '--unity=on' + RUN_TESTS_ARGS: '--no-unittests' + CC: 'clang' + CXX: 'clang++' + - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json' + MESON_RSP_THRESHOLD: '0' + CC: 'gcc' + CXX: 'g++' + - RUN_TESTS_ARGS: '--cross ubuntu-armhf.json --cross linux-mingw-w64-64bit.json' + MESON_ARGS: '--unity=on' + CC: 'gcc' + CXX: 'g++' + + env: + MESON_CI_JOBNAME_UPDATE: linux-${{ github.job }}-${{ matrix.cfg.CC }} + + container: + image: mesonbuild/ubuntu-rolling + env: + MESON_RSP_THRESHOLD: ${{ matrix.cfg.MESON_RSP_THRESHOLD }} + MESON_ARGS: ${{ matrix.cfg.MESON_ARGS }} + RUN_TESTS_ARGS: ${{ matrix.cfg.RUN_TESTS_ARGS }} + CC: ${{ matrix.cfg.CC }} + CXX: ${{ matrix.cfg.CXX }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run tests + shell: bash + run: | + export HOME=/root + + export CC=$CC + export CXX=$CXX + export OBJC=$CC + export OBJCXX=$CXX + export PATH=$(pwd)/tools:$PATH + if test "$MESON_RSP_THRESHOLD" != "" + then + export MESON_RSP_THRESHOLD=$MESON_RSP_THRESHOLD + fi + + source /ci/env_vars.sh + export MESON_CI_JOBNAME=$MESON_CI_JOBNAME_UPDATE + + update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix + update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix + update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix + update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix + + ./tools/run_with_cov.py ./run_tests.py $RUN_TESTS_ARGS -- $MESON_ARGS + + - name: Upload coverage report + run: ./ci/upload_cov.sh "Ubuntu [${{ matrix.cfg.CC }} ${{ matrix.cfg.RUN_TESTS_ARGS }} ${{ matrix.cfg.MESON_ARGS }}]" diff --git a/meson/.github/workflows/unusedargs_missingreturn.yml b/meson/.github/workflows/unusedargs_missingreturn.yml new file mode 100644 index 000000000..f5cf76c23 --- /dev/null +++ b/meson/.github/workflows/unusedargs_missingreturn.yml @@ -0,0 +1,74 @@ +name: UnusedMissingReturn +# this workflow checks for +# * unused input arguments +# * missing return values +# * strict prototypes +# some users have default configs that will needlessly fail Meson self-tests due to these syntax. +env: + CFLAGS: "-Werror=unused-parameter -Werror=return-type -Werror=strict-prototypes" + CPPFLAGS: "-Werror=unused-parameter -Werror=return-type" + FFLAGS: "-fimplicit-none" + +concurrency: + group: unusedargs-${{ github.head_ref }} + cancel-in-progress: true + +on: + push: + paths: + - ".github/workflows/unusedargs_missingreturn.yml" + - "test cases/cmake/**" + - "test cases/common/**" + - "test cases/fortran/**" + - "test cases/linuxlike/**" + - "test cases/objc/**" + - "test cases/objcpp/**" + - "test caes/windows/**" + + pull_request: + paths: + - ".github/workflows/unusedargs_missingreturn.yml" + - "test cases/cmake/**" + - "test cases/common/**" + - "test cases/fortran/**" + - "test cases/linuxlike/**" + - "test cases/objc/**" + - "test cases/objcpp/**" + - "test caes/windows/**" + +jobs: + + linux: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + - name: Install Compilers + run: | + sudo apt update -yq + sudo apt install -yq --no-install-recommends g++ gfortran ninja-build gobjc gobjc++ + python -m pip install coverage codecov + - run: ./tools/run_with_cov.py run_project_tests.py --only cmake common fortran platform-linux "objective c" "objective c++" + - name: Upload coverage report + run: ./ci/upload_cov.sh "UnusedMissingReturn" + + windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - run: pip install ninja pefile coverage codecov + + - run: python ./tools/run_with_cov.py run_project_tests.py --only platform-windows + env: + CC: gcc + CXX: g++ + FC: gfortran + + - name: Upload coverage report + run: ./ci/upload_cov.sh "UnusedMissingReturn Windows" diff --git a/meson/.github/workflows/website.yml b/meson/.github/workflows/website.yml new file mode 100644 index 000000000..efb7fed7e --- /dev/null +++ b/meson/.github/workflows/website.yml @@ -0,0 +1,47 @@ +name: Update website + +concurrency: + group: mesonbuild.com + # We do NOT want `cancel-in-progress` here since only one website job + # should run at a time to avoid upload race condtions. + +on: + push: + branches: + - master + paths: + - docs/** + workflow_dispatch: + +jobs: + update_website: + env: + HAS_SSH_KEY: ${{ secrets.WEBSITE_PRIV_KEY != '' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install package + run: | + sudo apt-get -y install python3-pip ninja-build libjson-glib-dev + pip install meson hotdoc + - name: Setup SSH Keys and known_hosts + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + run: | + ssh-agent -a $SSH_AUTH_SOCK > /dev/null + ssh-add - <<< "${{ secrets.WEBSITE_PRIV_KEY }}" + if: env.HAS_SSH_KEY == 'true' + - name: Build website + run: | + git config --global user.name "github-actions" + git config --global user.email "github-actions@github.com" + cd docs + meson setup _build + ninja -C _build + - name: Update website + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + run: | + cd docs + ninja -C _build upload + if: env.HAS_SSH_KEY == 'true' |