summaryrefslogtreecommitdiff
path: root/scripts/buildPackage.sh
blob: d767eba68005e066f9ee0dc998f54c4ca24643fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env bash

set -euo pipefail

. $(dirname $0)/commons.sh

SCRIPTS_DIR="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="${SCRIPTS_DIR}/../dist/"
SOURCE_DIR="${SCRIPTS_DIR}/../"
NAME="azuredevops"
BUILD_ARTIFACT="terraform-provider-${NAME}_v${VERSION}"
ARCHIVE_ARTIFACT="terraform-provider-${NAME}_${VERSION}"

OS_ARCH=("freebsd:amd64"
  "freebsd:386"
  "freebsd:arm"
  "freebsd:arm64"
  "windows:amd64"
  "windows:386"
  "linux:amd64"
  "linux:386"
  "linux:arm"
  "linux:arm64"
  "darwin:amd64"
  "darwin:arm64")


function clean() {
  info "Cleaning $BUILD_DIR"
  rm -rf "$BUILD_DIR"
  mkdir -p "$BUILD_DIR"
}

function release() {
  info "Clean build directory"
  clean

  info "Attempting to build ${BUILD_ARTIFACT}"

  cd "$SOURCE_DIR"
  go mod download
  for os_arch in "${OS_ARCH[@]}" ; do
    OS=${os_arch%%:*}
    ARCH=${os_arch#*:}
    info "GOOS: ${OS}, GOARCH: ${ARCH}"
    (
      env GOOS="${OS}" GOARCH="${ARCH}" CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X 'github.com/microsoft/terraform-provider-azuredevops/version.ProviderVersion=v${VERSION}'" -o "${BUILD_ARTIFACT}"
      zip "${ARCHIVE_ARTIFACT}_${OS}_${ARCH}.zip" "${BUILD_ARTIFACT}"
      rm -rf "${BUILD_ARTIFACT}"
    )
  done
  mv *.zip "${BUILD_DIR}"
  cd "${BUILD_DIR}"
  shasum -a 256 *.zip > "${ARCHIVE_ARTIFACT}_SHA256SUMS"
  cp "${ARCHIVE_ARTIFACT}_SHA256SUMS" "${ARCHIVE_ARTIFACT}_SHA256SUMS.sig"
  cat "${ARCHIVE_ARTIFACT}_SHA256SUMS"
  cp ../scripts/dearmor.sh ./
}

release