Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
539043f5
Commit
539043f5
authored
Mar 28, 2024
by
Daniel Hiltgen
Browse files
CI automation for tagging latest images
parent
035b274b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
12 deletions
+69
-12
.github/workflows/latest.yaml
.github/workflows/latest.yaml
+24
-0
scripts/build_docker.sh
scripts/build_docker.sh
+12
-12
scripts/tag_latest.sh
scripts/tag_latest.sh
+33
-0
No files found.
.github/workflows/latest.yaml
0 → 100644
View file @
539043f5
name
:
latest
on
:
release
:
types
:
[
released
]
jobs
:
update-latest
:
environment
:
release
runs-on
:
linux
steps
:
-
uses
:
actions/checkout@v4
-
name
:
Login to Docker Hub
uses
:
docker/login-action@v3
with
:
username
:
${{ vars.DOCKER_USER }}
password
:
${{ secrets.DOCKER_ACCESS_TOKEN }}
-
name
:
Tag images as latest
env
:
PUSH
:
"
1"
shell
:
bash
run
:
|
export "VERSION=${GITHUB_REF_NAME#v}"
./scripts/tag_latest.sh
scripts/build_docker.sh
View file @
539043f5
...
@@ -10,7 +10,7 @@ export GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=$V
...
@@ -10,7 +10,7 @@ export GOFLAGS="'-ldflags=-w -s \"-X=github.com/ollama/ollama/version.Version=$V
# For developers, you can override the DOCKER_ORG to generate multiarch manifests
# For developers, you can override the DOCKER_ORG to generate multiarch manifests
# DOCKER_ORG=jdoe PUSH=1 ./scripts/build_docker.sh
# DOCKER_ORG=jdoe PUSH=1 ./scripts/build_docker.sh
DOCKER_ORG
=
${
DOCKER_ORG
:-
"ollama"
}
DOCKER_ORG
=
${
DOCKER_ORG
:-
"ollama"
}
ARCH
_IMAGE_REPO
=
${
ARCH
_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/release"
}
RELEASE
_IMAGE_REPO
=
${
RELEASE
_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/release"
}
FINAL_IMAGE_REPO
=
${
FINAL_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/ollama"
}
FINAL_IMAGE_REPO
=
${
FINAL_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/ollama"
}
BUILD_ARCH
=
${
BUILD_ARCH
:-
"amd64 arm64"
}
BUILD_ARCH
=
${
BUILD_ARCH
:-
"amd64 arm64"
}
...
@@ -25,7 +25,7 @@ OLLAMA_SKIP_IMAGE_BUILD=${OLLAMA_SKIP_IMAGE_BUILD:-""}
...
@@ -25,7 +25,7 @@ OLLAMA_SKIP_IMAGE_BUILD=${OLLAMA_SKIP_IMAGE_BUILD:-""}
if
[
-z
"
${
PUSH
}
"
]
;
then
if
[
-z
"
${
PUSH
}
"
]
;
then
LOAD_OR_PUSH
=
"--load"
LOAD_OR_PUSH
=
"--load"
else
else
echo
"Will be pushing
${
ARCH
_IMAGE_REPO
}
:
$VERSION
for
${
BUILD_ARCH
}
"
echo
"Will be pushing
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
for
${
BUILD_ARCH
}
"
LOAD_OR_PUSH
=
"--push"
LOAD_OR_PUSH
=
"--push"
fi
fi
...
@@ -37,7 +37,7 @@ if [ -z "${OLLAMA_SKIP_IMAGE_BUILD}" ]; then
...
@@ -37,7 +37,7 @@ if [ -z "${OLLAMA_SKIP_IMAGE_BUILD}" ]; then
--build-arg
=
VERSION
\
--build-arg
=
VERSION
\
--build-arg
=
GOFLAGS
\
--build-arg
=
GOFLAGS
\
-f
Dockerfile
\
-f
Dockerfile
\
-t
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-
${
TARGETARCH
}
\
-t
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-
${
TARGETARCH
}
\
.
.
done
done
...
@@ -49,7 +49,7 @@ if [ -z "${OLLAMA_SKIP_IMAGE_BUILD}" ]; then
...
@@ -49,7 +49,7 @@ if [ -z "${OLLAMA_SKIP_IMAGE_BUILD}" ]; then
--build-arg
=
GOFLAGS
\
--build-arg
=
GOFLAGS
\
--target
runtime-rocm
\
--target
runtime-rocm
\
-f
Dockerfile
\
-f
Dockerfile
\
-t
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-rocm
\
-t
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-rocm
\
.
.
fi
fi
fi
fi
...
@@ -57,21 +57,21 @@ fi
...
@@ -57,21 +57,21 @@ fi
if
[
-z
"
${
OLLAMA_SKIP_MANIFEST_CREATE
}
"
]
;
then
if
[
-z
"
${
OLLAMA_SKIP_MANIFEST_CREATE
}
"
]
;
then
if
[
-n
"
${
PUSH
}
"
]
;
then
if
[
-n
"
${
PUSH
}
"
]
;
then
docker manifest create
${
FINAL_IMAGE_REPO
}
:
$VERSION
\
docker manifest create
${
FINAL_IMAGE_REPO
}
:
$VERSION
\
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-amd64
\
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-amd64
\
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-arm64
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-arm64
docker manifest push
${
FINAL_IMAGE_REPO
}
:
$VERSION
docker manifest push
${
FINAL_IMAGE_REPO
}
:
$VERSION
# For symmetry, tag/push the rocm image
# For symmetry, tag/push the rocm image
if
[
"
${
ARCH
_IMAGE_REPO
}
"
!=
"
${
FINAL_IMAGE_REPO
}
"
]
;
then
if
[
"
${
RELEASE
_IMAGE_REPO
}
"
!=
"
${
FINAL_IMAGE_REPO
}
"
]
;
then
echo
"Tagging and pushing rocm image"
echo
"Tagging and pushing rocm image"
docker pull
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-rocm
docker pull
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-rocm
docker tag
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-rocm
${
FINAL_IMAGE_REPO
}
:
$VERSION
-rocm
docker tag
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-rocm
${
FINAL_IMAGE_REPO
}
:
$VERSION
-rocm
docker push
${
FINAL_IMAGE_REPO
}
:
$VERSION
-rocm
docker push
${
FINAL_IMAGE_REPO
}
:
$VERSION
-rocm
fi
fi
else
else
echo
"Skipping manifest generation when not pushing images are available locally as "
echo
"Skipping manifest generation when not pushing images are available locally as "
echo
"
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-amd64"
echo
"
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-amd64"
echo
"
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-arm64"
echo
"
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-arm64"
echo
"
${
ARCH
_IMAGE_REPO
}
:
$VERSION
-rocm"
echo
"
${
RELEASE
_IMAGE_REPO
}
:
$VERSION
-rocm"
fi
fi
fi
fi
scripts/tag_latest.sh
0 → 100755
View file @
539043f5
#!/bin/sh
set
-eu
# We use 2 different image repositories to handle combining architecture images into multiarch manifest
# (The ROCm image is x86 only and is not a multiarch manifest)
# For developers, you can override the DOCKER_ORG to generate multiarch manifests
# DOCKER_ORG=jdoe VERSION=0.1.30 PUSH=1 ./scripts/tag_latest.sh
DOCKER_ORG
=
${
DOCKER_ORG
:-
"ollama"
}
RELEASE_IMAGE_REPO
=
${
RELEASE_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/release"
}
FINAL_IMAGE_REPO
=
${
FINAL_IMAGE_REPO
:-
"
${
DOCKER_ORG
}
/ollama"
}
# Set PUSH to a non-empty string to trigger push instead of load
PUSH
=
${
PUSH
:-
""
}
echo
"Assembling manifest and tagging latest"
docker manifest
rm
${
FINAL_IMAGE_REPO
}
:latest
||
true
docker manifest create
${
FINAL_IMAGE_REPO
}
:latest
\
${
RELEASE_IMAGE_REPO
}
:
$VERSION
-amd64
\
${
RELEASE_IMAGE_REPO
}
:
$VERSION
-arm64
docker pull
${
RELEASE_IMAGE_REPO
}
:
$VERSION
-rocm
docker tag
${
RELEASE_IMAGE_REPO
}
:
$VERSION
-rocm
${
FINAL_IMAGE_REPO
}
:rocm
if
[
-n
"
${
PUSH
}
"
]
;
then
echo
"Pushing latest tags up..."
docker manifest push
${
FINAL_IMAGE_REPO
}
:latest
docker push
${
FINAL_IMAGE_REPO
}
:rocm
else
echo
"Not pushing
${
FINAL_IMAGE_REPO
}
:latest and
${
FINAL_IMAGE_REPO
}
:rocm"
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment