diff --git a/.github/workflows/haddock-pages.yml b/.github/workflows/haddock-pages.yml deleted file mode 100644 index 9b434e5..0000000 --- a/.github/workflows/haddock-pages.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Publish API docs - -on: [push, pull_request, workflow_dispatch] - -env: - HADDOCK_DIR: haddock-html - PAGES_DIR: gh-pages - -jobs: - - haddock: - runs-on: ubuntu-20.04 - steps: - - - name: Set up haskell - uses: haskell/actions/setup@v1 - with: - ghc-version: '9.0.1' - cabal-version: '3.4' - - - name: Checkout repository content - uses: actions/checkout@v2 - - - name: Prepare cabal cache - uses: actions/cache@v2 - env: - cache-name: cache-cabal - with: - path: ~/.cabal - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - name: Prepare cabal - run: cabal update - - - name: Generate haddock API docs - run: cabal haddock --builddir=haddock_build - - - name: Find generated HTML - run: mv $(find haddock_build -wholename '*doc/html/trivialini' | head -n 1) $HADDOCK_DIR - - - name: Store generated API docs - uses: actions/upload-artifact@v2 - with: - path: ${{ env.HADDOCK_DIR }} - name: haddock-html - - deploy-pages: - needs: haddock - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-20.04 - steps: - - - name: Load API docs - uses: actions/download-artifact@v2 - with: - name: haddock-html - path: ${{ env.PAGES_DIR }} - - - name: Disable GitHub Pages' Jekyll - run: touch $PAGES_DIR/.nojekyll - - - name: Deploy to GitHub Pages - uses: crazy-max/ghaction-github-pages@v2 - with: - target_branch: gh-pages - build_dir: ${{ env.PAGES_DIR }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test-apidocs.yml similarity index 66% rename from .github/workflows/test.yml rename to .github/workflows/test-apidocs.yml index 76de060..0a6226b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test-apidocs.yml @@ -1,9 +1,9 @@ -name: Build and test +name: Build, Test, API Docs on: [push, workflow_dispatch] jobs: - test: + build_test_docs: name: GHC ${{ matrix.ghc-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: @@ -49,9 +49,35 @@ jobs: - name: Run tests run: cabal test --test-show-details=streaming + - name: Build API docs + run: cabal haddock --builddir=haddock_build --haddock-hyperlinked-source --haddock-html-location='https://hackage.haskell.org/package/$pkg-$version/docs' + - name: Save cached dependencies uses: actions/cache/save@v3 if: ${{ steps.cache.outputs.cache-primary-key != steps.cache.outputs.cache-matched-key }} with: path: ${{ steps.setup.outputs.cabal-store }} key: ${{ steps.cache.outputs.cache-primary-key }} + + - name: Collect generated API docs + run: mv $(find haddock_build -wholename '*doc/html/trivialini' | head -n 1) haddock_html + + - name: Store generated API docs as artifact + uses: actions/upload-artifact@v2 + with: + path: haddock_html + + deploy_docs: + needs: build_test_docs + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deploy.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deploy + uses: actions/deploy-pages@v2 diff --git a/README.md b/README.md index c9432c6..bcda3a3 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,7 @@ **Ultra light weight ini file parser, written in Haskell** -[![Build and test](https://github.com/memowe/trivialini/actions/workflows/test.yml/badge.svg)](https://github.com/memowe/trivialini/actions/workflows/test.yml) -[![Publish API docs](https://github.com/memowe/trivialini/actions/workflows/haddock-pages.yml/badge.svg)](https://github.com/memowe/trivialini/actions/workflows/haddock-pages.yml) +[![Test & API Docs pipeline](https://github.com/memowe/trivialini/actions/workflows/test-apidocs.yml/badge.svg)](https://github.com/memowe/trivialini/actions/workflows/test-apidocs.yml) [![API docs](https://img.shields.io/badge/Haddock-Documentation-8a80a8?style=flat&logo=haskell&logoColor=lightgray)](https://mirko.westermeier.de/trivialini/Trivialini.html) ## Overview