blob: 173d7de9a860f254787c9dcf910de99aa9644074 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
version: '3'
vars:
BASETAG: 0.1.0-incubating
COMMIT_ID:
sh: git rev-parse --short HEAD
TAG:
sh: git describe --tags --abbrev=0 2>/dev/null || echo latest
dotenv:
- .env
includes:
builder:
taskfile: TaskfileBuilder.yml
dev:
taskfile: TaskfileDev.yml
tasks:
docker-login-ghcr: >
silent: true
cmds:
- |
echo "Logging in to ghcr.io as $GITHUB_USER"
echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_USER --password-stdin
docker-login-dockerhub:
silent: true
cmds:
- |
echo "Logging in to dockerhub as $DOCKERHUB_USER"
echo $DOCKERHUB_TOKEN | docker login -u $DOCKERHUB_USER --password-stdin
docker-login:
desc: |
Login to the docker registry. Set REGISTRY=ghcr or REGISTRY=dockerhub in .env
to use the respective registry.
silent: true
cmds:
- |
if [ -z "$REGISTRY" ]; then
echo "Error: REGISTRY variable is not set in .env"
exit 1
fi
task docker-login-$REGISTRY
image-tag:
silent: true
desc: |
Create a new tag for the current git commit.
cmds:
- git tag -d $(git tag)
- git tag -f {{.BASETAG}}.$(date +%y%m%d%H%M)
- env PAGER= git tag
base-image-name:
silent: true
cmds:
- |
if [ -n "$REGISTRY" ] && [ -z "$NAMESPACE" ]; then
echo "Error: NAMESPACE variable is not set in .env"
exit 1
fi
if [ "$REGISTRY" = "ghcr" ]; then
echo "ghcr.io/$NAMESPACE/openserverless-admin-api"
elif [ "$REGISTRY" = "dockerhub" ]; then
echo "docker.io/$NAMESPACE/openserverless-admin-api"
elif [ "$REGISTRY" = "apache" ]; then
echo "registry.hub.docker.com/apache/openserverless-admin-api"
else
echo "openserverless-admin-api"
fi
buildx:
desc: |
Build the docker image using buildx. Set PUSH=1 to push the image to the registry.
silent: true
cmds:
- |
BASEIMG=$(task base-image-name)
IMG="$BASEIMG:{{.TAG}}"
if [ -n "{{.PUSH}}" ]; then
if [ -z "$REGISTRY" ]; then
echo "Error: REGISTRY variable must be set in .env to push the image"
exit 1
fi
{{.DRY}} docker buildx build -t $IMG --platform linux/amd64,linux/arm64 . --push
else
{{.DRY}} docker buildx build -t $IMG . --load
fi
build:
silent: true
desc: Build the image locally
cmds:
- uv lock --upgrade
- |
BASEIMG=$(task base-image-name)
IMG="$BASEIMG:{{.TAG}}"
docker build . -t $IMG --load
build-and-load:
silent: true
desc: Build the image and loads it to local Kind cluster
cmds:
- task: build
- |
BASEIMG=$(task base-image-name)
IMG="$BASEIMG:{{.TAG}}"
kind load docker-image $IMG --name=nuvolaris
utest:
cmds:
- |
for test in openserverless/common/{{.T}}*.py
do echo "*** [{{.KUBE}}] $test"
uv run python3 -m doctest -o ELLIPSIS $test {{.CLI_ARGS}}
done
silent: true