From e1faf22ade430f6d35c7610abaa3e3754b530094 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 30 Aug 2022 15:54:13 +0800 Subject: [PATCH 1/9] feat: release pipeline [WIP] --- concourse/pipeline/job_def.lib.yml | 46 ++++++++++++++++++++++++++ concourse/pipeline/release.yml | 2 -- concourse/pipeline/trigger_def.lib.yml | 17 ++++++++++ concourse/scripts/entry.sh | 7 +++- concourse/scripts/test_and_build.sh | 22 ++++++++++++ 5 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 concourse/scripts/test_and_build.sh diff --git a/concourse/pipeline/job_def.lib.yml b/concourse/pipeline/job_def.lib.yml index 0169761d..9a731adf 100644 --- a/concourse/pipeline/job_def.lib.yml +++ b/concourse/pipeline/job_def.lib.yml @@ -9,6 +9,7 @@ res_gpdb_bin: bin_gpdb6_centos7 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_rhel7 os: rhel7 +release_build: #@ release_build #@ end #! Job config for rhel8 @@ -18,6 +19,7 @@ res_gpdb_bin: bin_gpdb6_rhel8 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_rhel8 os: rhel8 +release_build: #@ release_build #@ end #! Job config for ubuntu18 @@ -27,6 +29,7 @@ res_gpdb_bin: bin_gpdb6_ubuntu18 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_ubuntu18 os: ubuntu1804 +release_build: #@ release_build #@ end #! The entry point of a pipeline. The job name must be 'entrance'. @@ -101,6 +104,26 @@ image: image_test params: #@ end +#@ def _test_and_build_task(conf): +task: #@ "test_and_build" + conf["os"] +timeout: 2h +config: + platform: linux + run: + path: greenplumpython_src/concourse/scripts/entry.sh + args: + - test_and_build + inputs: + - name: bin_gpdb + - name: gpdb_src + - name: greenplumpython_src + - name: bin_plpython3 + outputs: + - name: greenplumpython_artifacts +image: image_test +params: +#@ end + #@ def build_test_job_name(conf): #@ return "build_test_" + conf["os"] #@ end @@ -128,5 +151,28 @@ plan: resource: #@ conf["res_gpdb_src"] - get: bin_plpython3 resource: #@ conf["res_plpython3_bin"] +#@ if conf["release_build"]: +- #@ _test_and_build_task(conf) +#@ else: - #@ _test_task(conf) +#@ end +#@ end + +#! The final release job +#! 1. Push the artifacts to the release bucket +#! 2. Push the git tag +#@ def exit_release_job(param): +#@ trigger = param["trigger"] +#@ confs = param["confs"] +#@ passed_jobs = [] +#@ res_map = param["res_map"] +#@ for conf in confs: +#@ passed_jobs.append(build_test_job_name(conf)) +#@ end +name: exit_release +on_failure: #@ trigger["on_failure"] +on_error: #@ trigger["on_error"] +on_success: #@ trigger["on_success"] +plan: + #@ end diff --git a/concourse/pipeline/release.yml b/concourse/pipeline/release.yml index 165c520d..e8acc98e 100644 --- a/concourse/pipeline/release.yml +++ b/concourse/pipeline/release.yml @@ -2,7 +2,6 @@ #@ "entrance_job", #@ "build_test_job", #@ "exit_release_job", -#@ "centos6_gpdb6_conf", #@ "centos7_gpdb6_conf", #@ "rhel8_gpdb6_conf", #@ "ubuntu18_gpdb6_conf") @@ -15,7 +14,6 @@ #@ res_type_map = {} #@ trigger = release_trigger(res_map) #@ confs = [ -#@ centos6_gpdb6_conf(release_build=True), #@ centos7_gpdb6_conf(release_build=True), #@ rhel8_gpdb6_conf(release_build=True), #@ ubuntu18_gpdb6_conf(release_build=True) diff --git a/concourse/pipeline/trigger_def.lib.yml b/concourse/pipeline/trigger_def.lib.yml index 3a6211d7..e4ac4ae9 100644 --- a/concourse/pipeline/trigger_def.lib.yml +++ b/concourse/pipeline/trigger_def.lib.yml @@ -56,6 +56,23 @@ on_error: alert_type: errored #@ end +#! Release trigger. For dev pipelines. No webhook +#@ def release_trigger(res_map): +#@ add_res_by_name(res_map, "greenplumpython_commit") +#@ add_res_by_name(res_map, "greenplumpython_release") +auto_trigger: true +to_get: +- get: greenplumpython_src + resource: greenplumpython_commit +to_put_pre: #@ [] +to_put_post: #@ [] +#! To set the github commit status, https://github.com/Pix4D/cogito is a good choice. +#! Unfortunately it doesn't work with Concourse 5. +on_success: +on_failure: +on_error: +#@ end + #! Commit trigger. For dev pipelines. No webhook #@ def commit_dev_trigger(res_map): #@ add_res_by_name(res_map, "greenplumpython_commit_dev") diff --git a/concourse/scripts/entry.sh b/concourse/scripts/entry.sh index 0675abf2..8e285282 100755 --- a/concourse/scripts/entry.sh +++ b/concourse/scripts/entry.sh @@ -162,12 +162,17 @@ setup_gpadmin_bashrc # gpadmin. bashrc won't be read by 'su', it needs to be sourced explicitly. case "$1" in test) - # To make fly debug easier su gpadmin -c \ "source /home/gpadmin/.bashrc &&\ /home/gpadmin/greenplumpython_src/concourse/scripts/test.sh" ;; + test_and_build) + # To make fly debug easier + su gpadmin -c \ + "source /home/gpadmin/.bashrc &&\ + /home/gpadmin/greenplumpython_src/concourse/scripts/test_and_build.sh" + ;; *) echo "Unknown target task $1" exit 1 diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh new file mode 100644 index 00000000..c9023f4e --- /dev/null +++ b/concourse/scripts/test_and_build.sh @@ -0,0 +1,22 @@ +#!/bin/bash -l + +set -exo pipefail + +function _main() { + # FIXME: The test db and extension creation should be handled by python code. + createdb gpadmin + psql gpadmin -c "CREATE LANGUAGE plpython3u;" + + # Run testing + pushd /home/gpadmin/greenplumpython_src + unset PYTHONPATH + unset PYTHONHOME + tox -e test_py39 + # build wheel + pip3 wheel . + mkdir ../greenplumpython_artifacts + cp ./*.whl ../greenplumpython_artifacts + popd +} + +_main From 336cd9da91837ce74ba622e98932792d0940fe0b Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 30 Aug 2022 16:04:12 +0800 Subject: [PATCH 2/9] fix: permission --- concourse/scripts/test_and_build.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 concourse/scripts/test_and_build.sh diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh old mode 100644 new mode 100755 From 2a2c9cbe3e91713368ec53095bc6b8919e6e7ae1 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 30 Aug 2022 16:13:16 +0800 Subject: [PATCH 3/9] fix: no requirements --- concourse/scripts/test_and_build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh index c9023f4e..4f9f5f29 100755 --- a/concourse/scripts/test_and_build.sh +++ b/concourse/scripts/test_and_build.sh @@ -13,6 +13,7 @@ function _main() { unset PYTHONHOME tox -e test_py39 # build wheel + pip3 install . pip3 wheel . mkdir ../greenplumpython_artifacts cp ./*.whl ../greenplumpython_artifacts From 5cc6a2ea6649f7543319a5ddb8107538509fddd1 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 30 Aug 2022 18:24:29 +0800 Subject: [PATCH 4/9] fix: merge master --- concourse/scripts/test_and_build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh index 4f9f5f29..c9023f4e 100755 --- a/concourse/scripts/test_and_build.sh +++ b/concourse/scripts/test_and_build.sh @@ -13,7 +13,6 @@ function _main() { unset PYTHONHOME tox -e test_py39 # build wheel - pip3 install . pip3 wheel . mkdir ../greenplumpython_artifacts cp ./*.whl ../greenplumpython_artifacts From 62467fdd45b73d084187e8ae8bbf1beac00941e3 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 30 Aug 2022 18:39:57 +0800 Subject: [PATCH 5/9] fix: --- concourse/scripts/test_and_build.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh index c9023f4e..92e67d62 100755 --- a/concourse/scripts/test_and_build.sh +++ b/concourse/scripts/test_and_build.sh @@ -13,9 +13,7 @@ function _main() { unset PYTHONHOME tox -e test_py39 # build wheel - pip3 wheel . - mkdir ../greenplumpython_artifacts - cp ./*.whl ../greenplumpython_artifacts + pip3 wheel . -w ../greenplumpython_artifacts popd } From c556f24e68dc21349916412b0eeb073c481dd58f Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Wed, 31 Aug 2022 15:09:34 +0800 Subject: [PATCH 6/9] fix: build tarball --- concourse/pipeline/job_def.lib.yml | 64 ++++++++++++++++++----------- concourse/pipeline/res_def.yml | 51 +++++++++++++++++++++-- concourse/scripts/entry.sh | 6 --- concourse/scripts/test.sh | 0 concourse/scripts/test_and_build.sh | 2 + 5 files changed, 90 insertions(+), 33 deletions(-) mode change 100755 => 100644 concourse/scripts/test.sh diff --git a/concourse/pipeline/job_def.lib.yml b/concourse/pipeline/job_def.lib.yml index 9a731adf..edbc2303 100644 --- a/concourse/pipeline/job_def.lib.yml +++ b/concourse/pipeline/job_def.lib.yml @@ -1,6 +1,15 @@ #@ load("base.lib.yml", "add_res_by_conf", "add_res_by_name") #@ load("@ytt:template", "template") + +#@ def inter_bin_name(base_name, release_build): +#@ if release_build: +#@ return base_name + "_rel" +#@ end +#@ +#@ return base_name +#@ end + #! Use bin_gpdb_postfix="" to use a release version of gpdb binary #! Job config for centos7 #@ def centos7_gpdb6_conf(release_build=False): @@ -8,8 +17,10 @@ res_test_image: centos7-gpdb6-image-test res_gpdb_bin: bin_gpdb6_centos7 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_rhel7 +res_intermediates_bin: #@ inter_bin_name("bin_greenplumpython_rhel7_intermediates", release_build) os: rhel7 release_build: #@ release_build +release_bin: bin_greenplumpython_rhel7_release #@ end #! Job config for rhel8 @@ -18,8 +29,10 @@ res_test_image: rhel8-gpdb6-image-test res_gpdb_bin: bin_gpdb6_rhel8 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_rhel8 +res_intermediates_bin: #@ inter_bin_name("bin_greenplumpython_rhel8_intermediates", release_build) os: rhel8 release_build: #@ release_build +release_bin: bin_greenplumpython_rhel8_release #@ end #! Job config for ubuntu18 @@ -28,8 +41,10 @@ res_test_image: ubuntu18-gpdb6-image-test res_gpdb_bin: bin_gpdb6_ubuntu18 res_gpdb_src: gpdb6_src res_plpython3_bin: bin_plpython3_gpdb6_ubuntu18 +res_intermediates_bin: #@ inter_bin_name("bin_greenplumpython_ubuntu18_intermediates", release_build) os: ubuntu1804 release_build: #@ release_build +release_bin: bin_greenplumpython_ubuntu18_release #@ end #! The entry point of a pipeline. The job name must be 'entrance'. @@ -86,24 +101,6 @@ plan: #@ end #@ end -#@ def _test_task(conf): -task: #@ "test_" + conf["os"] -timeout: 2h -config: - platform: linux - run: - path: greenplumpython_src/concourse/scripts/entry.sh - args: - - test - inputs: - - name: bin_gpdb - - name: gpdb_src - - name: greenplumpython_src - - name: bin_plpython3 -image: image_test -params: -#@ end - #@ def _test_and_build_task(conf): task: #@ "test_and_build" + conf["os"] timeout: 2h @@ -151,11 +148,10 @@ plan: resource: #@ conf["res_gpdb_src"] - get: bin_plpython3 resource: #@ conf["res_plpython3_bin"] -#@ if conf["release_build"]: - #@ _test_and_build_task(conf) -#@ else: -- #@ _test_task(conf) -#@ end +- put: #@ conf["res_intermediates_bin"] + params: + file: greenplumpython_artifacts/greenplumpython.tar.gz #@ end #! The final release job @@ -168,11 +164,31 @@ plan: #@ res_map = param["res_map"] #@ for conf in confs: #@ passed_jobs.append(build_test_job_name(conf)) +#@ add_res_by_name(res_map, conf["release_bin"]) #@ end name: exit_release on_failure: #@ trigger["on_failure"] on_error: #@ trigger["on_error"] on_success: #@ trigger["on_success"] plan: - -#@ end +#@ for to_get in trigger["to_get"]: +- passed: #@ passed_jobs + _: #@ template.replace(to_get) +#@ end +- in_parallel: + steps: +#@ for i, conf in enumerate(confs): + - do: + - get: #@ conf["res_intermediates_bin"] + passed: + - #@ passed_jobs[i] + params: + unpack: true + - put: #@ conf["release_bin"] + params: + file: #@ conf["res_intermediates_bin"] + "/greenplumpython.*.tar.gz" +#@ end +#@ for to_put in trigger["to_put_post"]: +- #@ to_put +#@ end +#@ end \ No newline at end of file diff --git a/concourse/pipeline/res_def.yml b/concourse/pipeline/res_def.yml index 9980a384..9c3c4267 100644 --- a/concourse/pipeline/res_def.yml +++ b/concourse/pipeline/res_def.yml @@ -103,20 +103,65 @@ resources: json_key: ((concourse-gcs-resources-service-account-key)) regexp: server/published/gpdb6/server-rc-(.*)-ubuntu18.04_x86_64.tar.gz + +# For uploading to the dev bucket +# For uploading every build to gcs +# Dev +- name: bin_greenplumpython_rhel7_intermediates + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates/greenplumpython/greenplumpython_rhel7_gpdb6.tar.gz + +- name: bin_greenplumpython_rhel8_intermediates + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates/greenplumpython/greenplumpython_rhel8_gpdb6.tar.gz + +- name: bin_greenplumpython_ubuntu18_intermediates + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates/greenplumpython/greenplumpython_ubuntu18_gpdb6.tar.gz + +# For uploading to the release bucket +- name: bin_greenplumpython_rhel7_release + type: gcs + source: + bucket: pivotal-gpdb-concourse-resources-prod + json_key: ((concourse-gcs-resources-service-account-key)) + regexp: greenplumpython/released/greenplumpython-(.*).tar.gz +- name: bin_greenplumpython_rhel8_release + type: gcs + source: + bucket: pivotal-gpdb-concourse-resources-prod + json_key: ((concourse-gcs-resources-service-account-key)) + regexp: greenplumpython/released/greenplumpython-(.*).tar.gz +- name: bin_greenplumpython_ubuntu18_release + type: gcs + source: + bucket: pivotal-gpdb-concourse-resources-prod + json_key: ((concourse-gcs-resources-service-account-key)) + regexp: greenplumpython/released/greenplumpython-(.*).tar.gz + # plpython3 for gpdb6 -- name: bin_plpython3_gpdb6_rhel7 +- name: bin_greenplumpython_rhel7 type: gcs source: bucket: gpdb-extensions-concourse-resources json_key: ((extension/extensions-gcs-service-account-key)) versioned_file: intermediates/plpython3/plpython3_rhel7_gpdb6.gppkg -- name: bin_plpython3_gpdb6_rhel8 +- name: bin_greenplumpython_rhel8 type: gcs source: bucket: gpdb-extensions-concourse-resources json_key: ((extension/extensions-gcs-service-account-key)) versioned_file: intermediates/plpython3/plpython3_rhel8_gpdb6.gppkg -- name: bin_plpython3_gpdb6_ubuntu18 +- name: bin_greenplumpython_ubuntu18 type: gcs source: bucket: gpdb-extensions-concourse-resources diff --git a/concourse/scripts/entry.sh b/concourse/scripts/entry.sh index 8e285282..b61e094d 100755 --- a/concourse/scripts/entry.sh +++ b/concourse/scripts/entry.sh @@ -161,12 +161,6 @@ setup_gpadmin_bashrc # Do the special setup with root permission for the each task, then run the real task script with # gpadmin. bashrc won't be read by 'su', it needs to be sourced explicitly. case "$1" in - test) - # To make fly debug easier - su gpadmin -c \ - "source /home/gpadmin/.bashrc &&\ - /home/gpadmin/greenplumpython_src/concourse/scripts/test.sh" - ;; test_and_build) # To make fly debug easier su gpadmin -c \ diff --git a/concourse/scripts/test.sh b/concourse/scripts/test.sh old mode 100755 new mode 100644 diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh index 92e67d62..f26fc49a 100755 --- a/concourse/scripts/test_and_build.sh +++ b/concourse/scripts/test_and_build.sh @@ -15,6 +15,8 @@ function _main() { # build wheel pip3 wheel . -w ../greenplumpython_artifacts popd + name=$(find greenplumpython_artifacts -maxdepth 1 -regex "psycopg.*whl" | sed 's/....$//' |awk '{split($0, a, "-"); print a[3]"-"a[4]"-"a[5]}') + tar -czf greenplumpython_artifacts/greenplumpython_"${name}".tar.gz greenplumpython_artifacts/*.whl } _main From 3be7661b66a6e1f600a6f1975c9cfb639506d5b6 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Wed, 31 Aug 2022 15:19:21 +0800 Subject: [PATCH 7/9] fix: resource --- concourse/pipeline/res_def.yml | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/concourse/pipeline/res_def.yml b/concourse/pipeline/res_def.yml index 9c3c4267..941ce3d7 100644 --- a/concourse/pipeline/res_def.yml +++ b/concourse/pipeline/res_def.yml @@ -128,6 +128,27 @@ resources: json_key: ((extension/extensions-gcs-service-account-key)) versioned_file: intermediates/greenplumpython/greenplumpython_ubuntu18_gpdb6.tar.gz +# Release +- name: bin_greenplumpython_rhel7_intermediates_rel + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates_release/greenplumpython/greenplumpython_rhel7_gpdb6.tar.gz +- name: bin_greenplumpython_rhel8_intermediates_rel + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates_release/greenplumpython/greenplumpython_rhel8_gpdb6.tar.gz +- name: bin_greenplumpython_ubuntu18_intermediates_rel + type: gcs + source: + bucket: gpdb-extensions-concourse-resources + json_key: ((extension/extensions-gcs-service-account-key)) + versioned_file: intermediates_release/greenplumpython/greenplumpython_ubuntu18.04_gpdb6.tar.gz + + # For uploading to the release bucket - name: bin_greenplumpython_rhel7_release type: gcs @@ -149,19 +170,19 @@ resources: regexp: greenplumpython/released/greenplumpython-(.*).tar.gz # plpython3 for gpdb6 -- name: bin_greenplumpython_rhel7 +- name: bin_plpython3_gpdb6_rhel7 type: gcs source: bucket: gpdb-extensions-concourse-resources json_key: ((extension/extensions-gcs-service-account-key)) versioned_file: intermediates/plpython3/plpython3_rhel7_gpdb6.gppkg -- name: bin_greenplumpython_rhel8 +- name: bin_plpython3_gpdb6_rhel8 type: gcs source: bucket: gpdb-extensions-concourse-resources json_key: ((extension/extensions-gcs-service-account-key)) versioned_file: intermediates/plpython3/plpython3_rhel8_gpdb6.gppkg -- name: bin_greenplumpython_ubuntu18 +- name: bin_plpython3_gpdb6_ubuntu18 type: gcs source: bucket: gpdb-extensions-concourse-resources From e5016d7048d4993350e82505440aa18316683847 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Wed, 31 Aug 2022 15:25:58 +0800 Subject: [PATCH 8/9] fix: change tar name --- concourse/scripts/test_and_build.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/concourse/scripts/test_and_build.sh b/concourse/scripts/test_and_build.sh index f26fc49a..a8a215c5 100755 --- a/concourse/scripts/test_and_build.sh +++ b/concourse/scripts/test_and_build.sh @@ -15,8 +15,7 @@ function _main() { # build wheel pip3 wheel . -w ../greenplumpython_artifacts popd - name=$(find greenplumpython_artifacts -maxdepth 1 -regex "psycopg.*whl" | sed 's/....$//' |awk '{split($0, a, "-"); print a[3]"-"a[4]"-"a[5]}') - tar -czf greenplumpython_artifacts/greenplumpython_"${name}".tar.gz greenplumpython_artifacts/*.whl + tar -czf greenplumpython_artifacts/greenplumpython.tar.gz greenplumpython_artifacts/*.whl } _main From dfc6a8a29f4434ff36a74b988acd0421b5ab8e58 Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Tue, 6 Sep 2022 15:24:54 +0800 Subject: [PATCH 9/9] fix: post add version --- concourse/pipeline/job_def.lib.yml | 2 +- concourse/pipeline/trigger_def.lib.yml | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/concourse/pipeline/job_def.lib.yml b/concourse/pipeline/job_def.lib.yml index edbc2303..de7536c3 100644 --- a/concourse/pipeline/job_def.lib.yml +++ b/concourse/pipeline/job_def.lib.yml @@ -186,7 +186,7 @@ plan: unpack: true - put: #@ conf["release_bin"] params: - file: #@ conf["res_intermediates_bin"] + "/greenplumpython.*.tar.gz" + file: #@ conf["res_intermediates_bin"] + "/greenplumpython_*_*.tar.gz" #@ end #@ for to_put in trigger["to_put_post"]: - #@ to_put diff --git a/concourse/pipeline/trigger_def.lib.yml b/concourse/pipeline/trigger_def.lib.yml index e4ac4ae9..47d37fe9 100644 --- a/concourse/pipeline/trigger_def.lib.yml +++ b/concourse/pipeline/trigger_def.lib.yml @@ -65,7 +65,11 @@ to_get: - get: greenplumpython_src resource: greenplumpython_commit to_put_pre: #@ [] -to_put_post: #@ [] +to_put_post: +- put: greenplumpython_commit + params: + repository: greenplumpython_src + tag: greenplumpython_src/VERSION #! To set the github commit status, https://github.com/Pix4D/cogito is a good choice. #! Unfortunately it doesn't work with Concourse 5. on_success: