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