name: linux on: push: branches: [ main ] tags: ["*.*.*"] pull_request: branches: [ main ] permissions: contents: read jobs: build: runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Ccache uses: hendrikmuhs/ccache-action@d62db5f07c26379fc4b4e0916f098a92573c3b03 # v1.2.23 with: key: ${{ github.job }}-${{ runner.os }}-${{ runner.arch }} - name: Install Dependencies run: | sudo apt-get update sudo apt-get install \ gcc \ gobject-introspection \ libcairo2-dev \ libchafa-dev \ libfreetype6-dev \ libgirepository1.0-dev \ libglib2.0-dev \ libgraphite2-dev \ libicu-dev \ libpng-dev \ libglew-dev \ libglfw3-dev \ libgl-dev \ pkg-config \ zlib1g-dev \ help2man - name: Setup Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.12' - name: Install Python Dependencies run: pip3 install -r .ci/requirements.txt --require-hashes - name: Setup Meson run: | ccache --version meson setup build \ -Dauto_features=enabled \ -Dgraphite=enabled \ -Dkbts=enabled \ -Doptimization=2 \ -Ddocs=disabled \ -Dragel_subproject=true - name: Build run: meson compile -Cbuild - name: Test run: meson test --print-errorlogs -Cbuild - name: Dist run: | git reset --hard HEAD # ragel may have modified the source tree meson dist --no-tests -Cbuild - name: Archive artifacts uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: harfbuzz path: build/meson-dist/harfbuzz-*.tar.xz if-no-files-found: error release: name: Create and populate release permissions: contents: write needs: build runs-on: ubuntu-24.04 if: contains(github.ref, 'refs/tags/') env: GH_TOKEN: ${{ github.token }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Download artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: harfbuzz - name: Check for release id: create_release run: | if ! gh release view ${{ github.ref_name }}; then python3 src/check-release-notes.py NEWS ${{ github.ref_name }} > RELEASE_NOTES gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --notes-file RELEASE_NOTES fi - name: Populate release run: | gh release upload ${{ github.ref_name }} harfbuzz-${{ github.ref_name }}.tar.xz --clobber