github.com/hashicorp/terraform-plugin-sdk@v1.17.2/scripts/release/release.sh (about) 1 #!/bin/bash 2 3 set -e 4 set -x 5 6 # release.sh will: 7 # 1. Modify changelog 8 # 2. Run changelog links script 9 # 3. Modify version in meta/meta.go 10 # 4. Commit and push changes 11 # 5. Create a Git tag 12 13 function pleaseUseGNUsed { 14 echo "Please install GNU sed to your PATH as 'sed'." 15 exit 1 16 } 17 18 function init { 19 sed --version > /dev/null || pleaseUseGNUsed 20 21 DATE=`date '+%B %d, %Y'` 22 START_DIR=`pwd` 23 24 if [ "$CI" = true ] ; then 25 GPG_KEY_ID=FBA4BCB482BC44B5 26 gpg --import <(echo -e "${GPG_PUBLIC_KEY}") 27 gpg --import <(echo -e "${GPG_PRIVATE_KEY}") 28 git config --global user.email hashibot-feedback+tf-sdk-circleci@hashicorp.com 29 git config --global user.name "Terraform SDK CircleCI" 30 fi 31 32 TARGET_VERSION="$(getTargetVersion)" 33 } 34 35 function getTargetVersion { 36 # parse target version from CHANGELOG 37 sed -n 's/^# \([0-9]\+\.[0-9]\+\.[0-9]\+\) (Unreleased)$/\1/p' CHANGELOG.md || \ 38 (echo "\nTarget version not found in changelog, exiting" && \ 39 exit 1) 40 } 41 42 function modifyChangelog { 43 sed -i "s/$TARGET_VERSION (Unreleased)$/$TARGET_VERSION ($DATE)/" CHANGELOG.md 44 } 45 46 function changelogLinks { 47 ./scripts/release/changelog_links.sh 48 } 49 50 function changelogMain { 51 printf "Modifying Changelog..." 52 modifyChangelog 53 printf "ok!\n" 54 printf "Running Changelog Links..." 55 changelogLinks 56 printf "ok!\n" 57 } 58 59 function modifyVersionFiles { 60 sed -i "s/var SDKVersion =.*/var SDKVersion = \"${TARGET_VERSION}\"/" meta/meta.go 61 sed -i "s/var SDKPrerelease =.*/var SDKPrerelease = \"\"/" meta/meta.go 62 } 63 64 function commitChanges { 65 git add CHANGELOG.md 66 modifyVersionFiles 67 git add meta/meta.go 68 69 if [ "$CI" = true ] ; then 70 git commit --gpg-sign="${GPG_KEY_ID}" -m "v${TARGET_VERSION} [skip ci]" 71 git tag -a -m "v${TARGET_VERSION}" -s -u "${GPG_KEY_ID}" "v${TARGET_VERSION}" 72 else 73 git commit -m "v${TARGET_VERSION} [skip ci]" 74 git tag -a -m "v${TARGET_VERSION}" -s "v${TARGET_VERSION}" 75 fi 76 77 git push origin "${CIRCLE_BRANCH}" 78 git push origin "v${TARGET_VERSION}" 79 } 80 81 function commitMain { 82 printf "Committing Changes..." 83 commitChanges 84 printf "ok!\n" 85 } 86 87 function main { 88 init 89 changelogMain 90 commitMain 91 } 92 93 main