60 lines
1.6 KiB
Bash
60 lines
1.6 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
ci_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../" && pwd)"
|
||
|
|
readonly ci_dir
|
||
|
|
# shellcheck source=ci/util/artifacts/common.sh
|
||
|
|
source "$ci_dir/util/artifacts/common.sh"
|
||
|
|
|
||
|
|
usage=$(cat <<EOF
|
||
|
|
Usage: $0 <name> [<regex> ...]
|
||
|
|
|
||
|
|
Creates an artifact consisting of a zip file containing a single file or set of regex matches.
|
||
|
|
|
||
|
|
Regexes are passed to the $(command -v find) command's -regex option in the current directory.
|
||
|
|
'./' is prepended to all regexes for convenience.
|
||
|
|
The artifact will contain all matching files with paths relative to the current directory.
|
||
|
|
|
||
|
|
If no regexes are provided, the artifact will be created from a file in the current directory.
|
||
|
|
The file must have the same name as the artifact.
|
||
|
|
|
||
|
|
Example Usage:
|
||
|
|
|
||
|
|
Create an artifact of the given file in the current directory using the filename as the artifact name:
|
||
|
|
|
||
|
|
$0 some_resource.log
|
||
|
|
|
||
|
|
Copy all files that match the regexes to a staging directory, and upload a artifact that zips this directory.
|
||
|
|
|
||
|
|
$0 job-\$JOB_ID-products \
|
||
|
|
'build\.ninja$' \
|
||
|
|
'.*rules\.ninja$' \
|
||
|
|
'CMakeCache\.txt$' \
|
||
|
|
'.*VerifyGlobs\.cmake$' \
|
||
|
|
'.*CTestTestfile\.cmake$' \
|
||
|
|
'bin/.*' \
|
||
|
|
'lib/.*'
|
||
|
|
EOF
|
||
|
|
)
|
||
|
|
readonly usage
|
||
|
|
|
||
|
|
if [[ "$#" -lt 1 ]]; then
|
||
|
|
echo "Error: Missing artifact name." >&2
|
||
|
|
echo "$usage" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
readonly artifact_name="$1"
|
||
|
|
|
||
|
|
# If no regexes are provided, use the artifact name as the path:
|
||
|
|
if [[ "$#" -eq 1 ]]; then
|
||
|
|
"$ci_dir/util/artifacts/upload/register.sh" "$artifact_name" "$artifact_name"
|
||
|
|
exit
|
||
|
|
fi
|
||
|
|
|
||
|
|
shift
|
||
|
|
|
||
|
|
"$ci_dir/util/artifacts/stage.sh" "$artifact_name" "$@" > /dev/null
|
||
|
|
"$ci_dir/util/artifacts/upload_stage.sh" "$artifact_name"
|