X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Frelease-job.sh;h=7c78a8706ff47e0230ddd086fa1792b1842587e1;hb=refs%2Fchanges%2F69%2F62369%2F5;hp=5ee06f559b55cbfec8ea0db2b89ac9ceebb02dc0;hpb=c53e11db14ab7abede74c74801bec9ca381c8cc6;p=releng%2Fglobal-jjb.git diff --git a/shell/release-job.sh b/shell/release-job.sh index 5ee06f55..7c78a870 100644 --- a/shell/release-job.sh +++ b/shell/release-job.sh @@ -336,6 +336,36 @@ pypi_release_file(){ tag } +packagecloud_verify(){ + echo "INFO: ---> Verifying $1 exists in staging..." + if [[ $1 == $(curl --netrc-file ~/packagecloud_api --silent \ + https://packagecloud.io/api/v1/repos/"$2"/search?q="$1" \ + | yq -r .[].filename) ]]; then + echo "INFO: $1 exists in staging!" + echo "INFO: Existing package location: https://packagecloud.io$(curl \ + --netrc-file ~/packagecloud_api --silent \ + https://packagecloud.io/api/v1/repos/"$2"/search?q="$1" \ + | yq -r .[].package_html_url)" + else + echo "ERROR: $package_name does not exist in staging" + exit 1 + fi +} + +packagecloud_promote(){ + echo "INFO: ---> Preparing to promote $1..." + promote_url="https://packagecloud.io$(curl --netrc-file ~/packagecloud_api \ + --silent https://packagecloud.io/api/v1/repos/"$2"/search?q="$1" \ + | yq -r .[].promote_url)" + echo "INFO: Promoting $1 from staging to release" + curl --netrc-file ~/packagecloud_api -X POST -F \ + destination=o-ran-sc/release "$promote_url" \ + | echo "INFO: Promoted package location: \ + https://packagecloud.io$(yq -r .package_html_url)" +} + +############################## End Function Declarations ################################ + # Set common environment variables set_variables_common @@ -376,6 +406,21 @@ elif [[ "$DISTRIBUTION_TYPE" == "pypi" ]]; then verify_version verify_pypi_match_release pypi_release_file +elif [[ "$DISTRIBUTION_TYPE" == "packagecloud" ]]; then + RELEASE_SCHEMA="release-packagecloud-schema.yaml" + package_name=$(yq -r '.package_name' $release_file) + username_repo="o-ran-sc/staging" + echo "INFO: Fetching schema $RELEASE_SCHEMA" + wget -q https://raw.githubusercontent.com/lfit/releng-global-jjb/master/\ + schema/${RELEASE_SCHEMA} + verify_schema + for name in $(yq -r '.package_name[].name' $release_file); do + package_name=$name + packagecloud_verify "$package_name" "$username_repo" + if [[ "$JOB_NAME" =~ "merge" ]] && ! $DRY_RUN; then + packagecloud_promote "$package_name" "$username_repo" + fi + done else echo "ERROR: distribution_type: $DISTRIBUTION_TYPE not supported" exit 1