From bd8b1672251ab44f352fb812ef78b8a06905e981 Mon Sep 17 00:00:00 2001 From: Michael Zalimeni Date: Mon, 6 May 2024 11:35:53 -0400 Subject: [PATCH] ci: skip LICENSE.txt copy for Ent releases Ensure we do not unintentionally copy CE LICENSE.txt to Ent release artifacts. Also rework Go Build jobs to avoid future sync conflicts by handling CE and Ent builds simultaneously. --- .github/scripts/copy-legal.sh | 34 ++++++++++++++++++++++++++++++++++ .github/workflows/build.yml | 26 +++++++++++++------------- 2 files changed, 47 insertions(+), 13 deletions(-) create mode 100755 .github/scripts/copy-legal.sh 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