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