Skip to article frontmatterSkip to article content
2_build_push-2433.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash

set -e

if [[ $# -ne 1 ]]; then
  echo "Usage: $0 <provider>"
  echo "Provider must be one of: docker, quay, harbor, aws, local"
  exit 1
fi

provider="$1"
data_dir="../data/pastis"
config_path="../data/config-2433.json"
match_pattern="^[0-9]{5}\.tar$"

case "$provider" in
  docker)
    registry="docker.io"
    repo_name="versioneer/pastis-2433"
    ;;
  quay)
    registry="quay.io"
    repo_name="versioneer-inc/pastis-2433"
    ;;
  harbor)
    registry="qr2wz4td.c1.de1.container-registry.ovh.net"
    repo_name="versioneer/pastis-2433"
    ;;
  aws)
    registry="767397985165.dkr.ecr.eu-central-1.amazonaws.com"
    repo_name="versioneer/pastis-2433"
    ;;
  local)
    registry="localhost:5000"
    repo_name="pastis-2433"
    ;;
  *)
    echo "Invalid provider: '$provider'. Must be one of: docker, quay, harbor, aws, local"
    exit 1
    ;;
esac

repo="${registry}/${repo_name}:full"

echo "Using data_dir: $data_dir to push to repo: $repo"
echo "Logging into registry: $registry"

oras login "$registry"

layers=()
shopt -s nullglob
for tar in "$data_dir"/*.tar; do
  filename=$(basename "$tar")
  if [[ $filename =~ $match_pattern ]]; then
    layers+=("${tar}:application/vnd.oci.image.layer.v1.tar")
  fi
done

layer_count=${#layers[@]}
if [[ $layer_count -eq 0 ]]; then
  echo "No matching tar files found in $data_dir (pattern: $match_pattern)"
  exit 1
fi

echo "Found $layer_count layer(s) to include:"
for l in "${layers[@]}"; do
  echo "  - $(basename "${l%%:*}")"
done

oras push --verbose "$repo" \
  --artifact-type application/vnd.whatever.v1+tar \
  --config "${config_path}:application/vnd.oci.image.config.v1+json" \
  "${layers[@]}"