Files
wechaty--wechaty/scripts/docker.sh
T
wehub-resource-sync d5f55b5f9c
Coverage / build (push) Waiting to run
Docker / Build (push) Waiting to run
Docker / Publish (push) Blocked by required conditions
Node.js CI / build (16, macos-latest) (push) Waiting to run
Node.js CI / build (16, ubuntu-latest) (push) Waiting to run
Node.js CI / build (16, windows-latest) (push) Waiting to run
NPM / Build (22) (push) Waiting to run
NPM / Pack (push) Blocked by required conditions
NPM / Publish (push) Blocked by required conditions
chore: import upstream snapshot with attribution
2026-07-13 12:40:42 +08:00

109 lines
2.6 KiB
Bash
Executable File

#!/bin/bash -x
set -eo pipefail
export ARTIFACT_IMAGE='wechaty/wechaty:artifact'
function dockerBuild () {
platform=$1 # `all` for all platforms, `linux/amd64`, `linux/arm64`, etc.
tag=${2} # set the tag for building image
deploy=$3 # `true` for deploy, not set for local build
# Shellcheck - https://github.com/koalaman/shellcheck/wiki/SC2086
options=('--rm')
[ -n "$NO_CACHE" ] && options+=('--no-cache')
[ "$platform" == "all" ] && platform='linux/amd64,linux/arm64,linux/arm/v7'
[ -n "$deploy" ] && options+=('--push')
cat <<_CMD_
docker buildx build \
"${options[@]}" \
--platform "$platform" \
--tag "wechaty/wechaty:$tag" \
.
_CMD_
docker buildx build \
"${options[@]}" \
--platform "$platform" \
--tag "wechaty/wechaty:$tag" \
.
}
function deployOnbuild () {
export tag=$1
echo "Building & Deploying 'wechaty/onbuild:$tag' based on 'wechaty/wechaty:$tag'"
sed "s#FROM wechaty/wechaty:next#FROM wechaty/wechaty:$tag#" < Dockerfile.onbuild \
| docker buildx build \
--platform 'linux/amd64,linux/arm64,linux/arm/v7' \
--tag "wechaty/onbuild:$tag" \
--push \
-
}
function main () {
declare -i ret=0
case "$1" in
build | '')
docker build \
--rm \
--tag "$ARTIFACT_IMAGE" \
.
ret=$?
;;
test)
echo "Testing the docker image behaviors to make sure it works as expected..."
echo "bats tests/"
IMAGE_NAME="$ARTIFACT_IMAGE" bats tests/
echo
echo
echo docker run -i --rm -v /dev/shm:/dev/shm "$ARTIFACT_IMAGE" test
exec docker run -i --rm -v /dev/shm:/dev/shm "$ARTIFACT_IMAGE" test
ret=$?
;;
deploy)
version=$(npx pkg-jq -r .version)
majorVer=$(echo "$version" | cut -d. -f1)
minorVer=$(echo "$version" | cut -d. -f2)
versionTag="${majorVer}.${minorVer}"
dockerBuild all "$versionTag" deploy
deployOnbuild "$versionTag"
if npx --package @chatie/semver semver-is-prod "$version"; then
dockerBuild all latest deploy
deployOnbuild latest
else
dockerBuild all next deploy
deployOnbuild next
fi
;;
clean)
docker ps -a | grep Exited | awk '{print $1}' | xargs docker rm || true
docker images | grep none | awk '{print $3}' | xargs docker rmi
;;
*)
echo docker run -ti --rm -v /dev/shm:/dev/shm "$ARTIFACT_IMAGE" "$@"
exec docker run -ti --rm -v /dev/shm:/dev/shm "$ARTIFACT_IMAGE" "$@"
;;
esac
[ "$ret" -ne 0 ] && {
echo "ERROR: exec return $ret ???"
}
return $ret
}
main "$@"