Skip to content

Commit

Permalink
Create a release with ebooks on push to master
Browse files Browse the repository at this point in the history
Use GitHub actions to create a release with PDF, EPUB, and MOBI files
automatically on push to master. The action can also be triggered
manually.

The commit ID will be used as tag for releases.

This action does not use GitBook, but a fork of it named HonKit.
gitbook-cli isn't maintained since 6 years, whereas honkit is a
maintained fork.
  • Loading branch information
siddhpant committed Aug 24, 2023
1 parent 859d98c commit 6656001
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions .github/workflows/generate_release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Note: Indentation here is of 2 spaces.

name: Generate release with ebooks


on:
push:
branches:
- master

workflow_dispatch: {} # For manual switch.
# End of on.


jobs:
release_ebooks:
runs-on: ubuntu-latest

permissions:
contents: write

steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
ref: master

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "latest"

# HonKit is a maintained fork of GitBook.
- name: Install honkit
run: npm install honkit -g

# APT install can take a long time due to installing dependencies,
# so we will use caching.
- name: Install calibre for ebook-convert
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: calibre

# HonKit uses highlight.js for syntax highlighting, which doesn't have
# "assembly" option, but has "x86asm". Currently, there is a better
# "x86asmatt" option in main branch but it is unreleased.
- name: Change highlighting code for honkit
run: find . -type f -name "*.md" -exec sed -i 's/```assembly/```x86asm/g' {} \;

# Create environment variables for convenience.
# GITHUB_ENV stores the env variables between steps.
- name: Get commit hash and create filename prefix
run: |
commit="$(git rev-parse --short HEAD)"
echo "commit=$commit" >> $GITHUB_ENV
echo "filename_prefix='linux-insides_$commit'" >> $GITHUB_ENV
- name: Generate PDF
run: honkit pdf ./ "./$filename_prefix.pdf"

- name: Generate EPUB
run: honkit epub ./ "./$filename_prefix.epub"

- name: Generate MOBI
run: honkit mobi ./ "./$filename_prefix.mobi"

# Create a release on GitHub.
- name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: "${{ env.filename_prefix }}.*"
generateReleaseNotes: true
allowUpdates: true
artifactErrorsFailBuild: true
tag: "${{ env.commit }}"
commit: "master"
# End of steps.
# End of release_ebooks.
# End of jobs.


# End of file.

0 comments on commit 6656001

Please sign in to comment.