| 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Setup Ccache |
| uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20 |
| with: |
| key: ${{ github.job }}-${{ runner.os }}-${{ runner.arch }} |
| - name: Install Dependencies |
| run: | |
| sudo apt-get update |
| sudo apt-get install \ |
| gcc \ |
| gobject-introspection \ |
| gtk-doc-tools \ |
| libcairo2-dev \ |
| libfreetype6-dev \ |
| libgirepository1.0-dev \ |
| libglib2.0-dev \ |
| libgraphite2-dev \ |
| libicu-dev \ |
| pkg-config \ |
| help2man |
| - name: Setup Python |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.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 \ |
| -Dchafa=disabled \ |
| -Dgraphite=enabled \ |
| -Dkbts=enabled \ |
| -Doptimization=2 \ |
| -Ddoc_tests=true \ |
| -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: Generate Documentations |
| run: ninja -Cbuild harfbuzz-doc |
| - name: Deploy Documentations |
| if: github.ref_type == 'tag' |
| run: .ci/deploy-docs.sh |
| env: |
| GH_TOKEN: ${{ secrets.DOCS_PUSH_TOKEN }} |
| REVISION: ${{ github.sha }} |
| - name: Archive artifacts |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 |
| 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 |
| - name: Download artifacts |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 |
| 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 |