Initial commit.
This commit is contained in:
152
gitea-actions-runner-helper.sh
Normal file
152
gitea-actions-runner-helper.sh
Normal file
@@ -0,0 +1,152 @@
|
||||
#!/bin/bash
|
||||
|
||||
ALLOWED_ACTIONS='help create start stop delete'
|
||||
CONFIGURATION_FILE='./configuration/script.properties'
|
||||
|
||||
action=''
|
||||
runner_name=''
|
||||
|
||||
gitea_instance_url=''
|
||||
gitea_runner_registration_token=''
|
||||
|
||||
function error() {
|
||||
local error_message=$1
|
||||
local should_exit=$2
|
||||
echo "$error_message" >&2
|
||||
echo >&2
|
||||
|
||||
if [[ $should_exit -eq 1 ]]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function print_help() {
|
||||
cat << EOF
|
||||
Usage: bash $0 ACTION [PARAMETERS]...
|
||||
Handle gitea actions runners.
|
||||
|
||||
This helper aims to make easier to create, start, stop and delete gitea actions runners which run in docker containers.
|
||||
|
||||
Here are the possible actions:
|
||||
- create Creates a new runner.
|
||||
- start Starts an existing runner.
|
||||
- stop Stops an existing runner.
|
||||
- delete Deletes an existing runner.
|
||||
|
||||
Some actions need parameters.
|
||||
Parameters of action "create":
|
||||
- \$1 The name of the runner to create.
|
||||
|
||||
Parameters of action "start":
|
||||
- \$1 The name of the runner to start.
|
||||
|
||||
Parameters of action "stop":
|
||||
- \$1 The name of the runner to stop.
|
||||
|
||||
Parameters of action "delete":
|
||||
- \$1 The name of the runner to delete.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
function is_action_allowed() {
|
||||
local arg_action=$1
|
||||
local action_is_allowed=1
|
||||
|
||||
echo "$ALLOWED_ACTIONS" | grep "$arg_action"
|
||||
}
|
||||
|
||||
function handle_args() {
|
||||
local arg_action=$1
|
||||
local arg_parameter_1=$2
|
||||
|
||||
if [[ $# -ne 2 ]]
|
||||
then
|
||||
error 'Bad arguments...' 1
|
||||
print_help
|
||||
fi
|
||||
|
||||
local action_is_allowed=$(is_action_allowed "$arg_action")
|
||||
echo "actions_is_allowed='$action_is_allowed'"
|
||||
if [[ -z $action_is_allowed ]]
|
||||
then
|
||||
error "Unknown action '$arg_action'..."
|
||||
print_help
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
action=$arg_action
|
||||
runner_name=$arg_parameter_1
|
||||
}
|
||||
|
||||
function get_property() {
|
||||
local key=$1
|
||||
local value
|
||||
|
||||
value=$(grep "^${key}=" "$CONFIGURATION_FILE" | cut -d '=' -f 2-)
|
||||
|
||||
echo $value
|
||||
}
|
||||
|
||||
function check_configuration() {
|
||||
if [[ ! -f $CONFIGURATION_FILE ]]; then
|
||||
error 'Configuration file not found!' 1
|
||||
fi
|
||||
|
||||
gitea_instance_url=$(get_property 'gitea_instance_url')
|
||||
if [[ -z "$gitea_instance_url" ]]
|
||||
then
|
||||
error 'Gitea instance url should be set into properties file' 1
|
||||
fi
|
||||
|
||||
gitea_runner_registration_token=$(get_property 'gitea_runner_registration_token')
|
||||
if [[ -z "$gitea_runner_registration_token" ]]
|
||||
then
|
||||
error 'Gitea runner registration token should be set into properties file' 1
|
||||
fi
|
||||
}
|
||||
|
||||
function create_new_runner() {
|
||||
echo "Creation of a new runner named '$runner_name'..."
|
||||
|
||||
docker run \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e GITEA_INSTANCE_URL=$gitea_instance_url \
|
||||
-e GITEA_RUNNER_REGISTRATION_TOKEN=$gitea_runner_registration_token \
|
||||
-e GITEA_RUNNER_NAME=$runner_name \
|
||||
--name $runner_name \
|
||||
-d docker.io/gitea/act_runner:latest
|
||||
}
|
||||
|
||||
function start_runner() {
|
||||
echo "Start runner '$runner_name'..."
|
||||
docker start $runner_name
|
||||
}
|
||||
|
||||
function main() {
|
||||
handle_args "$@"
|
||||
|
||||
check_configuration
|
||||
|
||||
case $action in
|
||||
'create')
|
||||
create_new_runner
|
||||
;;
|
||||
|
||||
'start')
|
||||
start_runner
|
||||
;;
|
||||
|
||||
'stop')
|
||||
stop_runner
|
||||
;;
|
||||
|
||||
'delete')
|
||||
delete_runner
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user