From 444af768fce926fb801986a5782acd6dd4d9ab87 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Tue, 13 Jan 2026 23:53:44 -0800 Subject: [PATCH] Migrate gen-gh-pages from Travis CI to GitHub Actions - Add GitHub Actions workflow using peaceiris/actions-gh-pages - Update README.org badge and documentation to reference GitHub Actions - Simplify compile.sh for local use (removes Travis-specific evm setup) - Mark deploy.sh as deprecated (workflow handles deployment now) - Remove deploy_key.enc (no longer needed, uses GITHUB_TOKEN) Co-Authored-By: Claude Opus 4.5 --- .github/workflows/gh-pages.yml | 54 ++++++++++++++++++++++++ dotfiles/emacs.d/README.org | 9 ++-- gen-gh-pages/compile.sh | 23 ++++++---- gen-gh-pages/deploy.sh | 75 ++++----------------------------- gen-gh-pages/deploy_key.enc | Bin 1680 -> 0 bytes 5 files changed, 82 insertions(+), 79 deletions(-) create mode 100644 .github/workflows/gh-pages.yml delete mode 100644 gen-gh-pages/deploy_key.enc diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 00000000..452e2ef4 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,54 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Emacs + uses: purcell/setup-emacs@master + with: + version: 29.1 + + - name: Setup Cask + uses: conao3/setup-cask@master + with: + version: snapshot + + - name: Install dependencies + working-directory: gen-gh-pages + run: cask install + + - name: Generate HTML + working-directory: gen-gh-pages + run: | + cask exec emacs --script generate-html.el + mv ../dotfiles/emacs.d/README.html ./index.html + + - name: Deploy to GitHub Pages + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./gen-gh-pages + publish_branch: gh-pages + user_name: 'github-actions[bot]' + user_email: 'github-actions[bot]@users.noreply.github.com' + commit_message: 'Deploy to GitHub Pages: ${{ github.sha }}' + keep_files: false diff --git a/dotfiles/emacs.d/README.org b/dotfiles/emacs.d/README.org index c0ff7d4d..bbd34266 100644 --- a/dotfiles/emacs.d/README.org +++ b/dotfiles/emacs.d/README.org @@ -1,6 +1,6 @@ # -*- mode: org; -*- -[[https://travis-ci.org/IvanMalison/dotfiles][ -file:https://travis-ci.org/IvanMalison/dotfiles.svg?branch=master]] +[[https://github.com/IvanMalison/dotfiles/actions/workflows/gh-pages.yml][ +file:https://github.com/IvanMalison/dotfiles/actions/workflows/gh-pages.yml/badge.svg?branch=master]] This document is best read at [[http://ivanmalison.github.io/dotfiles/]] or, of course, in emacs, as the internal links that follow are unlikely to work @@ -17,9 +17,10 @@ These sections are the ones that have the most potential to be interesting to others: ** How I generate http://ivanmalison.github.io/dotfiles/ *** org-export -**** travis-ci +**** GitHub Actions [[https://github.com/IvanMalison/dotfiles/tree/master/gen-gh-pages][This directory]] contains a collection of scripts that export this org document -to html. This approach is taken (with only a few modifications) from [[https://gist.github.com/domenic/ec8b0fc8ab45f39403dd][here]]. +to html. A [[https://github.com/IvanMalison/dotfiles/blob/master/.github/workflows/gh-pages.yml][GitHub Actions workflow]] runs on every push to master, generating the +HTML and deploying it to GitHub Pages. **** githook (The old way) NOTE: I've left this here in case other people have an interest in this method, but I no longer use it. diff --git a/gen-gh-pages/compile.sh b/gen-gh-pages/compile.sh index 37eda32a..2be0eb86 100755 --- a/gen-gh-pages/compile.sh +++ b/gen-gh-pages/compile.sh @@ -1,20 +1,25 @@ #!/usr/bin/env bash +# Local compilation script for generating HTML from README.org +# Note: For CI, this is now handled by GitHub Actions (.github/workflows/gh-pages.yml) + +set -e -export PATH="$HOME/.cask/bin:$HOME/.evm/bin:$PATH" THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -TARGET=$(readlink -f "$THIS_DIR/../dotfiles/emacs.d/README.org") +# Use system emacs or EMACS environment variable +EMACS="${EMACS:-emacs}" -git clone https://github.com/rejeep/evm.git "$HOME/.evm" -evm config path /tmp -evm install emacs-25.1-travis --use --skip -export EMACS="$(evm bin)" +cd "$THIS_DIR" -git clone https://github.com/cask/cask -export PATH=$(pwd)/cask/bin:$PATH +# Install cask dependencies if needed +if [ ! -d ".cask" ]; then + cask install +fi -cask install +# Generate HTML cask exec "$EMACS" --script generate-html.el +# Move the generated file mv "$THIS_DIR/../dotfiles/emacs.d/README.html" . +echo "Generated README.html in $THIS_DIR" diff --git a/gen-gh-pages/deploy.sh b/gen-gh-pages/deploy.sh index fa641073..d5816d02 100755 --- a/gen-gh-pages/deploy.sh +++ b/gen-gh-pages/deploy.sh @@ -1,68 +1,11 @@ #!/usr/bin/env bash -# This approach was adapted from https://gist.github.com/domenic/ec8b0fc8ab45f39403dd +# DEPRECATED: This script was used for Travis CI deployments. +# Deployment is now handled by GitHub Actions (.github/workflows/gh-pages.yml) +# +# This script is kept for reference only. +# See: https://github.com/IvanMalison/dotfiles/blob/master/.github/workflows/gh-pages.yml -THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -cd $THIS_DIR - -git config --global user.name "$COMMIT_AUTHOR_NAME" -git config --global user.email "$COMMIT_AUTHOR_EMAIL" - -set -e # Exit with nonzero exit code if anything fails - -SOURCE_BRANCH="master" -TARGET_BRANCH="gh-pages" - -function doCompile { - ./compile.sh -} - -# Pull requests and commits to other branches shouldn't try to deploy, just build to verify -if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then - echo "Skipping deploy; just doing a build." - doCompile - exit 0 -fi - -# Save some useful information -REPO=`git config remote.origin.url` -SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:} -SHA=`git rev-parse --verify HEAD` - -# Run our compile script -doCompile - -# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc -ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key" -ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv" -ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR} -ENCRYPTED_IV=${!ENCRYPTED_IV_VAR} - -openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in deploy_key.enc -out deploy_key -d -chmod 600 deploy_key -eval `ssh-agent -s` -ssh-add deploy_key - -# Clone the existing gh-pages for this repo into out/ -# Create a new empty branch if gh-pages doesn't exist yet (should only happen on first deply) -git clone $REPO out -cd out -git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH - -# Clean out existing contents -git ls-files | xargs rm -rf - -mv ../README.html ./index.html - -# Commit the "changes", i.e. the new version. -# The delta will show diffs between new and old versions. -git add --all . -git commit -m "Deploy to GitHub Pages: ${SHA}" - -git fetch origin master - -if [ "$(git rev-parse origin/master)" == "$SHA" ]; then - git push "$SSH_REPO" "$TARGET_BRANCH" -else - echo "The commit this build was started for is not the one on master. Doing nothing." -fi +echo "ERROR: This script is deprecated." +echo "Deployment is now handled by GitHub Actions." +echo "See: .github/workflows/gh-pages.yml" +exit 1 diff --git a/gen-gh-pages/deploy_key.enc b/gen-gh-pages/deploy_key.enc deleted file mode 100644 index 96c9fe9627213cf91488c4b46d69d603594bc530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmV;B25`eh4!L$@v!PSQV#%C z^Ee;yk#pu)+1&?g-0lAZ0~^^rW$&|-sQxsD`ue4<+oUm)I8>X@iR@0AFn^{6L7wJ>H~U9S@h@ctI2nTgk&(gfurpEa2>^^d`;=$ge?YYw+}d2gFO?Ovuv z#G589cR+q?jq`zf$}b$%mG57MzeaCz!5fW} z+kOir&C;%)KOR*;^}Tmfl6!6)Pwmg1;su@~QSTsh>Z2M{7FGz#CH9hqvIOeUnZ0y% zE=LFIjQjs_W-hXPeE)%CGH~Z z;v*}g(p=zg&fgY-V4vf7osii>0%qGcg;Uo|k+s5HsYJC_qdlrMffx=6_?B?%0;%Wr z2rt71sS&Fi*T8Uv>+LlxCX?#iNte6b!pfwI?nXOn&WjK6UVSSw$`^I&rW8hw`HTo5 zZzD5}vP=pc;ul!W{q4n~Yqa>XJ{&r?LQIa-zIF24o$Onw+Ih8x;DBR6@iRtlNSZjhIkT5iSq$1{KU7Sx6w!HN2_xkn0+8Mg zR>o65q|9x$p6(M@{;!lk_yuk<&04REo%-iVLC8S#_6CSs)xK$EE5B2?XN}^_MUQO{ zF8S?n9A7_rNPdA^1`^hb<{S?r%Cmn30J(ZB`V=5S!m@6jq2~zX)SB?L?Yb9~|CFM~UN53(VQn0>xIOE<90>O2d2| z!0-ibB=asNq}5G9<{kSh1%-|HmDhu$Bm_R4=i&)XD-WLzx;L~G%?SCGX z%Oro#*oQP?^H}fCFGaF4*`o28*qvk@)VV}LF0#6+i}i-wQ4=2|-htcJ4FVQ;N_~Kd z^QZND{?-R=Jq)e9&b7xKL)mY1f=p8WG5I-Aw(JU(V`8w3$iWgI{oNw(0_m6Q(8s*) zhx=(yH&x!^-@&gq4y)T+LY_Qr=B?NT1Ylp3m-P{Y9vws;jB>U7l=|RZZPPa_K{aXw z=vK~{r1u|@B-=4_yg~y^{rQw^GUAJAWz&mW;Hw}YhxB^qe7E{T1$f-lHmiJvJCllO;I6E0KE`UlAOxs?r`9v`>(M7>Cmm zT5LUxm&H>NoCNgbTO1p!a4k&xTKGvjx}$Hnm_lMzs-@r*yYs+o*WiMJnU|Muuy_{1 z;Kc&026L&Fk*KMl=6_>x)-5*_v}ky&F;r4sDtFy4IKGe`Ofd~eER1^s3a)}n^VLf_ z@YdtW;_P4ApaT$8cTP2hy7kZ4K5>||N6~p!yZuo+asS0~yKHg=OL2e|04HT3MCo%$ z%;#e6^+9w+WLBH)D_^IcvZ>|GLJQf#BCyyX?1&_Xs|f`S@YQUOyX)mGs)PDVZW-7% z>3_&%EJA;3iP`5uSr@9+>I~L9E-=#2BYT-y~d>44J#U^SQsDm_rpaZ zXpl`?2>}F2Zm~)d;^!JMUKP;;4Wv$)mlsy5I=zdqzxVbn4r7Sk4xy{^;a6bvooll% zQ&sR&Z7G2=5?a