From 665600187cb231180ff3fb3ebca1afdf9925c6c7 Mon Sep 17 00:00:00 2001 From: Siddh Raman Pant <25429745+siddhpant@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:18:40 +0530 Subject: [PATCH] Create a release with ebooks on push to master 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. --- .github/workflows/generate_release.yaml | 82 +++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/generate_release.yaml diff --git a/.github/workflows/generate_release.yaml b/.github/workflows/generate_release.yaml new file mode 100644 index 0000000..4c1277d --- /dev/null +++ b/.github/workflows/generate_release.yaml @@ -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.