mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 03:42:25 +03:00
tools: move site.sh into shake; stop running just-pushed shakefile
Running the just pushed Shake.hs was too insecure. [ci skip]
This commit is contained in:
parent
61e053bd8e
commit
7af5ee4863
6
Makefile
6
Makefile
@ -705,10 +705,14 @@ site-livereload: \
|
||||
# /etc/github-post-receive.conf
|
||||
# 2. cron, nightly. Config: /etc/crontab
|
||||
# 3. manually (make site).
|
||||
# This must use the existing Shake executable without rebuilding it,
|
||||
# as we don't want to immediately execute new code from any collaborator.
|
||||
.PHONY: site
|
||||
site: \
|
||||
$(call def-help,site, update the hledger.org website (run on prod) )
|
||||
@tools/site.sh
|
||||
@[[ ! -x Shake ]] \
|
||||
&& echo 'Please run "make Shake" first (manual compilation of Shake.hs is required)' \
|
||||
|| ./Shake hledgerorg
|
||||
|
||||
###############################################################################
|
||||
$(call def-help-subheading,RELEASING:)
|
||||
|
37
Shake.hs
37
Shake.hs
@ -24,6 +24,7 @@ tools, including:
|
||||
- makeinfo
|
||||
- pandoc
|
||||
- sed
|
||||
- GNU date (on mac: brew install coreutils)
|
||||
|
||||
Compiling this script is recommended, to ensure required packages are
|
||||
installed, minimise startup delay, and reduce sensitivity to the
|
||||
@ -77,6 +78,7 @@ usage = unlines
|
||||
,"./Shake website build the website and web manuals"
|
||||
,"./Shake website-all build the website and all web manual versions"
|
||||
,"./Shake all build all the above"
|
||||
,"./Shake hledgerorg update the hledger.org website (when run on prod)"
|
||||
,""
|
||||
,"./Shake mainpages build the web pages from the main repo"
|
||||
,"./Shake wikipages build the web pages from the wiki repo"
|
||||
@ -437,6 +439,41 @@ main = do
|
||||
"--lua-filter=tools/pandoc-toc.lua"
|
||||
"-o" out )
|
||||
|
||||
-- This rule, for updating the live hledger.org site, gets called by:
|
||||
-- 1. github-post-receive (github webhook handler), when something is pushed
|
||||
-- to the main or wiki repos on Github. Config:
|
||||
-- /etc/supervisord.conf -> [program:github-post-receive]
|
||||
-- /etc/github-post-receive.conf
|
||||
-- 2. cron, nightly. Config: /etc/crontab
|
||||
-- 3. manually (make site).
|
||||
phony "hledgerorg" $ do
|
||||
-- out1 <- fromStdout <$>
|
||||
cmd_ Shell
|
||||
-- XXX ideally we would ensure here that output is logged,
|
||||
-- but I don't know how to do that for the Shake rules.
|
||||
-- Instead we'll do the logging in "make site".
|
||||
-- -- run this sequence of commands, stopping if one fails:
|
||||
-- "("
|
||||
-- -- and log all output as well as echoing it
|
||||
-- ") 2>&1 | tee -a site.log"
|
||||
|
||||
-- print timestamp. On mac, use brew-installed GNU date.
|
||||
"echo"
|
||||
"&& PATH=\"/usr/local/opt/coreutils/libexec/gnubin:$PATH\" date --rfc-3339=seconds"
|
||||
-- pull latest wiki repo
|
||||
"&& printf 'wiki repo: ' && git -C wiki pull"
|
||||
-- pull latest main repo - sometimes already done by webhook, not always
|
||||
"&& printf 'main repo: ' && git pull"
|
||||
|
||||
-- Shake.hs might have been updated, but we won't execute the
|
||||
-- new one, too insecure. Continue with this one.
|
||||
|
||||
-- update wiki links on website front page
|
||||
need [ "site/index.md" ]
|
||||
|
||||
-- update the live site based on all latest content
|
||||
need [ "website-all" ]
|
||||
|
||||
-- HLEDGER PACKAGES/EXECUTABLES
|
||||
|
||||
phony "build" $ need packages
|
||||
|
@ -1,36 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Update website(s): hledger.org
|
||||
#
|
||||
# Called via github webhook (on push to main repo or wiki)
|
||||
# /etc/supervisord.conf -> [program:github-post-receive]
|
||||
# /etc/github-post-receive.conf
|
||||
# and via cron (nightly)
|
||||
# /etc/crontab
|
||||
# or manually (make site)
|
||||
|
||||
(\
|
||||
|
||||
echo && \
|
||||
|
||||
# print timestamp. On mac, use brew-installed GNU date.
|
||||
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" date --rfc-3339=seconds && \
|
||||
|
||||
# fetch latest code & website - sometimes already done by webhook, not always
|
||||
git pull && \
|
||||
|
||||
# fetch latest wiki content
|
||||
printf "wiki: " && git -C wiki pull && \
|
||||
|
||||
# ensure GHC can handle non-ascii
|
||||
export LANG=en_US.UTF-8 && \
|
||||
|
||||
# ensure latest Shake is built
|
||||
./Shake.hs && \
|
||||
|
||||
|
||||
# update website
|
||||
./Shake site/index.md && \
|
||||
./Shake website \
|
||||
|
||||
# print and log to:
|
||||
) 2>&1 | tee -a site.log
|
Loading…
Reference in New Issue
Block a user