Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
February 23, 2022 08:26 pm GMT

How to publish ExDocs on GitHub Pages

GitHub Pages allows you to publish static files, but it doesn't allow you to generate these. This is a problem if want to generate ExDocs for a private package or generate a static website with a web framework like Angular.

The only way to have static files published on GitHub Pages is to put them on the repo, either in /docs or in a branch named gh-pages. Let's do this using GitHub Actions.

SSH key

Generating a new SSH key will allow you to push change to your Git repository from a GitHub Action. We'll use this to generate ExDocs and push them whenever there's a push on master.

ssh-keygen -t ed25519 -C "gh-pages"

Deploy key

A deploy key is an SSH key that grants access to a single repository. GitHub attaches the public part of the key directly to your repository instead of a personal user account, and the private part of the key remains on your server.

Add the public key to the Deploy keys in /settings/keys.

Deploy Key

Action secrets

Secrets are environment variables that are encrypted. Anyone with
collaborator access to this repository can use these secrets for Actions.

Add the private key to the Repository secrets in /settings/secrets/actions.

Repository Secrets

GitHub Action

With this setup, your GitHub Actions now have the ability to modify the repository. Depending on weather you want to put the docs in /docs or in gh-pages, the steps will be very similar.

Elixir GitHub Action

Using a GitHub Action, we'll execute these steps:

  1. Generate ExDocs in /doc
  2. Initialize a Git repository in /doc
  3. Link this new local repo to your repository
  4. Force push the whole directory to gh-pages

Here's an example of the GitHub Actions file.

name: GitHub Pageson:  push:    branches: [master]jobs:  build:    name: Push to gh-pages    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v2      - name: Set up Elixir        uses: erlef/setup-beam@988e02bfe678367a02564f65ca2e37726dc0268f        with:          elixir-version: "1.13.3" # Define the elixir version [required]          otp-version: "24" # Define the OTP version [required]      - name: Restore dependencies cache        uses: actions/cache@v2        with:          path: deps          key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}          restore-keys: ${{ runner.os }}-mix-      - name: Install dependencies        run: mix deps.get      - name: Force push to gh-pages        run: |          # Generate docs          mix docs          # Setup          cd doc          git init --initial-branch gh-pages          git remote add origin $ORIGIN          git config user.name "$NAME"          git config user.email "$EMAIL"          eval `ssh-agent -s`          ssh-add - <<< '${{ secrets.GH_PAGES_SSH }}'          # Push          git add .          git commit -m "mix docs"          git push --set-upstream origin gh-pages -f

In this file, you'll have to replace the variables $NAME, $EMAIL and $ORIGIN.

Once it's commited to master, the GitHub Pages will be automatically deployed!


Original Link: https://dev.to/natoboram/how-to-publish-exdocs-on-github-pages-1kn2

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To