Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 29 additions & 20 deletions api/gitlab-bash-api.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@ function gitlab_get_page {
local page="$3"

local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?page=${page}&per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result="$( curl --include --silent --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" "${curl_url}" )"
local curl_result=
curl_result="$( curl --include --silent --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" "${curl_url}" ${client_certificate} )"
local curl_rc=$?

if [ ${curl_rc} -ne 0 ]; then
Expand Down Expand Up @@ -106,9 +105,8 @@ function gitlab_post {
local api_params="$2"

local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X POST --silent "${curl_url}" )"
local curl_result=
curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X POST --silent "${curl_url}" ${client_certificate} )"
local curl_rc=$?

if [ ${curl_rc} -ne 0 ]; then
Expand All @@ -127,9 +125,8 @@ function gitlab_put {
local api_params="$2"

local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X PUT --silent "${curl_url}" )"
local curl_result=
curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X PUT --silent "${curl_url}" ${client_certificate} )"
local curl_rc=$?

if [ ${curl_rc} -ne 0 ]; then
Expand All @@ -148,9 +145,8 @@ function gitlab_delete {
local api_params="$2"

local curl_url="${GITLAB_URL_PREFIX}/api/${GITLAB_API_VERSION}/${api_url}?per_page=${PER_PAGE_MAX}&${api_params}"
local curl_result

curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X DELETE --silent "${curl_url}" )"
local curl_result=
curl_result="$( curl --header "PRIVATE-TOKEN: ${GITLAB_PRIVATE_TOKEN}" -X DELETE --silent "${curl_url}" ${client_certificate} )"
local curl_rc=$?

if [ ${curl_rc} -ne 0 ]; then
Expand All @@ -174,26 +170,26 @@ function url_encode {
}

function source_all_files_in_directory {
local folder=$1
local file
local -r folder=$1

local file=
for file in "${folder}"/* ; do
source "${file}"
done
}

function list_projects_in_group {
local group_name=$1
local answer
local -r group_name="$1"

local answer=
answer="$( list_projects_raw )"

# Rewrite result
local result_for_group
local size

local curl_result=
curl_result="$( echo "${answer}" | jq "[.[] | select(.namespace.name==\"${group_name}\")]" )" || exit $?
size="$( echo "${result_for_group}" |jq '. | length' )"

local size=
size="$( echo "${result_for_group}" | jq '. | length' )"

if [ "${size}" -eq 0 ] ; then
echo "No project available for group [${group_name}] (group does not exist ?)" >&2
Expand Down Expand Up @@ -396,3 +392,16 @@ if [ -z "${PER_PAGE_MAX}" ]; then
# Max value for GitLab is 100
PER_PAGE_MAX=50
fi

#
# Prepare client_certificate part of CURL
#
if [ -n "${GITLAB_CLIENT_CERTIFICATE:-}" ]; then
client_certificate=" --cert ${GITLAB_CLIENT_CERTIFICATE}"
if [ -n "${GITLAB_CLIENT_CERTIFICATE_PASSWORD}" ]; then
client_certificate+=":${GITLAB_CLIENT_CERTIFICATE_PASSWORD}"
fi
client_certificate+=" --key ${GITLAB_PRIVATE_KEY}"
else
client_certificate=
fi
5 changes: 5 additions & 0 deletions custom-config-sample/my-secrets-configuration.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,8 @@ GITLAB_PRIVATE_TOKEN=__YOUR_GITLAB_TOKEN_HERE__
#GITLAB_USER=__YOUR_GIT_USER__
#GITLAB_PASSWORD=$(url_encode '__YOUR_GIT_USER_PASSWORD__')
#GITLAB_CLONE_HTTP_PREFIX="https://${GITLAB_USER}:${GITLAB_PASSWORD}@${GITLAB_URL_PREFIX#"https://"}"

# If client certificate is needed for HTTPS communication with GitLab server
#GITLAB_CLIENT_CERTIFICATE=__PATH_TO_YOUR_CLIENT_CERTIFICATE__
#GITLAB_CLIENT_CERTIFICATE_PASSWORD=__PASSWORD_FOR_YOUR_CLIENT_CERTIFICATE__
#GITLAB_PRIVATE_KEY=__PATH_TO_YOUR_PRIVATE_KEY__