Loading docker-celery-3.0.5/ansible/deploy.yml +19 −2 Original line number Diff line number Diff line Loading @@ -178,7 +178,20 @@ COMPOSE_FILES="$COMPOSE_FILES -f deploy_configs/{{ _env }}/docker-compose.harbor-api-auth.override.yml" fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true docker rmi -f {{ harbor_project | default('') }}postgres:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}redis:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}elasticsearch:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}kibana:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}filebeat:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}prometheus:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}grafana:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}cadvisor:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}node-exporter:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-api-gateway:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-task-portal:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-js9:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master pull {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans args: chdir: "{{ _deploy_dir }}" Loading Loading @@ -265,7 +278,11 @@ COMPOSE_FILES="$COMPOSE_FILES -f deploy_configs/{{ _env }}/docker-compose.extra-hosts.override.yml" fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true docker rmi -f {{ harbor_project | default('') }}filebeat:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}cadvisor:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}node-exporter:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker pull {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans args: chdir: "{{ _deploy_dir }}" Loading docker-celery-3.0.5/ansible/update.yml +12 −10 Original line number Diff line number Diff line Loading @@ -171,15 +171,14 @@ fi if [ "$REGISTRY_PULL" = "true" ]; then docker rmi -f {{ harbor_project | default('') }}csst-airflow-api-gateway:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-task-portal:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-js9:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master down --remove-orphans || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master pull fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans --force-recreate if [ "$REGISTRY_PULL" = "true" ]; then docker image prune -af || true fi args: chdir: "{{ _deploy_dir }}" Loading Loading @@ -277,11 +276,14 @@ fi if [ "$REGISTRY_PULL" = "true" ]; then docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker down --remove-orphans || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker pull fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans --force-recreate if [ "$REGISTRY_PULL" = "true" ]; then docker image prune -af || true fi args: chdir: "{{ _deploy_dir }}" Loading docker-celery-3.0.5/frontend_vue/src/App.vue +9 −2 Original line number Diff line number Diff line Loading @@ -80,6 +80,10 @@ <el-icon :size="20" class="font-bold"><DataLine /></el-icon> <span class="text-[15px] font-bold ml-2">Grafana</span> </el-menu-item> <el-menu-item index="test"> <el-icon :size="20" class="font-bold"><Search /></el-icon> <span class="text-[15px] font-bold ml-2">Test</span> </el-menu-item> <el-menu-item index="admin" v-if="userRole === 'admin'"> <el-icon :size="20" class="font-bold"><Setting /></el-icon> <span class="text-[15px] font-bold ml-2">Admin</span> Loading Loading @@ -552,7 +556,7 @@ <RawDataView v-else-if="activeTab === 'rawdata'" /> </div> <div v-else-if="['grafana', 'dags', 'workers', 'env', 'harbor-tags', 'js9', 'admin'].includes(activeTab)" class="h-[calc(100vh-140px)] w-full rounded-lg overflow-hidden border border-[#E5E7EB] bg-white"> <div v-else-if="['grafana', 'dags', 'workers', 'env', 'harbor-tags', 'js9', 'admin', 'test'].includes(activeTab)" class="h-[calc(100vh-140px)] w-full rounded-lg overflow-hidden border border-[#E5E7EB] bg-white"> <iframe v-if="activeTab === 'grafana'" :src="`http://${currentHost}:33000/d/node-exporter/node-exporter-full?orgId=1&refresh=1m&kiosk`" Loading @@ -564,6 +568,7 @@ <EnvView v-else-if="activeTab === 'env'" /> <HarborTagsView v-else-if="activeTab === 'harbor-tags'" /> <JS9View v-else-if="activeTab === 'js9'" /> <TestView v-else-if="activeTab === 'test'" /> <UsersView v-else-if="activeTab === 'admin' && userRole === 'admin'" /> </div> </main> Loading @@ -586,6 +591,7 @@ import CCDSView from './components/CCDSView.vue' import JS9View from './components/JS9View.vue' import SubmissionsView from './components/SubmissionsView.vue' import HarborTagsView from './components/HarborTagsView.vue' import TestView from './components/TestView.vue' import axios from 'axios' import { Monitor, DataLine, Search, Filter, Document, Clock, Close, Loading, Select, CircleClose, VideoPlay, Warning, Back, Refresh, Folder, ArrowRight, ArrowLeft, QuestionFilled, List, Cpu, Setting, SwitchButton, Position, Calendar, Notebook, Picture, Promotion, Box, Tickets, PriceTag } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' Loading @@ -612,7 +618,7 @@ const API_BASE_URL = '/api/tasks' const getHashTab = () => { const hash = window.location.hash.replace('#', '') return ['submissions', 'tasks', 'dags', 'workers', 'env', 'harbor-tags', 'grafana', 'admin', 'plan', 'rawdata', 'products', 'catalogs', 'ccds'].includes(hash) ? hash : 'tasks' return ['submissions', 'tasks', 'dags', 'workers', 'env', 'harbor-tags', 'grafana', 'admin', 'plan', 'rawdata', 'products', 'catalogs', 'ccds', 'test'].includes(hash) ? hash : 'tasks' } // State Loading Loading @@ -663,6 +669,7 @@ const activeTabTitle = computed(() => { catalogs: 'External Catalogs', ccds: 'CCDS', js9: 'JS9', test: 'Test', admin: 'Admin' } return map[activeTab.value] || activeTab.value Loading docker-celery-3.0.5/frontend_vue/src/components/TestView.vue 0 → 100644 +53 −0 Original line number Diff line number Diff line <template> <div class="h-full flex flex-col gap-4 animate-fade-in"> <div class="flex justify-between items-center px-1 mt-2 mb-1"> <h2 class="text-base font-semibold text-[#1F2937]">Portal Test</h2> <el-button @click="refreshSnapshot" :icon="Refresh" circle /> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-2">Build Number</div> <div class="text-2xl font-bold font-mono text-[#1F2937] break-all">{{ buildNumber }}</div> </el-card> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-2">Build Time</div> <div class="text-lg font-semibold font-mono text-[#1F2937] break-all">{{ buildTime || '-' }}</div> </el-card> </div> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-3">Runtime Snapshot</div> <div class="grid grid-cols-1 md:grid-cols-2 gap-3 text-sm"> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2"> <div class="text-[#6B7280] mb-1">Current URL</div> <div class="font-mono break-all text-[#1F2937]">{{ currentUrl }}</div> </div> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2"> <div class="text-[#6B7280] mb-1">Current Time</div> <div class="font-mono break-all text-[#1F2937]">{{ currentTime }}</div> </div> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2 md:col-span-2"> <div class="text-[#6B7280] mb-1">Verification Hint</div> <div class="text-[#1F2937]">如果重新部署后这里的 Build Number 或 Build Time 变化,说明 Portal 镜像已经更新。</div> </div> </div> </el-card> </div> </template> <script setup lang="ts"> import { ref } from 'vue' import { Refresh } from '@element-plus/icons-vue' const buildNumber = import.meta.env.VITE_BUILD_NUMBER || 'dev' const buildTime = import.meta.env.VITE_BUILD_TIME || '' const currentUrl = ref(window.location.href) const currentTime = ref(new Date().toISOString()) const refreshSnapshot = () => { currentUrl.value = window.location.href currentTime.value = new Date().toISOString() } </script> tools/deploy_csu.sh +2 −1 Original line number Diff line number Diff line export ENV=csu export BUILD_NUMBER=100010 export BUILD_NUMBER=100000 export HARBOR_PROJECT=csu-harbor.csst.nao:10443/csst/ make build make push make clean make ansible-update No newline at end of file Loading
docker-celery-3.0.5/ansible/deploy.yml +19 −2 Original line number Diff line number Diff line Loading @@ -178,7 +178,20 @@ COMPOSE_FILES="$COMPOSE_FILES -f deploy_configs/{{ _env }}/docker-compose.harbor-api-auth.override.yml" fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true docker rmi -f {{ harbor_project | default('') }}postgres:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}redis:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}elasticsearch:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}kibana:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}filebeat:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}prometheus:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}grafana:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}cadvisor:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}node-exporter:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-api-gateway:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-task-portal:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-js9:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master pull {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans args: chdir: "{{ _deploy_dir }}" Loading Loading @@ -265,7 +278,11 @@ COMPOSE_FILES="$COMPOSE_FILES -f deploy_configs/{{ _env }}/docker-compose.extra-hosts.override.yml" fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true docker rmi -f {{ harbor_project | default('') }}filebeat:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}cadvisor:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}node-exporter:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker pull {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans args: chdir: "{{ _deploy_dir }}" Loading
docker-celery-3.0.5/ansible/update.yml +12 −10 Original line number Diff line number Diff line Loading @@ -171,15 +171,14 @@ fi if [ "$REGISTRY_PULL" = "true" ]; then docker rmi -f {{ harbor_project | default('') }}csst-airflow-api-gateway:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-task-portal:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow-js9:{{ _build_number }} || true docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master down --remove-orphans || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master pull fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile master up -d --remove-orphans --force-recreate if [ "$REGISTRY_PULL" = "true" ]; then docker image prune -af || true fi args: chdir: "{{ _deploy_dir }}" Loading Loading @@ -277,11 +276,14 @@ fi if [ "$REGISTRY_PULL" = "true" ]; then docker rmi -f {{ harbor_project | default('') }}csst-airflow:{{ _build_number }} || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env pull || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker down --remove-orphans || true {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker pull fi {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans {{ docker_compose_cmd }} $COMPOSE_FILES --env-file deploy_configs/airflow.env --profile worker up -d --remove-orphans --force-recreate if [ "$REGISTRY_PULL" = "true" ]; then docker image prune -af || true fi args: chdir: "{{ _deploy_dir }}" Loading
docker-celery-3.0.5/frontend_vue/src/App.vue +9 −2 Original line number Diff line number Diff line Loading @@ -80,6 +80,10 @@ <el-icon :size="20" class="font-bold"><DataLine /></el-icon> <span class="text-[15px] font-bold ml-2">Grafana</span> </el-menu-item> <el-menu-item index="test"> <el-icon :size="20" class="font-bold"><Search /></el-icon> <span class="text-[15px] font-bold ml-2">Test</span> </el-menu-item> <el-menu-item index="admin" v-if="userRole === 'admin'"> <el-icon :size="20" class="font-bold"><Setting /></el-icon> <span class="text-[15px] font-bold ml-2">Admin</span> Loading Loading @@ -552,7 +556,7 @@ <RawDataView v-else-if="activeTab === 'rawdata'" /> </div> <div v-else-if="['grafana', 'dags', 'workers', 'env', 'harbor-tags', 'js9', 'admin'].includes(activeTab)" class="h-[calc(100vh-140px)] w-full rounded-lg overflow-hidden border border-[#E5E7EB] bg-white"> <div v-else-if="['grafana', 'dags', 'workers', 'env', 'harbor-tags', 'js9', 'admin', 'test'].includes(activeTab)" class="h-[calc(100vh-140px)] w-full rounded-lg overflow-hidden border border-[#E5E7EB] bg-white"> <iframe v-if="activeTab === 'grafana'" :src="`http://${currentHost}:33000/d/node-exporter/node-exporter-full?orgId=1&refresh=1m&kiosk`" Loading @@ -564,6 +568,7 @@ <EnvView v-else-if="activeTab === 'env'" /> <HarborTagsView v-else-if="activeTab === 'harbor-tags'" /> <JS9View v-else-if="activeTab === 'js9'" /> <TestView v-else-if="activeTab === 'test'" /> <UsersView v-else-if="activeTab === 'admin' && userRole === 'admin'" /> </div> </main> Loading @@ -586,6 +591,7 @@ import CCDSView from './components/CCDSView.vue' import JS9View from './components/JS9View.vue' import SubmissionsView from './components/SubmissionsView.vue' import HarborTagsView from './components/HarborTagsView.vue' import TestView from './components/TestView.vue' import axios from 'axios' import { Monitor, DataLine, Search, Filter, Document, Clock, Close, Loading, Select, CircleClose, VideoPlay, Warning, Back, Refresh, Folder, ArrowRight, ArrowLeft, QuestionFilled, List, Cpu, Setting, SwitchButton, Position, Calendar, Notebook, Picture, Promotion, Box, Tickets, PriceTag } from '@element-plus/icons-vue' import { ElMessage } from 'element-plus' Loading @@ -612,7 +618,7 @@ const API_BASE_URL = '/api/tasks' const getHashTab = () => { const hash = window.location.hash.replace('#', '') return ['submissions', 'tasks', 'dags', 'workers', 'env', 'harbor-tags', 'grafana', 'admin', 'plan', 'rawdata', 'products', 'catalogs', 'ccds'].includes(hash) ? hash : 'tasks' return ['submissions', 'tasks', 'dags', 'workers', 'env', 'harbor-tags', 'grafana', 'admin', 'plan', 'rawdata', 'products', 'catalogs', 'ccds', 'test'].includes(hash) ? hash : 'tasks' } // State Loading Loading @@ -663,6 +669,7 @@ const activeTabTitle = computed(() => { catalogs: 'External Catalogs', ccds: 'CCDS', js9: 'JS9', test: 'Test', admin: 'Admin' } return map[activeTab.value] || activeTab.value Loading
docker-celery-3.0.5/frontend_vue/src/components/TestView.vue 0 → 100644 +53 −0 Original line number Diff line number Diff line <template> <div class="h-full flex flex-col gap-4 animate-fade-in"> <div class="flex justify-between items-center px-1 mt-2 mb-1"> <h2 class="text-base font-semibold text-[#1F2937]">Portal Test</h2> <el-button @click="refreshSnapshot" :icon="Refresh" circle /> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-2">Build Number</div> <div class="text-2xl font-bold font-mono text-[#1F2937] break-all">{{ buildNumber }}</div> </el-card> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-2">Build Time</div> <div class="text-lg font-semibold font-mono text-[#1F2937] break-all">{{ buildTime || '-' }}</div> </el-card> </div> <el-card shadow="never" class="border border-[#E5E7EB]"> <div class="text-xs uppercase tracking-wider text-[#6B7280] mb-3">Runtime Snapshot</div> <div class="grid grid-cols-1 md:grid-cols-2 gap-3 text-sm"> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2"> <div class="text-[#6B7280] mb-1">Current URL</div> <div class="font-mono break-all text-[#1F2937]">{{ currentUrl }}</div> </div> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2"> <div class="text-[#6B7280] mb-1">Current Time</div> <div class="font-mono break-all text-[#1F2937]">{{ currentTime }}</div> </div> <div class="bg-[#F9FAFB] rounded-md border border-[#E5E7EB] px-3 py-2 md:col-span-2"> <div class="text-[#6B7280] mb-1">Verification Hint</div> <div class="text-[#1F2937]">如果重新部署后这里的 Build Number 或 Build Time 变化,说明 Portal 镜像已经更新。</div> </div> </div> </el-card> </div> </template> <script setup lang="ts"> import { ref } from 'vue' import { Refresh } from '@element-plus/icons-vue' const buildNumber = import.meta.env.VITE_BUILD_NUMBER || 'dev' const buildTime = import.meta.env.VITE_BUILD_TIME || '' const currentUrl = ref(window.location.href) const currentTime = ref(new Date().toISOString()) const refreshSnapshot = () => { currentUrl.value = window.location.href currentTime.value = new Date().toISOString() } </script>
tools/deploy_csu.sh +2 −1 Original line number Diff line number Diff line export ENV=csu export BUILD_NUMBER=100010 export BUILD_NUMBER=100000 export HARBOR_PROJECT=csu-harbor.csst.nao:10443/csst/ make build make push make clean make ansible-update No newline at end of file