diff --git a/.github/scripts/copy-legal.sh b/.github/scripts/copy-legal.sh new file mode 100755 index 0000000000..03c21e9b6f --- /dev/null +++ b/.github/scripts/copy-legal.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: BUSL-1.1 + +set -euo pipefail + +repository_name=${1} +target_dirs="${@:2}" + +if [ -z "$repository_name" ] || [ -z "$target_dirs" ]; then + echo "Error: repository_name and at least one value for target_dirs must be non-empty strings." + exit 1 +fi + +function copy_file { + for dir in $target_dirs; do + mkdir -p $dir + target_path="$dir/${2}" + echo "-> Copying $1 to $target_path" + cp "${1}" $target_path + done +} + +if [[ $repository_name == *"-enterprise" ]]; then + echo "Copying legal (Ent)" + echo "Downloading EULA.txt and TermsOfEvaluation.txt" + curl -so /tmp/EULA.txt https://eula.hashicorp.com/EULA.txt + curl -so /tmp/TermsOfEvaluation.txt https://eula.hashicorp.com/TermsOfEvaluation.txt + copy_file /tmp/EULA.txt EULA.txt + copy_file /tmp/TermsOfEvaluation.txt TermsOfEvaluation.txt +else + echo "Copying legal (CE)" + copy_file LICENSE LICENSE.txt +fi diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b68fb9e3fd..f5ac431987 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: # Push events on the main branch - main - release/** + workflow_dispatch: env: PKG_NAME: consul @@ -141,15 +142,10 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE $TARGET_DIR/LICENSE.txt - go build -ldflags="$GOLDFLAGS" -o "$BIN_PATH" -trimpath -buildvcs=false - - - name: Copy license file - env: - LICENSE_DIR: ".release/linux/package/usr/share/doc/${{ env.PKG_NAME }}" - run: | - mkdir -p "$LICENSE_DIR" - cp LICENSE "$LICENSE_DIR/LICENSE.txt" + # Note that for non-linux builds, .release/linux/package... is a no-op, + # but files will always included in the zip root directory (TARGET_DIR) on all platforms. + ./.github/scripts/copy-legal.sh "${{ github.repository }}" "$TARGET_DIR" ".release/linux/package/usr/share/doc/${{ env.PKG_NAME }}" + ${{ matrix.env }} go build -ldflags="$GOLDFLAGS" -tags="${{ matrix.gotags }}" -o "$BIN_PATH" -trimpath -buildvcs=false - name: Package if: ${{ matrix.goos == 'linux' }} @@ -240,8 +236,10 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE $TARGET_DIR/LICENSE.txt - go build -ldflags="$GOLDFLAGS" -o "$BIN_PATH" -trimpath -buildvcs=false + # Note that for non-linux builds, .release/linux/package... is a no-op, + # but files will always included in the zip root directory (TARGET_DIR) on all platforms. + ./.github/scripts/copy-legal.sh "${{ github.repository }}" "$TARGET_DIR" ".release/linux/package/usr/share/doc/${{ env.PKG_NAME }}" + go build -ldflags="$GOLDFLAGS" -tags="${{ matrix.gotags }}" -o "$BIN_PATH" -trimpath -buildvcs=false build-darwin: needs: @@ -291,8 +289,10 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE $TARGET_DIR/LICENSE.txt - go build -ldflags="$GOLDFLAGS" -tags netcgo -o "$BIN_PATH" -trimpath -buildvcs=false + # Note that for non-linux builds, .release/linux/package... is a no-op, + # but files will always included in the zip root directory (TARGET_DIR) on all platforms. + ./.github/scripts/copy-legal.sh "${{ github.repository }}" "$TARGET_DIR" ".release/linux/package/usr/share/doc/${{ env.PKG_NAME }}" + go build -ldflags="$GOLDFLAGS" -tags="${{ matrix.gotags }}" -o "$BIN_PATH" -trimpath -buildvcs=false build-docker: name: Docker ${{ matrix.arch }} build