Georg commited on
Commit
da62a99
·
1 Parent(s): 75b68fd

Prepare job build context

Browse files
Files changed (1) hide show
  1. deploy.sh +62 -7
deploy.sh CHANGED
@@ -3,6 +3,10 @@
3
 
4
  set -e
5
 
 
 
 
 
6
  IMAGE_NAME_L1="gpue/foundationpose-base-l1"
7
  IMAGE_NAME_L2="gpue/foundationpose-base-l2"
8
  TAG="latest"
@@ -42,6 +46,48 @@ if ! "${PY_BIN}" -c "import huggingface_hub" >/dev/null 2>&1; then
42
  "${PY_BIN}" -m pip install --quiet huggingface_hub
43
  fi
44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  # Initialize git repo if needed (for job context)
46
  if [ ! -d .git ]; then
47
  echo "Initializing git repository..."
@@ -59,13 +105,17 @@ if [[ -n $(git status -s) ]]; then
59
  echo "✓ Job context committed"
60
  fi
61
 
62
- # Push a temporary ref for the job to build from
63
- JOB_REF="job-build-$(date +%Y%m%d-%H%M%S)"
64
- echo "Pushing job ref: ${JOB_REF}"
65
- git push "https://huggingface.co/spaces/${HF_SPACE}" "HEAD:${JOB_REF}" --force
66
- echo " Job ref pushed"
67
- echo ""
 
 
 
68
 
 
69
  echo "Stage 1: Building L1 base image via HF Job"
70
  echo "Platform: ${PLATFORM}"
71
  echo "Image: ${IMAGE_NAME_L1}:${TAG}"
@@ -135,7 +185,8 @@ if [ -n "${JOB_ID}" ] && [ -x "${HF_BIN}" ]; then
135
  echo " Job stage: ${JOB_STAGE}"
136
  case "${JOB_STAGE}" in
137
  SUCCESS|SUCCEEDED|COMPLETED|DONE)
138
- echo "✓ Image build job completed"
 
139
  break
140
  ;;
141
  FAILED|ERROR|CANCELED|CANCELLED)
@@ -148,8 +199,10 @@ if [ -n "${JOB_ID}" ] && [ -x "${HF_BIN}" ]; then
148
  esac
149
  done
150
  fi
 
151
 
152
  echo ""
 
153
  echo "Stage 2: Building L2 base image via HF Job"
154
  echo ""
155
 
@@ -218,6 +271,7 @@ if [ -n "${JOB_ID_L2}" ] && [ -x "${HF_BIN}" ]; then
218
  case "${JOB_STAGE}" in
219
  SUCCESS|SUCCEEDED|COMPLETED|DONE)
220
  echo "✓ L2 image build job completed"
 
221
  break
222
  ;;
223
  FAILED|ERROR|CANCELED|CANCELLED)
@@ -230,6 +284,7 @@ if [ -n "${JOB_ID_L2}" ] && [ -x "${HF_BIN}" ]; then
230
  esac
231
  done
232
  fi
 
233
 
234
  echo ""
235
  echo "Stage 3: Deploying to HuggingFace Space"
 
3
 
4
  set -e
5
 
6
+ if [ -z "${BASH_VERSION:-}" ]; then
7
+ exec /bin/bash "$0" "$@"
8
+ fi
9
+
10
  IMAGE_NAME_L1="gpue/foundationpose-base-l1"
11
  IMAGE_NAME_L2="gpue/foundationpose-base-l2"
12
  TAG="latest"
 
46
  "${PY_BIN}" -m pip install --quiet huggingface_hub
47
  fi
48
 
49
+ # Hash helper for build gating
50
+ hash_files() {
51
+ "${PY_BIN}" - <<'PY' "$@"
52
+ import hashlib
53
+ import sys
54
+ from pathlib import Path
55
+
56
+ paths = [Path(p) for p in sys.argv[1:]]
57
+ hasher = hashlib.sha256()
58
+ for path in paths:
59
+ hasher.update(path.as_posix().encode("utf-8"))
60
+ hasher.update(b"\\0")
61
+ hasher.update(path.read_bytes())
62
+ hasher.update(b"\\0")
63
+ print(hasher.hexdigest())
64
+ PY
65
+ }
66
+
67
+ mkdir -p .deploy
68
+
69
+ L1_INPUTS=(Dockerfile.base)
70
+ L2_INPUTS=(Dockerfile.base)
71
+
72
+ L1_HASH=$(hash_files "${L1_INPUTS[@]}")
73
+ L2_HASH=$(hash_files "${L2_INPUTS[@]}")
74
+
75
+ LAST_L1_HASH_FILE=".deploy/last_l1.sha"
76
+ LAST_L2_HASH_FILE=".deploy/last_l2.sha"
77
+
78
+ SKIP_L1=0
79
+ SKIP_L2=0
80
+
81
+ if [ -f "${LAST_L1_HASH_FILE}" ] && [ "$(cat "${LAST_L1_HASH_FILE}")" = "${L1_HASH}" ]; then
82
+ SKIP_L1=1
83
+ echo "L1 inputs unchanged; skipping L1 image job."
84
+ fi
85
+
86
+ if [ -f "${LAST_L2_HASH_FILE}" ] && [ "$(cat "${LAST_L2_HASH_FILE}")" = "${L2_HASH}" ]; then
87
+ SKIP_L2=1
88
+ echo "L2 inputs unchanged; skipping L2 image job."
89
+ fi
90
+
91
  # Initialize git repo if needed (for job context)
92
  if [ ! -d .git ]; then
93
  echo "Initializing git repository..."
 
105
  echo "✓ Job context committed"
106
  fi
107
 
108
+ JOB_REF=""
109
+ if [ "${SKIP_L1}" -eq 0 ] || [ "${SKIP_L2}" -eq 0 ]; then
110
+ # Push a temporary ref for the job to build from
111
+ JOB_REF="job-build-$(date +%Y%m%d-%H%M%S)"
112
+ echo "Pushing job ref: ${JOB_REF}"
113
+ git push "https://huggingface.co/spaces/${HF_SPACE}" "HEAD:${JOB_REF}" --force
114
+ echo "✓ Job ref pushed"
115
+ echo ""
116
+ fi
117
 
118
+ if [ "${SKIP_L1}" -eq 0 ]; then
119
  echo "Stage 1: Building L1 base image via HF Job"
120
  echo "Platform: ${PLATFORM}"
121
  echo "Image: ${IMAGE_NAME_L1}:${TAG}"
 
185
  echo " Job stage: ${JOB_STAGE}"
186
  case "${JOB_STAGE}" in
187
  SUCCESS|SUCCEEDED|COMPLETED|DONE)
188
+ echo "✓ L1 image build job completed"
189
+ echo "${L1_HASH}" > "${LAST_L1_HASH_FILE}"
190
  break
191
  ;;
192
  FAILED|ERROR|CANCELED|CANCELLED)
 
199
  esac
200
  done
201
  fi
202
+ fi
203
 
204
  echo ""
205
+ if [ "${SKIP_L2}" -eq 0 ]; then
206
  echo "Stage 2: Building L2 base image via HF Job"
207
  echo ""
208
 
 
271
  case "${JOB_STAGE}" in
272
  SUCCESS|SUCCEEDED|COMPLETED|DONE)
273
  echo "✓ L2 image build job completed"
274
+ echo "${L2_HASH}" > "${LAST_L2_HASH_FILE}"
275
  break
276
  ;;
277
  FAILED|ERROR|CANCELED|CANCELLED)
 
284
  esac
285
  done
286
  fi
287
+ fi
288
 
289
  echo ""
290
  echo "Stage 3: Deploying to HuggingFace Space"