github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/contrib/cirrus/upload_release_archive.sh (about) 1 #!/bin/bash 2 3 set -eo pipefail 4 5 source $(dirname $0)/lib.sh 6 7 req_env_var CI UPLDREL_IMAGE CIRRUS_BUILD_ID GOSRC RELEASE_GCPJSON RELEASE_GCPNAME RELEASE_GCPROJECT 8 9 [[ "$CI" == "true" ]] || \ 10 die 56 "$0 must be run under Cirrus-CI to function" 11 12 SWAGGER_FILEPATH="pkg/api/swagger.yaml" 13 14 # We store "releases" for each PR, mostly to validate the process is functional 15 unset PR_OR_BRANCH BUCKET 16 if [[ -n "$CIRRUS_PR" ]] 17 then 18 PR_OR_BRANCH="pr$CIRRUS_PR" 19 BUCKET="libpod-pr-releases" 20 elif [[ -n "$CIRRUS_BRANCH" ]] 21 then 22 # Only release binaries for docs 23 if [[ $CIRRUS_TASK_NAME =~ "docs" ]] 24 then 25 PR_OR_BRANCH="$CIRRUS_BRANCH" 26 BUCKET="libpod-$CIRRUS_BRANCH-releases" 27 else 28 warn "" "Skipping release processing for non-docs task." 29 exit 0 30 fi 31 else 32 die 1 "Expecting either \$CIRRUS_PR or \$CIRRUS_BRANCH to be non-empty." 33 fi 34 35 # Functional local podman required for uploading 36 echo "Verifying a local, functional podman, building one if necessary." 37 [[ -n "$(type -P podman)" ]] || \ 38 make install PREFIX=/usr || \ 39 die 57 "$0 requires working podman binary on path to function" 40 41 TMPF=$(mktemp -p '' $(basename $0)_XXXX.json) 42 trap "rm -f $TMPF" EXIT 43 set +x 44 echo "$RELEASE_GCPJSON" > "$TMPF" 45 [[ "$OS_RELEASE_ID" == "ubuntu" ]] || \ 46 chcon -t container_file_t "$TMPF" 47 unset RELEASE_GCPJSON 48 49 cd $GOSRC 50 for filename in $(ls -1 $SWAGGER_FILEPATH) 51 do 52 unset EXT 53 EXT=$(echo "$filename" | sed -r -e 's/.+\.(.+$)/\1/g') 54 if [[ -z "$EXT" ]] || [[ "$EXT" == "$filename" ]] 55 then 56 echo "Warning: Not processing $filename (invalid extension '$EXT')" 57 continue 58 fi 59 if [[ "$EXT" =~ "gz" ]] 60 then 61 EXT="tar.gz" 62 fi 63 64 if [[ $filename == $SWAGGER_FILEPATH ]] 65 then 66 # Support other tools referencing branch and/or version-specific refs. 67 TO_FILENAME="swagger-${RELEASE_VERSION}-${PR_OR_BRANCH}.yaml" 68 # For doc. ref. this must always be a static filename, e.g. swagger-latest-master.yaml 69 ALSO_FILENAME="swagger-latest-${PR_OR_BRANCH}.yaml" 70 else 71 die "Uploading non-docs files has been disabled" 72 fi 73 74 [[ "$OS_RELEASE_ID" == "ubuntu" ]] || \ 75 chcon -t container_file_t "$filename" 76 77 echo "Running podman ... $UPLDREL_IMAGE for $filename -> $TO_FILENAME" 78 podman run -i --rm \ 79 -e "GCPNAME=$RELEASE_GCPNAME" \ 80 -e "GCPPROJECT=$RELEASE_GCPROJECT" \ 81 -e "GCPJSON_FILEPATH=$TMPF" \ 82 -e "FROM_FILEPATH=/tmp/$filename" \ 83 -e "TO_FILENAME=$TO_FILENAME" \ 84 -e "ALSO_FILENAME=$ALSO_FILENAME" \ 85 -e "PR_OR_BRANCH=$PR_OR_BRANCH" \ 86 -e "BUCKET=$BUCKET" \ 87 -v "$TMPF:$TMPF:ro" \ 88 -v "$(realpath $GOSRC/$filename):/tmp/$filename:ro" \ 89 $UPLDREL_IMAGE 90 done