From 553355e3ded9e3af01a8b7275ad5f790a53d5978 Mon Sep 17 00:00:00 2001 From: Tobias Fuhrimann Date: Mon, 24 Jul 2017 13:20:42 +0200 Subject: [PATCH 01/11] Use jq to url encode all the things --- scripts/check | 28 +++++++++++++--------------- scripts/common.sh | 2 +- scripts/in | 22 +++++++++++----------- scripts/out | 43 ++++++++++++++++++++----------------------- 4 files changed, 45 insertions(+), 50 deletions(-) diff --git a/scripts/check b/scripts/check index f4156c5..9ed8380 100755 --- a/scripts/check +++ b/scripts/check @@ -23,42 +23,40 @@ version_sha="$(jq -r '.version.sha // ""' < "${payload}")" gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" -project_path_encoded="${project_path//\//%2F}" # url encode "/" -project_path_encoded="${project_path_encoded//./%2E}" # url encode "." protocol="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\1/p')" if [ "${no_ssl}" == 'true' ]; then - protocol='http' + protocol='http' fi version_updated_at=0 if [ ! -z "${version_sha}" ]; then - version_updated_at=`curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/${project_path_encoded}/repository/commits/${version_sha}" \ - | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime'` + version_updated_at="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${version_sha}" \ + | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" fi -open_mrs="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/${project_path_encoded}/merge_requests?state=opened&order_by=updated_at")" +open_mrs="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/merge_requests?state=opened&order_by=updated_at")" num_mrs="$(echo "${open_mrs}" | jq 'length')" new_versions='' for i in $(seq 0 $((num_mrs - 1))); do - mr="$(echo "${open_mrs}" | jq -r '.['"$i"']')" - mr_sha="$(echo "${mr}" | jq -r '.sha')" - if [ "${mr_sha}" != "null" ]; then - mr_updated_at=`curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/${project_path_encoded}/repository/commits/${mr_sha}" \ - | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime'` - if [ "${mr_updated_at}" -gt "${version_updated_at}" ] || [ -z "${version_sha}" ]; then - new_versions="${new_versions},{\"sha\":\"${mr_sha}\"}" + mr="$(echo "${open_mrs}" | jq -r '.['"$i"']')" + mr_sha="$(echo "${mr}" | jq -r '.sha')" + if [ "${mr_sha}" != "null" ]; then + mr_updated_at="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${mr_sha}" \ + | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" + if [ "${mr_updated_at}" -gt "${version_updated_at}" ] || [ -z "${version_sha}" ]; then + new_versions="${new_versions},{\"sha\":\"${mr_sha}\"}" + fi fi - fi done new_versions="${new_versions#','}" # remove trailing comma new_versions="[${new_versions}]" # make JSON array if [ "${new_versions}" == '[]' ] && ! [ -z "${version_sha}" ]; then - new_versions="[{\"sha\":\"${version_sha}\"}]" + new_versions="[{\"sha\":\"${version_sha}\"}]" fi jq -n "${new_versions}" >&3 diff --git a/scripts/common.sh b/scripts/common.sh index eeabbb7..a4007c6 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -81,4 +81,4 @@ configure_ssl_verification() { urlencode() { echo -n "${1}" | jq -s -R -r @uri -} \ No newline at end of file +} diff --git a/scripts/in b/scripts/in index 8c3a023..53fea45 100755 --- a/scripts/in +++ b/scripts/in @@ -13,8 +13,8 @@ source "$(dirname "$0")/common.sh" destination="$1" if [ -z "${destination}" ]; then - echo "Usage: $0 " >&2 - exit 1 + echo "Usage: $0 " >&2 + exit 1 fi payload="$(mktemp "${TMPDIR}/gitlab-merge-request-resource.XXXXXX")" @@ -31,15 +31,15 @@ version="$(jq -r '.version // ""' < "${payload}")" commit_sha="$(echo "${version}" | jq -r '.sha // ""')" if [[ ! -z "${private_key}" ]]; then - gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" + gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" - id_rsa="${HOME}/.ssh/id_rsa" - mkdir -p "${HOME}/.ssh/" - echo "${private_key}" > "${id_rsa}" - chmod 500 "${id_rsa}" - ssh-keyscan -t rsa "${gitlab_host}" > "${HOME}/.ssh/known_hosts" + id_rsa="${HOME}/.ssh/id_rsa" + mkdir -p "${HOME}/.ssh/" + echo "${private_key}" > "${id_rsa}" + chmod 500 "${id_rsa}" + ssh-keyscan -t rsa "${gitlab_host}" > "${HOME}/.ssh/known_hosts" else - echo "default login ${username} password ${password}" > "${HOME}/.netrc" # Save credentials for git push below + echo "default login ${username} password ${password}" > "${HOME}/.netrc" # Save credentials for git push below fi git clone "${uri}" "${destination}" @@ -49,6 +49,6 @@ cd "${destination}" git reset --hard "${commit_sha}" jq -n "{ - version: ${version}, - metadata: $(git_metadata) + version: ${version}, + metadata: $(git_metadata) }" >&3 diff --git a/scripts/out b/scripts/out index 17c9721..9e4a089 100755 --- a/scripts/out +++ b/scripts/out @@ -13,8 +13,8 @@ source "$(dirname "$0")/common.sh" destination="$1" if [ -z "${destination}" ]; then - echo "Usage: $0 " >&2 - exit 1 + echo "Usage: $0 " >&2 + exit 1 fi payload="$(mktemp "${TMPDIR}/gitlab-merge-request-resource.XXXXXX")" @@ -32,33 +32,30 @@ path_to_repo="$(echo "${params}" | jq -r '.repository // ""')" new_status="$(echo "${params}" | jq -r '.status // ""')" if [ -z "${path_to_repo}" ]; then - echo "please specify a repository" >&2 - exit 1 + echo "please specify a repository" >&2 + exit 1 fi if [ -z "${new_status}" ]; then - echo "please specify a status" >&2 - exit 1 + echo "please specify a status" >&2 + exit 1 fi gitlab_host='' project_path='' protocol='https' if [[ ! -z "${private_key}" ]]; then - gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" - project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" + gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" + project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" else - gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" - project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" - protocol="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\1/p')" + gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" + project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" + protocol="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\1/p')" fi if [ "${no_ssl}" == 'true' ]; then - protocol='http' + protocol='http' fi -project_path_encoded="${project_path//\//%2F}" # url encode "/" -project_path_encoded="${project_path_encoded//./%2E}" # url encode "." - -target_url="${ATC_EXTERNAL_URL}/teams/$(urlencode ${BUILD_TEAM_NAME})/pipelines/$(urlencode ${BUILD_PIPELINE_NAME})/jobs/$(urlencode ${BUILD_JOB_NAME})/builds/$(urlencode ${BUILD_NAME})" +target_url="${ATC_EXTERNAL_URL}/teams/$(urlencode "${BUILD_TEAM_NAME}")/pipelines/$(urlencode "${BUILD_PIPELINE_NAME}")/jobs/$(urlencode "${BUILD_JOB_NAME}")/builds/$(urlencode "${BUILD_NAME}")" cd "${destination}" cd "${path_to_repo}" @@ -66,15 +63,15 @@ cd "${path_to_repo}" commit_sha="$(git rev-parse HEAD)" curl \ ---request POST \ ---header "PRIVATE-TOKEN: ${private_token}" \ ---header "Content-Type: application/json" \ ---data "{\"state\":\"${new_status}\",\"name\":\"Concourse\",\"target_url\":\"${target_url}\"}" \ -"${protocol}://${gitlab_host}/api/v3/projects/${project_path_encoded}/statuses/${commit_sha}" + --request POST \ + --header "PRIVATE-TOKEN: ${private_token}" \ + --header "Content-Type: application/json" \ + --data "{\"state\":\"${new_status}\",\"name\":\"Concourse\",\"target_url\":\"${target_url}\"}" \ + "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" version="{\"sha\":\"${commit_sha}\"}" jq -n "{ - version: ${version}, - metadata: $(git_metadata) + version: ${version}, + metadata: $(git_metadata) }" >&3 From 19dfb52c99c23a2401aa5d85a66691f2fd96c210 Mon Sep 17 00:00:00 2001 From: Tobias Fuhrimann Date: Mon, 24 Jul 2017 14:13:58 +0200 Subject: [PATCH 02/11] Remove -n flag from echo in jq --- scripts/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 scripts/common.sh diff --git a/scripts/common.sh b/scripts/common.sh old mode 100644 new mode 100755 index a4007c6..5170158 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -80,5 +80,5 @@ configure_ssl_verification() { } urlencode() { - echo -n "${1}" | jq -s -R -r @uri + echo "$1" | jq -s -R -r @uri } From 20edae54df717194b19a57bc8ce639a1af5f027e Mon Sep 17 00:00:00 2001 From: Tobias Fuhrimann Date: Mon, 24 Jul 2017 23:18:07 +0200 Subject: [PATCH 03/11] Fix wrong double quotes in curl statements --- scripts/check | 6 +++--- scripts/out | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/check b/scripts/check index 9ed8380..305fc51 100755 --- a/scripts/check +++ b/scripts/check @@ -31,11 +31,11 @@ fi version_updated_at=0 if [ ! -z "${version_sha}" ]; then - version_updated_at="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${version_sha}" \ + version_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${version_sha}" \ | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" fi -open_mrs="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/merge_requests?state=opened&order_by=updated_at")" +open_mrs="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/merge_requests?state=opened&order_by=updated_at")" num_mrs="$(echo "${open_mrs}" | jq 'length')" new_versions='' @@ -44,7 +44,7 @@ for i in $(seq 0 $((num_mrs - 1))); do mr="$(echo "${open_mrs}" | jq -r '.['"$i"']')" mr_sha="$(echo "${mr}" | jq -r '.sha')" if [ "${mr_sha}" != "null" ]; then - mr_updated_at="$(curl -s -H \"private-token: "${private_token}"\" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${mr_sha}" \ + mr_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${mr_sha}" \ | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" if [ "${mr_updated_at}" -gt "${version_updated_at}" ] || [ -z "${version_sha}" ]; then new_versions="${new_versions},{\"sha\":\"${mr_sha}\"}" diff --git a/scripts/out b/scripts/out index 9e4a089..059e862 100755 --- a/scripts/out +++ b/scripts/out @@ -65,7 +65,7 @@ commit_sha="$(git rev-parse HEAD)" curl \ --request POST \ --header "PRIVATE-TOKEN: ${private_token}" \ - --header "Content-Type: application/json" \ + --header 'Content-Type: application/json' \ --data "{\"state\":\"${new_status}\",\"name\":\"Concourse\",\"target_url\":\"${target_url}\"}" \ "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" From cc9e86a55a0d6735b122e354f6860ee20aaf76a9 Mon Sep 17 00:00:00 2001 From: Tobias Fuhrimann Date: Tue, 25 Jul 2017 10:31:28 +0200 Subject: [PATCH 04/11] Put back -n flag --- scripts/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/common.sh b/scripts/common.sh index 5170158..8de0f6e 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -80,5 +80,5 @@ configure_ssl_verification() { } urlencode() { - echo "$1" | jq -s -R -r @uri + echo -n "$1" | jq -s -R -r @uri } From ec6bbc2cf57569423b0ed295557ab35d63e6e78d Mon Sep 17 00:00:00 2001 From: Jake Dsouza Date: Wed, 4 Oct 2017 22:42:11 -0700 Subject: [PATCH 05/11] Fix git urls --- scripts/check | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/check b/scripts/check index 305fc51..20ba56d 100755 --- a/scripts/check +++ b/scripts/check @@ -2,7 +2,6 @@ # vim: set ft=sh set -e -u - exec 3>&1 # make stdout available as fd 3 for the result exec 1>&2 # redirect all output to stderr for logging @@ -18,12 +17,19 @@ configure_ssl_verification "${payload}" uri="$(jq -r '.source.uri // ""' < "${payload}")" private_token="$(jq -r '.source.private_token // ""' < "${payload}")" +private_key="$(jq -r '.source.private_key // ""' < "${payload}")" no_ssl="$(jq -r '.source.no_ssl // ""' < "${payload}")" version_sha="$(jq -r '.version.sha // ""' < "${payload}")" -gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" -project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" -protocol="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\1/p')" +if [[ ! -z "${private_key}" ]]; then + gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" + project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" + protocol='https' +else + gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" + project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" + protocol="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\1/p')" +fi if [ "${no_ssl}" == 'true' ]; then protocol='http' From beb9228b61e5ae26a071b043e43baabc2cc1e95d Mon Sep 17 00:00:00 2001 From: Jake Dsouza Date: Mon, 30 Oct 2017 11:31:58 -0700 Subject: [PATCH 06/11] address review comments --- scripts/check | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/check b/scripts/check index 20ba56d..044c6ca 100755 --- a/scripts/check +++ b/scripts/check @@ -2,6 +2,7 @@ # vim: set ft=sh set -e -u + exec 3>&1 # make stdout available as fd 3 for the result exec 1>&2 # redirect all output to stderr for logging @@ -17,11 +18,10 @@ configure_ssl_verification "${payload}" uri="$(jq -r '.source.uri // ""' < "${payload}")" private_token="$(jq -r '.source.private_token // ""' < "${payload}")" -private_key="$(jq -r '.source.private_key // ""' < "${payload}")" no_ssl="$(jq -r '.source.no_ssl // ""' < "${payload}")" version_sha="$(jq -r '.version.sha // ""' < "${payload}")" -if [[ ! -z "${private_key}" ]]; then +if [[ "${uri}" == "git@"* ]]; then gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" protocol='https' From f07b320292b0f5c6d3612c8fc43b249c361ab86b Mon Sep 17 00:00:00 2001 From: Tom McKinney Date: Fri, 12 Jan 2018 15:32:01 -0500 Subject: [PATCH 07/11] Added new regex capture groups to isolate port from hostname --- scripts/check | 8 +++++--- scripts/in | 11 +++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/scripts/check b/scripts/check index 044c6ca..6e8a525 100755 --- a/scripts/check +++ b/scripts/check @@ -21,9 +21,11 @@ private_token="$(jq -r '.source.private_token // ""' < "${payload}")" no_ssl="$(jq -r '.source.no_ssl // ""' < "${payload}")" version_sha="$(jq -r '.version.sha // ""' < "${payload}")" -if [[ "${uri}" == "git@"* ]]; then - gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" - project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" +if [[ "${uri}" == *"git@"* ]]; then + gitlab_host="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\1/p')" + port="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\2/p')" + port=${port///} # remove trailing slash + project_path="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\3/p')" protocol='https' else gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" diff --git a/scripts/in b/scripts/in index 53fea45..8fe0fd6 100755 --- a/scripts/in +++ b/scripts/in @@ -31,13 +31,20 @@ version="$(jq -r '.version // ""' < "${payload}")" commit_sha="$(echo "${version}" | jq -r '.sha // ""')" if [[ ! -z "${private_key}" ]]; then - gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" + gitlab_host="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\1/p')" + port="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\2/p')" + port=${port///} # remove trailing slash id_rsa="${HOME}/.ssh/id_rsa" mkdir -p "${HOME}/.ssh/" echo "${private_key}" > "${id_rsa}" chmod 500 "${id_rsa}" - ssh-keyscan -t rsa "${gitlab_host}" > "${HOME}/.ssh/known_hosts" + + if [[ ! -z "${port}" ]]; then + ssh-keyscan -t rsa -p "${port}" "${gitlab_host}" > "${HOME}/.ssh/known_hosts" + else + ssh-keyscan -t rsa "${gitlab_host}" > "${HOME}/.ssh/known_hosts" + fi else echo "default login ${username} password ${password}" > "${HOME}/.netrc" # Save credentials for git push below fi From 0c2cf9862d94889b857cf4245d4e19f5d130d5b2 Mon Sep 17 00:00:00 2001 From: Tom McKinney Date: Fri, 12 Jan 2018 15:43:00 -0500 Subject: [PATCH 08/11] Updated out to use newer regex pattern for host and project path --- scripts/out | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/out b/scripts/out index 059e862..bbc6248 100755 --- a/scripts/out +++ b/scripts/out @@ -44,8 +44,10 @@ gitlab_host='' project_path='' protocol='https' if [[ ! -z "${private_key}" ]]; then - gitlab_host="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\1/p')" - project_path="$(echo "${uri}" | sed -rn 's/git@(.*):(.*)\.git/\2/p')" + gitlab_host="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\1/p')" + port="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\2/p')" + port=${port///} # remove trailing slash + project_path="$(echo "${uri}" | sed -rn 's/.*git@(.*):([0-9]*\/+)?(.*)\.git/\3/p')" else gitlab_host="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\2/p')" project_path="$(echo "${uri}" | sed -rn 's/(https?):\/\/([^\/]*)\/(.*)\.git/\3/p')" From 4f0f6584e1059e0aa9c06011e7571150733df4e7 Mon Sep 17 00:00:00 2001 From: Matteo Gazzetta Date: Wed, 10 Jan 2018 15:17:39 +0100 Subject: [PATCH 09/11] Added task name to status update --- .gitignore | 1 + scripts/out | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/scripts/out b/scripts/out index bbc6248..6304ac6 100755 --- a/scripts/out +++ b/scripts/out @@ -30,6 +30,7 @@ no_ssl="$(jq -r '.source.no_ssl // ""' < "${payload}")" params="$(jq -r '.params // ""' < "${payload}")" path_to_repo="$(echo "${params}" | jq -r '.repository // ""')" new_status="$(echo "${params}" | jq -r '.status // ""')" +task_name="$(echo "${params}" | jq -r '.name // "Concourse"')" if [ -z "${path_to_repo}" ]; then echo "please specify a repository" >&2 @@ -68,7 +69,7 @@ curl \ --request POST \ --header "PRIVATE-TOKEN: ${private_token}" \ --header 'Content-Type: application/json' \ - --data "{\"state\":\"${new_status}\",\"name\":\"Concourse\",\"target_url\":\"${target_url}\"}" \ + --data "{\"state\":\"${new_status}\",\"name\":\"${task_name}\",\"target_url\":\"${target_url}\"}" \ "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" version="{\"sha\":\"${commit_sha}\"}" From 65ed6b97ad675bd6a80cf15b087f84f076452a02 Mon Sep 17 00:00:00 2001 From: Tobi Fuhrimann Date: Mon, 5 Feb 2018 15:05:41 +0100 Subject: [PATCH 10/11] Add documentation for build_label --- README.md | 19 ++++++++++--------- scripts/out | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3ecb2cf..a24e01c 100644 --- a/README.md +++ b/README.md @@ -25,16 +25,16 @@ resources: * `private_token`: Your GitLab user's private token (required, can be found in your profile settings) * `private_key`: The private SSH key for SSH auth when pulling - Example: + Example: - ```yaml - private_key: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEAtCS10/f7W7lkQaSgD/mVeaSOvSF9ql4hf/zfMwfVGgHWjj+W - - DWiJL+OFeg9kawcUL6hQ8JeXPhlImG6RTUffma9+iGQyyBMCGd1l - -----END RSA PRIVATE KEY----- - ``` + ```yaml + private_key: | + -----BEGIN RSA PRIVATE KEY----- + MIIEowIBAAKCAQEAtCS10/f7W7lkQaSgD/mVeaSOvSF9ql4hf/zfMwfVGgHWjj+W + + DWiJL+OFeg9kawcUL6hQ8JeXPhlImG6RTUffma9+iGQyyBMCGd1l + -----END RSA PRIVATE KEY----- + ``` * `username`: The username for HTTP(S) auth when pulling * `password`: The password for HTTP(S) auth when pulling @@ -61,6 +61,7 @@ Updates the merge request's `merge_status` which displays nicely in the GitLab U * `repository`: The path of the repository of the merge request's source branch (required) * `status`: The new status of the merge request (required, can be either `pending`, `running`, `success`, `failed`, or `canceled`) +* `build_label`: The label of the build in GitLab (optional, defaults to `"Concourse"`) ## Example diff --git a/scripts/out b/scripts/out index 6304ac6..e9d5f4f 100755 --- a/scripts/out +++ b/scripts/out @@ -30,7 +30,7 @@ no_ssl="$(jq -r '.source.no_ssl // ""' < "${payload}")" params="$(jq -r '.params // ""' < "${payload}")" path_to_repo="$(echo "${params}" | jq -r '.repository // ""')" new_status="$(echo "${params}" | jq -r '.status // ""')" -task_name="$(echo "${params}" | jq -r '.name // "Concourse"')" +build_label="$(echo "${params}" | jq -r '.build_label // "Concourse"')" if [ -z "${path_to_repo}" ]; then echo "please specify a repository" >&2 @@ -69,7 +69,7 @@ curl \ --request POST \ --header "PRIVATE-TOKEN: ${private_token}" \ --header 'Content-Type: application/json' \ - --data "{\"state\":\"${new_status}\",\"name\":\"${task_name}\",\"target_url\":\"${target_url}\"}" \ + --data "{\"state\":\"${new_status}\",\"name\":\"${build_label}\",\"target_url\":\"${target_url}\"}" \ "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" version="{\"sha\":\"${commit_sha}\"}" From b832dd7091c42081b05da25388092a010894a154 Mon Sep 17 00:00:00 2001 From: lorands Date: Mon, 11 Jun 2018 16:19:00 +0200 Subject: [PATCH 11/11] feat(api): Switch to gitlab api v4 Switch from gitlab api v3 to v4 Closes: --- scripts/check | 6 +++--- scripts/out | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/check b/scripts/check index 6e8a525..09484de 100755 --- a/scripts/check +++ b/scripts/check @@ -39,11 +39,11 @@ fi version_updated_at=0 if [ ! -z "${version_sha}" ]; then - version_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${version_sha}" \ + version_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v4/projects/$(urlencode "${project_path}")/repository/commits/${version_sha}" \ | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" fi -open_mrs="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/merge_requests?state=opened&order_by=updated_at")" +open_mrs="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v4/projects/$(urlencode "${project_path}")/merge_requests?state=opened&order_by=updated_at")" num_mrs="$(echo "${open_mrs}" | jq 'length')" new_versions='' @@ -52,7 +52,7 @@ for i in $(seq 0 $((num_mrs - 1))); do mr="$(echo "${open_mrs}" | jq -r '.['"$i"']')" mr_sha="$(echo "${mr}" | jq -r '.sha')" if [ "${mr_sha}" != "null" ]; then - mr_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/repository/commits/${mr_sha}" \ + mr_updated_at="$(curl -s -H "private-token: ${private_token}" "${protocol}://${gitlab_host}/api/v4/projects/$(urlencode "${project_path}")/repository/commits/${mr_sha}" \ | jq '.committed_date|.[:19]|strptime("%Y-%m-%dT%H:%M:%S")|mktime')" if [ "${mr_updated_at}" -gt "${version_updated_at}" ] || [ -z "${version_sha}" ]; then new_versions="${new_versions},{\"sha\":\"${mr_sha}\"}" diff --git a/scripts/out b/scripts/out index e9d5f4f..227ec5f 100755 --- a/scripts/out +++ b/scripts/out @@ -70,7 +70,7 @@ curl \ --header "PRIVATE-TOKEN: ${private_token}" \ --header 'Content-Type: application/json' \ --data "{\"state\":\"${new_status}\",\"name\":\"${build_label}\",\"target_url\":\"${target_url}\"}" \ - "${protocol}://${gitlab_host}/api/v3/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" + "${protocol}://${gitlab_host}/api/v4/projects/$(urlencode "${project_path}")/statuses/${commit_sha}" version="{\"sha\":\"${commit_sha}\"}"