diff --git a/shared/tasks/run-bin-release-binaries/linux.yml b/shared/tasks/run-bin-release-binaries/linux.yml new file mode 100644 index 00000000..cdd40bc4 --- /dev/null +++ b/shared/tasks/run-bin-release-binaries/linux.yml @@ -0,0 +1,20 @@ +--- +platform: linux + +inputs: +- name: ci +- name: repo +- name: version + +outputs: +- name: released-binaries + +params: + DIR: . + OS: | + linux + ARCH: | + amd64 + +run: + path: ci/shared/tasks/run-bin-release-binaries/task.bash diff --git a/shared/tasks/run-bin-release-binaries/metadata.yml b/shared/tasks/run-bin-release-binaries/metadata.yml new file mode 100644 index 00000000..e2263590 --- /dev/null +++ b/shared/tasks/run-bin-release-binaries/metadata.yml @@ -0,0 +1,17 @@ +--- +readme: | + This task will run respective `./bin/release-binaries.bash` for different OSes and architectures for repositories + that are meant to release binaries in their github releases. Each repo is responsible for how they like to package + their binaries. Script will be called with the following signature `./bin/release-binaries.bash "${arch}" "${os}" "${version}" "${output_dir}"` +oses: + - linux +params: + DIR: (Defaults to .) Path to where you can run `./bin/release-binaries.bash`. + OS: | + (Defaults to + linux + ) Multiline oses that are used to release the binaries. + ARCH: | + (Defaults to + amd64 + ) Multiline architectures that are used to release the binaries. diff --git a/shared/tasks/run-bin-release-binaries/task.bash b/shared/tasks/run-bin-release-binaries/task.bash new file mode 100755 index 00000000..c744b71e --- /dev/null +++ b/shared/tasks/run-bin-release-binaries/task.bash @@ -0,0 +1,45 @@ +#!/bin/bash + +set -eEu +set -o pipefail + +THIS_FILE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +export TASK_NAME="$(basename $THIS_FILE_DIR)" +source "$THIS_FILE_DIR/../../../shared/helpers/helpers.bash" +unset THIS_FILE_DIR + +function run(){ + local task_tmp_dir="${1:?provide temp dir for task}" + shift 1 + + git_safe_directory + + local version + version="$(cat version/version)" + + pushd "repo/$DIR" > /dev/null + + debug "Releasing $(get_git_remote_name) version ${version}" + + IFS=$'\n' + for arch in ${ARCH}; do + for os in ${OS}; do + debug "Running release-binaries for Arch (${arch}) and Os (${os})" + ./bin/release-binaries.bash "${arch}" "${os}" "${version}" "${task_tmp_dir}" + done + done + + popd > /dev/null + + cp -r ${task_tmp_dir}/* ./released-binaries/ + +} + +function cleanup() { + rm -rf $task_tmp_dir +} + +task_tmp_dir="$(mktemp -d -t 'XXXX-task-tmp-dir')" +trap cleanup EXIT +trap 'err_reporter $LINENO' ERR +run $task_tmp_dir "$@"