feat: deploy with git push to Gitea
parent
9a0c290709
commit
8a9dfcb1d3
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Used in CI workflow: call Pages hook to deploy update
|
# ci.sh: Helper script to automate deployment operations on CI/CD
|
||||||
# Copyright © 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
# Copyright © 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -18,23 +18,81 @@
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
source $(pwd)/scripts/lib.sh
|
source $(pwd)/scripts/lib.sh
|
||||||
|
|
||||||
|
readonly SSH_ID_FILE=/tmp/ci-ssh-id
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
ci.sh: Call Pages webhook to update repository
|
USAGE: ci.sh [SUBCOMMAND]
|
||||||
USAGE:
|
Helper script to automate deployment operations on CI/CD
|
||||||
ci.sh <Pages deploy secret> <git branch to be updated>
|
|
||||||
|
Subcommands
|
||||||
|
|
||||||
|
-c --clean cleanup secrets, SSH key and other runtime data
|
||||||
|
-i --init <SSH_PRIVATE_KEY> initialize environment, write SSH private to file
|
||||||
|
-d --deploy <PAGES-SECRET> <TARGET BRANCH> push branch to Gitea and call Pages server
|
||||||
|
-h --help print this help menu
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# $1: SSH private key
|
||||||
|
write_ssh(){
|
||||||
|
echo $1 > $SSH_ID_FILE
|
||||||
|
}
|
||||||
|
|
||||||
if (( "$#" < 2 ))
|
clean() {
|
||||||
then
|
if [ -f $SSH_ID_FILE ]
|
||||||
|
then
|
||||||
|
shred $SSH_ID_FILE
|
||||||
|
rm $SSH_ID_FILE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1: Pages API secret
|
||||||
|
# $2: Deployment target branch
|
||||||
|
deploy() {
|
||||||
|
if (( "$#" < 2 ))
|
||||||
|
then
|
||||||
help
|
help
|
||||||
else
|
else
|
||||||
|
git push -c core.sshCommand="/usr/bin/ssh -i $SSH_ID_FILE" origin $2
|
||||||
curl -vv --location --request \
|
curl -vv --location --request \
|
||||||
POST "https://hostea.org:5000/api/v1/update"\
|
POST "https://hostea.org:5000/api/v1/update"\
|
||||||
--header 'Content-Type: application/json' \
|
--header 'Content-Type: application/json' \
|
||||||
--data-raw "{ \"secret\": \"$1\", \"branch\": \"$2\" }"
|
-
|
||||||
|
agate --content dist/content/ \
|
||||||
|
-data-raw "{ \"secret\": \"$1\", \"branch\": \"$2\" }"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if (( "$#" < 1 ))
|
||||||
|
then
|
||||||
|
help
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if match_arg $1 '-i' '--init'
|
||||||
|
then
|
||||||
|
if (( "$#" < 2 ))
|
||||||
|
then
|
||||||
|
help
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
write_ssh $2
|
||||||
|
elif match_arg $1 '-c' '--clean'
|
||||||
|
then
|
||||||
|
clean
|
||||||
|
elif match_arg $1 '-d' '--deploy'
|
||||||
|
then
|
||||||
|
if (( "$#" < 3 ))
|
||||||
|
then
|
||||||
|
help
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
deploy $2 $3
|
||||||
|
elif match_arg $1 '-h' '--help'
|
||||||
|
then
|
||||||
|
help
|
||||||
|
else
|
||||||
|
help
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue