Commit ebbcfe7c authored by Zhang Xiaoli's avatar Zhang Xiaoli
Browse files

update ast pipelines, rename modules name: ast-astromentry and ast-sso

parent eb28e72b
ARG HARBOR_PATH
ARG MODULE_NAME
ARG TAG
FROM ${HARBOR_PATH}/csst/${MODULE_NAME}:${TAG}
# FROM csu-harbor.csst.nao:10443/csst/csst-cpic-l1:latest
USER root
# 安装jq
RUN apt-get update \
&& apt-get install -y --no-install-recommends jq \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY *.sh /app/bin/
RUN chmod +x /app/bin/*.sh
COPY --from=hub.cstcloud.cn/scalebox/agent /usr/local /usr/local
RUN mkdir /work/
RUN chown -R csst:csst /work
RUN chown -R csst:csst /pipeline
WORKDIR /work/
ENV HARBOR_PATH=${HARBOR_PATH}
ENV MODULE_NAME=${MODULE_NAME}
ENV TAG=${TAG}
USER csst
ENTRYPOINT ["goagent"]
-include config.env
$(info MODULE_NAME = $(MODULE_NAME))
$(info HARBOR_PATH = $(HARBOR_PATH))
$(info SINK_MODULE = $(SINK_MODULE))
# $(info TAG = $(TAG))
IMAGE_NAME:=$(HARBOR_PATH)/cnic/$(MODULE_NAME)
TAG?=latest
all: build push dist
build:
docker pull $(HARBOR_PATH)/csst/$(MODULE_NAME):$(TAG)
docker build --network=host \
--build-arg MODULE_NAME=$(MODULE_NAME) \
--build-arg HARBOR_PATH=$(HARBOR_PATH) \
--build-arg TAG=$(TAG) \
-t $(IMAGE_NAME) .
push:
docker push $(IMAGE_NAME)
dist:
ssh sc1 docker pull $(IMAGE_NAME)
ssh sc2 docker pull $(IMAGE_NAME)
ssh sc3 docker pull $(IMAGE_NAME)
run:
docker run -it \
-e MODULE_NAME=${MODULE_NAME} \
-e HARBOR_PATH=${HARBOR_PATH} \
-e TAG=${TAG} \
-e SINK_MODULE=${SINK_MODULE} \
--entrypoint bash \
${IMAGE_NAME}
down:
docker stop $(IMAGE_NAME)
\ No newline at end of file
MODULE_NAME=csst-msc-l1-ast-astrometry
HARBOR_PATH=csu-harbor.csst.nao:10443
# SINK_MODULE=0: no sink module; SINK_MODULE=1 : has sink module
SINK_MODULE=1
#!/bin/bash
message=$1
echo "message: "$message
headers=$(echo "$2" | sed 's/\\//g')
echo "$headers" | jq '.'
echo "headers: $headers"
has_data_list=$(echo "$headers" | jq 'has("data_list")')
if [ "$has_data_list" = "true" ]; then
# 提取 data_list 字段的值
data_list=$(echo "$headers" | jq -r '.data_list')
fixed_data_list=$(echo "$data_list" | sed 's/\([a-f0-9]\{24\}\)/"\1"/g')
# 将 data_list 重新插入回 message
message=$(echo "$message" | jq --argjson dl "$fixed_data_list" '. + {data_list: $dl}')
message=$(echo "$message" | jq -c '.')
fi
cd /pipeline/output/
run -p $message
exit_code=$?
echo "=====pipeline.log====" > /work/custom-out.txt
cat /pipeline/output/pipeline.log >> /work/custom-out.txt
timefile=/pipeline/output/timestamp.txt
if test -f "$timefile"; then
echo "$timefile exist"
mv /pipeline/output/timestamp.txt /work/timestamps.txt
fi
rm -rf /pipeline/input/* /pipeline/output/*
headers=$2
pattern='"dag_run_id":"([^"]+)"'
if [[ $headers =~ $pattern ]]; then
dag_run_id="${BASH_REMATCH[1]}"
echo "dag_run_id: $dag_run_id"
else
# no dag_run_id in json
dag_run_id=""
fi
echo "dag_run_id:$dag_run_id" >> /work/extra-attributes.txt
if [ $exit_code -eq 0 ]; then
# 判断是否有后续模块,有后续模块,则下发给后续模块任务
if [ "${SINK_MODULE:-0}" = "1" ]; then
# if [ "$SINK_MODULE" = "1" ]; then
if [ "$has_data_list" = "true" ]; then
# 提取 data_list 字段的值
strdatalist=$(echo "$fixed_data_list" | tr -d '[:space:]')
scalebox task add --header sorted_tag=${sorted_tag} --header dag_run_id=${dag_run_id} --header data_list=${strdatalist} --header repeatable=yes --upsert $1
else
scalebox task add --header sorted_tag=${sorted_tag} --header dag_run_id=${dag_run_id} --header repeatable=yes --upsert ${message}
fi
echo "finish ${MODULE_NAME}, start sink-job."
else
#没有后续模块直接结束
echo "finish ${MODULE_NAME}."
exit $exit_code
fi
else
echo "finish ${MODULE_NAME}, exit_code: $exit_code"
fi
exit $exit_code
ARG HARBOR_PATH
ARG MODULE_NAME
ARG TAG
FROM ${HARBOR_PATH}/csst/${MODULE_NAME}:${TAG}
# FROM csu-harbor.csst.nao:10443/csst/csst-cpic-l1:latest
USER root
# 安装jq
RUN apt-get update \
&& apt-get install -y --no-install-recommends jq \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY *.sh /app/bin/
RUN chmod +x /app/bin/*.sh
COPY --from=hub.cstcloud.cn/scalebox/agent /usr/local /usr/local
RUN mkdir /work/
RUN chown -R csst:csst /work
RUN chown -R csst:csst /pipeline
WORKDIR /work/
ENV HARBOR_PATH=${HARBOR_PATH}
ENV MODULE_NAME=${MODULE_NAME}
ENV TAG=${TAG}
USER csst
ENTRYPOINT ["goagent"]
-include config.env
$(info MODULE_NAME = $(MODULE_NAME))
$(info HARBOR_PATH = $(HARBOR_PATH))
$(info SINK_MODULE = $(SINK_MODULE))
# $(info TAG = $(TAG))
IMAGE_NAME:=$(HARBOR_PATH)/cnic/$(MODULE_NAME)
TAG?=latest
all: build push dist
build:
docker pull $(HARBOR_PATH)/csst/$(MODULE_NAME):$(TAG)
docker build --network=host \
--build-arg MODULE_NAME=$(MODULE_NAME) \
--build-arg HARBOR_PATH=$(HARBOR_PATH) \
--build-arg TAG=$(TAG) \
-t $(IMAGE_NAME) .
push:
docker push $(IMAGE_NAME)
dist:
ssh sc1 docker pull $(IMAGE_NAME)
ssh sc2 docker pull $(IMAGE_NAME)
ssh sc3 docker pull $(IMAGE_NAME)
run:
docker run -it \
-e MODULE_NAME=${MODULE_NAME} \
-e HARBOR_PATH=${HARBOR_PATH} \
-e TAG=${TAG} \
-e SINK_MODULE=${SINK_MODULE} \
--entrypoint bash \
${IMAGE_NAME}
down:
docker stop $(IMAGE_NAME)
\ No newline at end of file
MODULE_NAME=csst-msc-l1-ast-sso
HARBOR_PATH=csu-harbor.csst.nao:10443
# SINK_MODULE=0: no sink module; SINK_MODULE=1 : has sink module
SINK_MODULE=0
#!/bin/bash
message=$1
echo "message: "$message
headers=$(echo "$2" | sed 's/\\//g')
echo "$headers" | jq '.'
echo "headers: $headers"
has_data_list=$(echo "$headers" | jq 'has("data_list")')
if [ "$has_data_list" = "true" ]; then
# 提取 data_list 字段的值
data_list=$(echo "$headers" | jq -r '.data_list')
fixed_data_list=$(echo "$data_list" | sed 's/\([a-f0-9]\{24\}\)/"\1"/g')
# 将 data_list 重新插入回 message
message=$(echo "$message" | jq --argjson dl "$fixed_data_list" '. + {data_list: $dl}')
message=$(echo "$message" | jq -c '.')
fi
cd /pipeline/output/
run -p $message
exit_code=$?
echo "=====pipeline.log====" > /work/custom-out.txt
cat /pipeline/output/pipeline.log >> /work/custom-out.txt
timefile=/pipeline/output/timestamp.txt
if test -f "$timefile"; then
echo "$timefile exist"
mv /pipeline/output/timestamp.txt /work/timestamps.txt
fi
rm -rf /pipeline/input/* /pipeline/output/*
headers=$2
pattern='"dag_run_id":"([^"]+)"'
if [[ $headers =~ $pattern ]]; then
dag_run_id="${BASH_REMATCH[1]}"
echo "dag_run_id: $dag_run_id"
else
# no dag_run_id in json
dag_run_id=""
fi
echo "dag_run_id:$dag_run_id" >> /work/extra-attributes.txt
if [ $exit_code -eq 0 ]; then
# 判断是否有后续模块,有后续模块,则下发给后续模块任务
if [ "${SINK_MODULE:-0}" = "1" ]; then
# if [ "$SINK_MODULE" = "1" ]; then
if [ "$has_data_list" = "true" ]; then
# 提取 data_list 字段的值
strdatalist=$(echo "$fixed_data_list" | tr -d '[:space:]')
scalebox task add --header sorted_tag=${sorted_tag} --header dag_run_id=${dag_run_id} --header data_list=${strdatalist} --header repeatable=yes --upsert $1
else
scalebox task add --header sorted_tag=${sorted_tag} --header dag_run_id=${dag_run_id} --header repeatable=yes --upsert ${message}
fi
echo "finish ${MODULE_NAME}, start sink-job."
else
#没有后续模块直接结束
echo "finish ${MODULE_NAME}."
exit $exit_code
fi
else
echo "finish ${MODULE_NAME}, exit_code: $exit_code"
fi
exit $exit_code
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment