blob: c97f883d316a70c0f5ba4c048d08a0156976deee [file]
# 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:
RELEASE_FROM_DIR: '{{ if regexMatch "v[0-9][^/]+$" (base .TASKFILE_DIR) }}{{ regexFind "v[0-9][^/]+$" (base .TASKFILE_DIR) }}{{ else }}snapshot{{ end }}'
RELEASE:
sh: |
if test -e .git
then git -C olaris-op rev-parse --short HEAD
else
if test -e RELEASE
then cat RELEASE
else echo {{.RELEASE_FROM_DIR}} | tee RELEASE
fi
fi
OPERATOR_TAG: "{{.RELEASE}}"
OPERATOR_IMG:
sh: awk -F= '/ARG OPERATOR_IMAGE_DEFAULT=/ { print $2 ; exit }' olaris-op/Dockerfile
OPERATOR_SRC: "{{.OPERATOR_IMG}}:{{.OPERATOR_TAG}}"
STREAMER_TAG: "{{.OPERATOR_TAG}}"
STREAMER_SRC: "docker.io/apache/openserverless-streamer:{{.STREAMER_TAG}}"
ADMIN_API_TAG: "{{.OPERATOR_TAG}}"
ADMIN_API_SRC: "docker.io/apache/openserverless-admin-api:{{.ADMIN_API_TAG}}"
RUNTIMES_TAG: "{{.OPERATOR_TAG}}"
OPENSERVERLESS_TAG: "{{.OPERATOR_TAG}}"
CONTROLLER_SRC: "docker.io/apache/openserverless-wsk-controller:{{.OPENSERVERLESS_TAG}}"
INVOKER_SRC: "docker.io/apache/openserverless-wsk-invoker:{{.OPENSERVERLESS_TAG}}"
OPS_BRANCH: "{{.OPERATOR_TAG}}"
CMD: "check"
tasks:
default:
- task -l
- echo release '{{.RELEASE}}'
clean:
desc: clean the intermediate artifacts
cmds:
- rm -vf ./ops ~/.ops/{{OS}}-{{ARCH}}/images/kind/*
- rm -vf ./ops
image-save:
desc: save an a SRC image in the TGT file
requires: { vars: [SRC]}
env:
TGT:
sh: |
B64="$(echo -n {{.SRC}} | /usr/bin/base64 -w0)"
echo ~/.ops/{{OS}}-{{ARCH}}/images/kind/$B64
cmds:
- echo Saving {{.SRC}} in "$TGT"
- mkdir -p "$(dirname $TGT)"
- docker save {{.SRC}} -o "$TGT"
status:
- ! test -e "$TGT"
cli:
desc: build the cli
dir: cli
cmds:
- go build -o ../ops cmd/ops/main.go
status:
- ! test -e ../ops
operator:
desc: build the operator
deps:
- cli
dir: olaris-op
cmds:
- echo Building {{.OPERATOR_SRC}}
- git tag -d $(git tag) && git tag {{.OPERATOR_TAG}}
- task b:build
- task: image-save
vars:
SRC: "{{.OPERATOR_SRC}}"
streamer:
desc: build the streamer
deps:
- cli
dir: streamer
cmds:
- echo Building {{.STREAMER_SRC}}
- git tag -d $(git tag) && git tag {{.STREAMER_TAG}}
- echo -e "NAMESPACE=apache\nREGISTRY=dockerhub\n" >.env
- task buildx
- task: image-save
vars:
SRC: "{{.STREAMER_SRC}}"
admin-api:
desc: build the admin-api
deps:
- cli
dir: admin-api
cmds:
- echo Building {{.ADMIN_API_SRC}}
- git tag -d $(git tag) && git tag {{.STREAMER_TAG}}
- echo -e "NAMESPACE=apache\nREGISTRY=dockerhub\n" >.env
- task buildx
- task: image-save
vars:
SRC: "{{.ADMIN_API_SRC}}"
openwhisk:
desc: build openwhisk
dir: build
env:
PATH: "{{.TASKFILE_DIR}}:$PATH"
OPS_ROOT: "{{.TASKFILE_DIR}}"
cmds:
- echo Building OpenServerless
- git tag -d $(git tag) && git tag {{.OPENSERVERLESS_TAG}}
- |
export PATH="{{.TASKFILE_DIR}}:$PATH"
export OPS_ROOT="{{.TASKFILE_DIR}}/olaris"
task build-all
- task: image-save
vars:
SRC: "{{.CONTROLLER_SRC}}"
- task: image-save
vars:
SRC: "{{.INVOKER_SRC}}"
runtimes:
desc: build current runtimes.json
dir: runtimes
cmds:
- git tag -d $(git tag) && git tag {{.RUNTIMES_TAG}}
- task build-common
- task build
- task render-runtimes
- cp runtimes.json ../olaris/runtimes.json
- task: runtimes-save
runtimes-save:
desc: save runtimes images
dir: runtimes
vars:
IMAGES:
sh: jq -r '.runtimes[][] | select(.default == true) | "\(.image.prefix)/\(.image.name):\(.image.tag)"' runtimes.json | grep -v php
cmds:
- for: { var: IMAGES, split: "\n", as: IMG }
task: image-save
vars:
SRC: "docker.io/{{.IMG}}"
TGT:
sh: echo ~/.ops/{{OS}}-{{ARCH}}/images/kind/$(echo docker.io/{{.IMG}} | /usr/bin/base64 -w0)
opsroot:
desc: build current opsroot.json
dir: olaris
cmds:
- test -e opsroot.orig || jq . <opsroot.json >opsroot.orig
- >
jq <opsroot.orig >opsroot.json '
.config.images.operator = "{{.OPERATOR_SRC}}" |
.config.images.streamer = "{{.STREAMER_SRC}}" |
.config.images.systemapi = "{{.ADMIN_API_SRC}}" |
.config.images.controller = "{{.CONTROLLER_SRC}}" |
.config.images.invoker = "{{.INVOKER_SRC}}"
'
- diff opsroot.orig opsroot.json || true
opslink:
desc: link ops
cmds:
- task: cli
- mkdir -p ~/.local/bin ~/.ops/{{.OPS_BRANCH}}
- ln -sf $(pwd)/ops ~/.local/bin/ops
- test -d ~/.ops/{{.OPS_BRANCH}}/olaris || ln -sf $(pwd)/olaris ~/.ops/{{.OPS_BRANCH}}/olaris
- touch ~/.profile
- |
if ! grep -q OPS_BRANCH= ~/.profile
then echo export OPS_BRANCH={{.OPS_BRANCH}} >>~/.profile
fi
- |
if ! grep -q 'PATH=~/.local/bin' ~/.profile
then echo 'export PATH=~/.local/bin:"$PATH"' >>~/.profile
fi
gitinit:
desc: initialize git if missing
cmds:
- |
for i in build cli olaris-op runtimes streamer admin-api
do
cd "$i"
if ! test -e .git
then git init 2>/dev/null
git commit -m "init" --allow-empty
fi
cd ..
done
build:
desc: build all
cmds:
- task: gitinit
- task: opslink
- task: openwhisk
- task: operator
- task: runtimes
- task: streamer
- task: admin-api
- task: opsroot
test:
desc: create
dir: testing/tests
cmds:
- |
export PATH="{{.TASKFILE_DIR}}:$PATH"
export OPS_ROOT="{{.TASKFILE_DIR}}/olaris"
export OPS_BRANCH="{{.OPS_BRANCH}}"
which ops
ops -info
ops setup docker delete || true
touch .secrets
./all.sh kind
license:
silent: true
desc: check license headers
cmds:
- |
license-eye header {{.CMD}}
for i in */.licenserc.yaml
do
DIR="$(dirname $i)"
echo "*** Checking license headers in $DIR"
cd $DIR
license-eye header {{.CMD}}
cd {{.TASKFILE_DIR}}
done
release:
desc: release
requires:
vars: [ V ]
cmds:
- git tag "v{{.V}}"
- echo "v{{.V}}" >RELEASE
- >
{{if eq OS "darwin"}}gtar{{else}}tar{{end}}
-C .. --exclude='.git'
--transform 's,^openserverless,openserverless-v{{.V}},'
-czvf ../openserverless-v{{.V}}-incubating-src.tar.gz
openserverless
- git push --tags