Initial commit.

This commit is contained in:
Florian THIERRY
2025-03-04 10:24:26 +01:00
commit 6d97e8d4cb
3 changed files with 155 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
configuration/script.properties

View File

@@ -0,0 +1,2 @@
gitea_instance_url=<url>
gitea_runner_registration_token=<token>

View 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 "$@"