Initial commit.
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
configuration/script.properties
|
||||||
2
configuration/script.properties.example
Normal file
2
configuration/script.properties.example
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
gitea_instance_url=<url>
|
||||||
|
gitea_runner_registration_token=<token>
|
||||||
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