Merge the test tool into the deploy tool
This commit is contained in:
parent
a053c454e4
commit
b460d03c3b
4 changed files with 101 additions and 104 deletions
9
.github/workflows/ci.yml
vendored
9
.github/workflows/ci.yml
vendored
|
@ -36,12 +36,5 @@ jobs:
|
||||||
ruby-version: 2.7
|
ruby-version: 2.7
|
||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
|
|
||||||
- name: Build Site
|
|
||||||
env:
|
|
||||||
JEKYLL_ENV: production
|
|
||||||
run: |
|
|
||||||
bundle exec jekyll b
|
|
||||||
|
|
||||||
- name: Test Site
|
- name: Test Site
|
||||||
run: |
|
run: bash tools/deploy.sh --dry-run
|
||||||
bash tools/test.sh
|
|
||||||
|
|
26
.github/workflows/pages-deploy.yml.hook
vendored
26
.github/workflows/pages-deploy.yml.hook
vendored
|
@ -25,29 +25,5 @@ jobs:
|
||||||
ruby-version: 2.7
|
ruby-version: 2.7
|
||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
|
|
||||||
- name: Check baseurl
|
|
||||||
run: |
|
|
||||||
baseurl="$(grep '^baseurl:' _config.yml | sed "s/.*: *//;s/['\"]//g;s/#.*//")"
|
|
||||||
if [[ -n $baseurl ]]; then
|
|
||||||
echo "BASE_URL=$baseurl" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Build Site
|
|
||||||
env:
|
|
||||||
JEKYLL_ENV: production
|
|
||||||
run: |
|
|
||||||
bundle exec jekyll b -d "_site$BASE_URL"
|
|
||||||
|
|
||||||
- name: Test Site
|
|
||||||
run: |
|
|
||||||
bash tools/test.sh
|
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
run: |
|
run: bash tools/deploy.sh
|
||||||
if [[ -n $BASE_URL ]]; then
|
|
||||||
mv _site$BASE_URL _site-rename
|
|
||||||
rm -rf _site
|
|
||||||
mv _site-rename _site
|
|
||||||
fi
|
|
||||||
|
|
||||||
bash tools/deploy.sh
|
|
||||||
|
|
106
tools/deploy.sh
106
tools/deploy.sh
|
@ -1,22 +1,80 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Deploy the content of _site to 'origin/<pages_branch>'
|
# Build, test and then deploy the site content to 'origin/<pages_branch>'
|
||||||
|
#
|
||||||
|
# Requirement: html-proofer, jekyll
|
||||||
|
#
|
||||||
|
# Usage: See help information
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
PAGES_BRANCH="gh-pages"
|
PAGES_BRANCH="gh-pages"
|
||||||
|
|
||||||
_no_branch=false
|
SITE_DIR="_site"
|
||||||
|
|
||||||
|
_opt_dry_run=false
|
||||||
|
|
||||||
|
_config="_config.yml"
|
||||||
|
|
||||||
|
_no_pages_branch=false
|
||||||
|
|
||||||
_backup_dir="$(mktemp -d)"
|
_backup_dir="$(mktemp -d)"
|
||||||
|
|
||||||
|
_baseurl=""
|
||||||
|
|
||||||
|
help() {
|
||||||
|
echo "Build, test and then deploy the site content to 'origin/<pages_branch>'"
|
||||||
|
echo
|
||||||
|
echo "Usage:"
|
||||||
|
echo
|
||||||
|
echo " bash ./tools/deploy.sh [options]"
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo ' -c, --config "<config_a[,config_b[...]]>" Specify config file(s)'
|
||||||
|
echo " --dry-run Build site and test, but not deploy"
|
||||||
|
echo " -h, --help Print this information."
|
||||||
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
if [[ -z ${GITHUB_ACTION+x} ]]; then
|
if [[ -z ${GITHUB_ACTION+x} && $_opt_dry_run == 'false' ]]; then
|
||||||
echo "ERROR: This script is not allowed to run outside of GitHub Action."
|
echo "ERROR: It is not allowed to deploy outside of the GitHub Action envrionment."
|
||||||
|
echo "Type option '-h' to see the help information."
|
||||||
exit -1
|
exit -1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
_baseurl="$(grep '^baseurl:' _config.yml | sed "s/.*: *//;s/['\"]//g;s/#.*//")"
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
# clean up
|
||||||
|
if [[ -d $SITE_DIR ]]; then
|
||||||
|
rm -rf "$SITE_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build
|
||||||
|
JEKYLL_ENV=production bundle exec jekyll b -d "$SITE_DIR$_baseurl" --config "$_config"
|
||||||
|
}
|
||||||
|
|
||||||
|
test() {
|
||||||
|
bundle exec htmlproofer \
|
||||||
|
--disable-external \
|
||||||
|
--check-html \
|
||||||
|
--allow_hash_href \
|
||||||
|
"$SITE_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
resume_site_dir() {
|
||||||
|
if [[ -n $_baseurl ]]; then
|
||||||
|
# Move the site file to the regular directory '_site'
|
||||||
|
mv "$SITE_DIR$_baseurl" "${SITE_DIR}-rename"
|
||||||
|
rm -rf "$SITE_DIR"
|
||||||
|
mv "${SITE_DIR}-rename" "$SITE_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_gh() {
|
||||||
if [[ -z $(git branch -av | grep "$PAGES_BRANCH") ]]; then
|
if [[ -z $(git branch -av | grep "$PAGES_BRANCH") ]]; then
|
||||||
_no_branch=true
|
_no_pages_branch=true
|
||||||
git checkout -b "$PAGES_BRANCH"
|
git checkout -b "$PAGES_BRANCH"
|
||||||
else
|
else
|
||||||
git checkout "$PAGES_BRANCH"
|
git checkout "$PAGES_BRANCH"
|
||||||
|
@ -24,7 +82,7 @@ init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
backup() {
|
backup() {
|
||||||
mv _site/* "$_backup_dir"
|
mv "$SITE_DIR"/* "$_backup_dir"
|
||||||
mv .git "$_backup_dir"
|
mv .git "$_backup_dir"
|
||||||
|
|
||||||
# When adding custom domain from Github website,
|
# When adding custom domain from Github website,
|
||||||
|
@ -50,7 +108,7 @@ deploy() {
|
||||||
git add -A
|
git add -A
|
||||||
git commit -m "[Automation] Site update No.${GITHUB_RUN_NUMBER}"
|
git commit -m "[Automation] Site update No.${GITHUB_RUN_NUMBER}"
|
||||||
|
|
||||||
if $_no_branch; then
|
if $_no_pages_branch; then
|
||||||
git push -u origin "$PAGES_BRANCH"
|
git push -u origin "$PAGES_BRANCH"
|
||||||
else
|
else
|
||||||
git push -f
|
git push -f
|
||||||
|
@ -59,9 +117,43 @@ deploy() {
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
init
|
init
|
||||||
|
build
|
||||||
|
test
|
||||||
|
resume_site_dir
|
||||||
|
|
||||||
|
if $_opt_dry_run; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
setup_gh
|
||||||
backup
|
backup
|
||||||
flush
|
flush
|
||||||
deploy
|
deploy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (($#)); do
|
||||||
|
opt="$1"
|
||||||
|
case $opt in
|
||||||
|
-c | --config)
|
||||||
|
_config="$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--dry-run)
|
||||||
|
# build & test, but not deploy
|
||||||
|
_opt_dry_run=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h | --help)
|
||||||
|
help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# unknown option
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
main
|
main
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Using HTML-proofer to test site.
|
|
||||||
#
|
|
||||||
# Requirement: https://github.com/gjtorikian/html-proofer
|
|
||||||
#
|
|
||||||
# Usage: bash /path/to/test.sh [indicated path]
|
|
||||||
|
|
||||||
DEST=_site
|
|
||||||
|
|
||||||
_build=false
|
|
||||||
|
|
||||||
help() {
|
|
||||||
echo "Usage:"
|
|
||||||
echo
|
|
||||||
echo " bash ./tools/test.sh [options]"
|
|
||||||
echo
|
|
||||||
echo "Options:"
|
|
||||||
echo " --build Run Jekyll build before test."
|
|
||||||
echo " -d, --dir <path> Specify the test path."
|
|
||||||
echo " -h, --help Print this information."
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ -n $1 && -d $1 ]]; then
|
|
||||||
DEST=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
while (($#)); do
|
|
||||||
opt="$1"
|
|
||||||
case $opt in
|
|
||||||
--build)
|
|
||||||
_build=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-d | --dir)
|
|
||||||
if [[ ! -d $2 ]]; then
|
|
||||||
echo -e "Error: path '$2' doesn't exist\n"
|
|
||||||
help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
DEST=$2
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-h | --help)
|
|
||||||
help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# unknown option
|
|
||||||
help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if $_build; then
|
|
||||||
JEKYLL_ENV=production bundle exec jekyll b
|
|
||||||
fi
|
|
||||||
|
|
||||||
bundle exec htmlproofer "$DEST" \
|
|
||||||
--disable-external \
|
|
||||||
--check-html \
|
|
||||||
--allow_hash_href
|
|
Loading…
Reference in a new issue