github.com/bshelton229/agent@v3.5.4+incompatible/.buildkite/steps/upload-release-steps.sh (about) 1 #!/bin/bash 2 set -euo pipefail 3 4 # Generates and uploads pipeline steps for the edge, beta and stable release 5 6 trigger_step() { 7 local name="$1" 8 local trigger_pipeline="$2" 9 local branch="$BUILDKITE_BRANCH" 10 local message_suffix="" 11 12 if [[ "${DRY_RUN:-false}" == "true" ]] ; then 13 message_suffix=" (dry-run)" 14 fi 15 16 cat <<YAML 17 - name: ":rocket: ${name}${message_suffix}" 18 trigger: "${trigger_pipeline}" 19 async: false 20 branches: "${branch}" 21 build: 22 message: "Release for ${agent_version}, build ${build_version}${message_suffix}" 23 commit: "${BUILDKITE_COMMIT}" 24 branch: "${BUILDKITE_BRANCH}" 25 meta_data: 26 agent-artifacts-build: "${BUILDKITE_BUILD_ID}" 27 agent-version: "${agent_version}" 28 agent-version-build: "${build_version}" 29 agent-version-full: "${full_agent_version}" 30 agent-docker-image-alpine: "${agent_docker_image_alpine}" 31 agent-docker-image-ubuntu: "${agent_docker_image_ubuntu}" 32 agent-is-prerelease: "${agent_is_prerelease}" 33 env: 34 DRY_RUN: "${DRY_RUN:-false}" 35 YAML 36 } 37 38 block_step() { 39 local label="$1" 40 cat <<YAML 41 - wait 42 - block: "${label}" 43 YAML 44 } 45 46 output_steps_yaml() { 47 echo "steps:" 48 49 trigger_step \ 50 "edge ${agent_version}.${build_version}" \ 51 "agent-release-edge" 52 53 block_step "beta?" 54 55 trigger_step \ 56 "beta ${agent_version}" \ 57 "agent-release-beta" 58 59 if [[ ! "$agent_version" =~ (beta|rc) ]] ; then 60 block_step "stable?" 61 62 trigger_step \ 63 "stable ${agent_version}" \ 64 "agent-release-stable" 65 fi 66 } 67 68 if [[ "${BUILDKITE_BRANCH}" != "master" && "${DRY_RUN}" != "true" && "${BUILDKITE_BRANCH}" != *-*-stable ]] ; then 69 echo "No release steps to be uploaded" 70 exit 0 71 fi 72 73 agent_version=$(buildkite-agent meta-data get "agent-version") 74 build_version=$(buildkite-agent meta-data get "agent-version-build") 75 full_agent_version=$(buildkite-agent meta-data get "agent-version-full") 76 agent_docker_image_alpine=$(buildkite-agent meta-data get "agent-docker-image-alpine") 77 agent_docker_image_ubuntu=$(buildkite-agent meta-data get "agent-docker-image-ubuntu") 78 agent_is_prerelease=$(buildkite-agent meta-data get "agent-is-prerelease") 79 80 # If there is already a release (which means a tag), we want to avoid trying to create 81 # another one, as this will fail and cause partial broken releases 82 if [[ "${DRY_RUN:-false}" == "false" ]] && git ls-remote --tags origin | grep "refs/tags/v${agent_version}" ; then 83 echo "Tag refs/tags/v${agent_version} already exists" 84 exit 0 85 fi 86 87 output_steps_yaml | buildkite-agent pipeline upload