Compare commits
27 Commits
master
...
dev-orange
| Author | SHA1 | Date |
|---|---|---|
|
|
0e88de0b0b | |
|
|
22a6f27515 | |
|
|
182ad068e9 | |
|
|
ada2999646 | |
|
|
252f6ae686 | |
|
|
ca7fb84c81 | |
|
|
c271e065b7 | |
|
|
49bda4e4ef | |
|
|
b1dc4c3020 | |
|
|
4d1de19a6d | |
|
|
14ca67c250 | |
|
|
c2e11fa23d | |
|
|
a8bebb06ed | |
|
|
0c23227dce | |
|
|
03788bf9bd | |
|
|
af3186df75 | |
|
|
01cd18fa1b | |
|
|
afac341379 | |
|
|
89485d6634 | |
|
|
0a0986936a | |
|
|
9a359ffb5f | |
|
|
a6122c6e81 | |
|
|
be67edb960 | |
|
|
ab4478a682 | |
|
|
d3bcf5434a | |
|
|
8cf300adfb | |
|
|
7493b57ed5 |
|
|
@ -68,11 +68,11 @@
|
|||
"zustand": "^4.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-app-rewired --max_old_space_size=4096 start",
|
||||
"build": "react-app-rewired --max_old_space_size=4096 build && gzipper c -i js,css,html ./build && node tasks/index-html-template-generator.js",
|
||||
"test": "react-app-rewired test ",
|
||||
"test:coverage": "react-app-rewired test --collectCoverage",
|
||||
"test:watch": "react-app-rewired test --watchAll",
|
||||
"start": "NODE_OPTIONS=--openssl-legacy-provider react-app-rewired --max_old_space_size=4096 start",
|
||||
"build": "NODE_OPTIONS=--openssl-legacy-provider react-app-rewired --max_old_space_size=4096 build && gzipper c -i js,css,html ./build && node tasks/index-html-template-generator.js",
|
||||
"test": "NODE_OPTIONS=--openssl-legacy-provider react-app-rewired test ",
|
||||
"test:coverage": "NODE_OPTIONS=--openssl-legacy-provider react-app-rewired test --collectCoverage",
|
||||
"test:watch": "NODE_OPTIONS=--openssl-legacy-provider react-app-rewired test --watchAll",
|
||||
"eject": "react-scripts eject",
|
||||
"lint": "eslint src/. --ext .js,.jsx,.ts,.tsx --fix",
|
||||
"format:fix": "eslint src/. --ext .js,.jsx,.ts,.tsx --quiet --fix",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 44 44">
|
||||
<path fill="#1473e6" d="M22,3A19,19,0,1,0,41,22,19,19,0,0,0,22,3Zm1.60547,26.8418a1.50025,1.50025,0,0,1-3.00049,0V21.4209a1.50025,1.50025,0,0,1,3.00049,0Zm-1.5-12.63135a2.10523,2.10523,0,1,1,2.10547-2.105A2.10753,2.10753,0,0,1,22.10547,17.21045Z"/>
|
||||
<path fill="#ff5b00" d="M22,3A19,19,0,1,0,41,22,19,19,0,0,0,22,3Zm1.60547,26.8418a1.50025,1.50025,0,0,1-3.00049,0V21.4209a1.50025,1.50025,0,0,1,3.00049,0Zm-1.5-12.63135a2.10523,2.10523,0,1,1,2.10547-2.105A2.10753,2.10753,0,0,1,22.10547,17.21045Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 320 B After Width: | Height: | Size: 320 B |
|
|
@ -54,6 +54,6 @@
|
|||
justify-content: space-between;
|
||||
padding: 1rem;
|
||||
border-bottom: $border-main;
|
||||
background:linear-gradient(180deg,#cfdfff 0%,rgba(248,250,255,1) 100%);
|
||||
background:linear-gradient(180deg, #fbd5c6 0%, #fef9f6 100%);
|
||||
// background: $primary-color-5;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
|
||||
&.active {
|
||||
color: #fff;
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
}
|
||||
&.outlined {
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
&__metric {
|
||||
&::before {
|
||||
background-color: #1473e6;
|
||||
background-color: #ff5b00;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ function RangePanel({
|
|||
/>
|
||||
) : (
|
||||
<div className='InfoMassageBox'>
|
||||
<Icon name='circle-info' color={'#1473E6'} />
|
||||
<Icon name='circle-info' color={'#ff5b00'} />
|
||||
<Text size={11} tint={80} weight={500}>
|
||||
你只有
|
||||
<Text
|
||||
|
|
|
|||
|
|
@ -39,15 +39,15 @@
|
|||
}
|
||||
&--diffBtn {
|
||||
border: 0.0625rem solid transparent;
|
||||
background:rgba(22, 100, 255, 0.06);
|
||||
background:rgba(255, 91, 0, 0.06);
|
||||
margin-right: $space-xs;
|
||||
color:#1664ff;
|
||||
color:#ff5b00;
|
||||
font-size: 0.94rem!important;
|
||||
}
|
||||
&--uploadBtn{
|
||||
border: 0.0625rem solid transparent;
|
||||
background:rgba(22, 100, 255, 0.06);
|
||||
color:#1664ff;
|
||||
background:rgba(255, 91, 0, 0.06);
|
||||
color:#ff5b00;
|
||||
font-size: 0.94rem!important;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ const light: ThemeOptions = {
|
|||
overrides: {
|
||||
MuiDivider: {
|
||||
root: {
|
||||
backgroundColor: '#E8F1FC',
|
||||
backgroundColor: '#fcece9',
|
||||
},
|
||||
},
|
||||
MuiButton: {
|
||||
|
|
@ -42,7 +42,7 @@ const light: ThemeOptions = {
|
|||
palette: {
|
||||
type: 'light',
|
||||
primary: {
|
||||
main: '#1473E6',
|
||||
main: '#ff5b00',
|
||||
},
|
||||
secondary: {
|
||||
main: '#1c2852',
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@
|
|||
opacity: 0.5;
|
||||
}
|
||||
&__default {
|
||||
color:#1664ff;
|
||||
background-color: rgba(22, 100, 255, 0.06);
|
||||
color:#ff5b00;
|
||||
background-color: rgba(255, 91, 0, 0.06);
|
||||
border: rgba(22, 100, 255, 0.25);
|
||||
&:hover {
|
||||
background-color: $cuddle-10;
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
}
|
||||
.Badge__deleteIcon {
|
||||
i {
|
||||
color: #1664ff;
|
||||
color: #ff5b00;
|
||||
}
|
||||
&:hover {
|
||||
background-color: $cuddle-30;
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
.MuiButton-outlined {
|
||||
&.Mui-disabled {
|
||||
box-shadow: none;
|
||||
color: #89b9f2;
|
||||
border-color: #89b9f2;
|
||||
color: #ffddd4;
|
||||
border-color: #ffddd4;
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
|
|
@ -30,6 +30,6 @@
|
|||
// -------- text overrides --------
|
||||
.MuiButton-text {
|
||||
&.Mui-disabled {
|
||||
color: #89b9f2;
|
||||
color: #ffddd4;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
border-bottom: none;
|
||||
cursor: initial;
|
||||
&--hovered {
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
}
|
||||
|
||||
&-cell {
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ function Dropdown({
|
|||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
margin: '0 0.5rem',
|
||||
color: icon?.color || '#1473E6',
|
||||
color: icon?.color || '#ff5b00',
|
||||
width: '1.5rem',
|
||||
height: '1.5rem',
|
||||
fontSize: icon?.fontSize,
|
||||
|
|
@ -78,10 +78,10 @@ function Dropdown({
|
|||
borderRadius: '0.375rem',
|
||||
boxShadow: 'none',
|
||||
borderColor:
|
||||
isColored && value ? '#1473E6' : open ? '#90AFDA' : '#BDCEE8',
|
||||
isColored && value ? '#ff5b00' : open ? '#90AFDA' : '#BDCEE8',
|
||||
'&:hover': {
|
||||
borderColor:
|
||||
isColored && value ? '#1473E6' : open ? '#90AFDA' : '#BDCEE8',
|
||||
isColored && value ? '#ff5b00' : open ? '#90AFDA' : '#BDCEE8',
|
||||
},
|
||||
}),
|
||||
indicatorSeparator: () => ({
|
||||
|
|
@ -107,7 +107,7 @@ function Dropdown({
|
|||
height: indicatorsContainerSizes[size],
|
||||
padding: icon ? '0 0.375rem 0 0rem' : '0 0.375rem 0 1rem',
|
||||
fontSize: '0.875rem',
|
||||
color: isColored && value ? '#1473E6' : '#414B6D',
|
||||
color: isColored && value ? '#ff5b00' : '#414B6D',
|
||||
}),
|
||||
menuPortal: (provided: any) => ({
|
||||
...provided,
|
||||
|
|
@ -117,7 +117,7 @@ function Dropdown({
|
|||
singleValue: (provided: any) => ({
|
||||
...provided,
|
||||
marginLeft: 0,
|
||||
color: isColored && value ? '#1473E6' : '#414B6D',
|
||||
color: isColored && value ? '#ff5b00' : '#414B6D',
|
||||
marginBottom: '0.0625rem',
|
||||
}),
|
||||
dropdownIndicator: () => ({
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ function DropdownCustomOption(
|
|||
>
|
||||
{data.label}
|
||||
</Text>
|
||||
{isSelected && <Icon name='check' color='#1473E6' fontSize={14} />}
|
||||
{isSelected && <Icon name='check' color='#ff5b00' fontSize={14} />}
|
||||
</div>
|
||||
</ErrorBoundary>
|
||||
) : null;
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ const Container = styled.div<IListItemProps | any>`
|
|||
cursor: pointer;
|
||||
&:hover {
|
||||
background-color: #f4f4f6;
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
.Text {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
}
|
||||
}
|
||||
.Text {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import './Spinner.scss';
|
|||
function Spinner({
|
||||
size = 40,
|
||||
thickness = 3,
|
||||
color = '#1473e6',
|
||||
color = '#ff5b00',
|
||||
className = '',
|
||||
}: ISpinnerProps): React.FunctionComponentElement<React.ReactNode> {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
const COLORS: Array<string[]> = [
|
||||
[
|
||||
'#1664ff',
|
||||
'#ff5b00',
|
||||
'#18AB6D',
|
||||
'#7A4CE0',
|
||||
'#E149A0',
|
||||
|
|
@ -38,7 +38,7 @@ const COLORS: Array<string[]> = [
|
|||
];
|
||||
|
||||
export const BGColorLighten = {
|
||||
'#1664ff': 'rgba(22, 100, 255, 0.06)',
|
||||
'#ff5b00': 'rgba(255, 91, 0, 0.06)',
|
||||
'#18AB6D': '#E8F7F0',
|
||||
'#7A4CE0': '#F2EDFC',
|
||||
'#E149A0': '#FCEDF6',
|
||||
|
|
@ -61,7 +61,7 @@ export const RichEditorThemeColors = {
|
|||
blockToolbarTextSelected: '#1c2852',
|
||||
blockToolbarSelectedBackground: '#dee6f3',
|
||||
blockToolbarHoverBackground: '#f2f5fa',
|
||||
blockToolbarDivider: '#E8F1FC',
|
||||
blockToolbarDivider: '#fcece9',
|
||||
toolbarItem: '#414b6d',
|
||||
fontFamilyMono: 'Inconsolata',
|
||||
};
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ function getBasePath(isApiBasePath: boolean = true): string {
|
|||
}
|
||||
|
||||
let API_HOST: string = isDEVModeOn
|
||||
? `http://172.20.32.181:30059${getBasePath()}/api`
|
||||
? `http://218.77.58.19:30059${getBasePath()}/api`
|
||||
: `${getBasePath()}/api`;
|
||||
|
||||
function getAPIHost() {
|
||||
|
|
@ -33,7 +33,7 @@ function getAPIHost() {
|
|||
function setAPIBasePath(basePath: string) {
|
||||
globalScope.API_BASE_PATH = basePath;
|
||||
API_HOST = isDEVModeOn
|
||||
? `http://172.20.32.181:30059${getBasePath()}/api`
|
||||
? `http://218.77.58.19:30059${getBasePath()}/api`
|
||||
: `${getBasePath()}/api`;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ export const getMonacoConfig = (advanced = false): Record<any, any> => ({
|
|||
'editorSuggestWidget.highlightForeground': '#1c2852',
|
||||
'editorSuggestWidget.focusHighlightForeground': '#1c2852',
|
||||
'editorSuggestWidget.foreground': TEXT_COLOR,
|
||||
'list.hoverBackground': '#f3f8fe',
|
||||
'list.hoverBackground': '#fef5f3',
|
||||
'scrollbar.shadow': WHITE,
|
||||
'editorHoverWidget.background': WHITE,
|
||||
'editorHoverWidget.border': BORDER_COLOR,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ export const lightTheme: ConfigType.Theme = {
|
|||
primary50: '#8AB9F3',
|
||||
primary70: '#5C9DED',
|
||||
primary80: '#3F8AE8',
|
||||
primary100: '#1473E6',
|
||||
primary100: '#ff5b00',
|
||||
primary110: '#105CB8',
|
||||
primary120: '#0C4B97',
|
||||
// secondary colors
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
&.active {
|
||||
color: #fff;
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
&__clearAll {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
}
|
||||
|
||||
i {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ function RangePanel(props: IRangePanelProps) {
|
|||
</>
|
||||
) : (
|
||||
<div className='InfoMassageBox'>
|
||||
<Icon name='circle-info' color={'#1473E6'} />
|
||||
<Icon name='circle-info' color={'#ff5b00'} />
|
||||
<Text size={11} tint={80} weight={500}>
|
||||
你只有
|
||||
<Text
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ const RangePanelItem = ({
|
|||
/>
|
||||
) : (
|
||||
<div className='InfoMassageBox'>
|
||||
<Icon name='circle-info' color={'#1473E6'} />
|
||||
<Icon name='circle-info' color={'#ff5b00'} />
|
||||
<Text size={11} tint={80} weight={500}>
|
||||
你只有
|
||||
<Text
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
&:last-child {
|
||||
margin-top: 6px;
|
||||
background: linear-gradient(98.46deg, #1473e6 0%, #09c6f9 100%);
|
||||
background: linear-gradient(98.46deg, #ff5b00 0%, #09c6f9 100%);
|
||||
&:after {
|
||||
content: url('../../../../../src/assets/runs.svg');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ const statisticsInitialMap: Record<string, IProjectStatistic> = {
|
|||
navLink: routes.AUDIOS_EXPLORER.path,
|
||||
badge: {
|
||||
value: 'New',
|
||||
style: { backgroundColor: '#1473e6', color: '#fff' },
|
||||
style: { backgroundColor: '#ff5b00', color: '#fff' },
|
||||
},
|
||||
},
|
||||
[SequenceTypesEnum.Texts]: {
|
||||
|
|
@ -65,7 +65,7 @@ const statisticsInitialMap: Record<string, IProjectStatistic> = {
|
|||
navLink: routes.TEXT_EXPLORER.path,
|
||||
badge: {
|
||||
value: 'New',
|
||||
style: { backgroundColor: '#1473e6', color: '#fff' },
|
||||
style: { backgroundColor: '#ff5b00', color: '#fff' },
|
||||
},
|
||||
},
|
||||
[SequenceTypesEnum.Distributions]: {
|
||||
|
|
@ -85,7 +85,7 @@ const runsCountingInitialMap: Record<'archived' | 'runs', IProjectStatistic> = {
|
|||
label: '运行',
|
||||
icon: 'runs',
|
||||
count: 0,
|
||||
iconBgColor: '#1473E6',
|
||||
iconBgColor: '#ff5b00',
|
||||
navLink: routes.RUNS.path,
|
||||
},
|
||||
archived: {
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
}
|
||||
#block-menu-container {
|
||||
box-shadow: 0 0.25rem 0.375rem rgb(144 175 218 / 20%);
|
||||
border: 0.0625rem solid #e8f1fc;
|
||||
border: 0.0625rem solid #fcece9;
|
||||
svg {
|
||||
fill: $pico-80;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
&:last-child {
|
||||
margin-top: $space-xxs;
|
||||
background: linear-gradient(98.46deg, #1473e6 0%, #09c6f9 100%);
|
||||
background: linear-gradient(98.46deg, #ff5b00 0%, #09c6f9 100%);
|
||||
&:after {
|
||||
content: url('../../../../../../src/assets/runs.svg');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ function ExperimentStatistics({ experimentName }: IExperimentStatisticsProps) {
|
|||
label: '运行',
|
||||
icon: 'runs',
|
||||
count: totalRunsCount - archivedRuns,
|
||||
iconBgColor: '#1473E6',
|
||||
iconBgColor: '#ff5b00',
|
||||
navLink: `/runs?select=${encode({
|
||||
query: `run.experiment == '${experimentName}'`,
|
||||
})}`,
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
&.active {
|
||||
color: #fff;
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
&__clearAll {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
}
|
||||
|
||||
i {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
&.active {
|
||||
color: #fff;
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
&__clearAll {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
}
|
||||
|
||||
i {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
}
|
||||
|
||||
.ColumnList__items__wrapper__dragging {
|
||||
background: #f3f8fe;
|
||||
background: #fef5f3;
|
||||
}
|
||||
|
||||
.ManageColumns__actions__container {
|
||||
|
|
|
|||
|
|
@ -459,7 +459,7 @@ function ManageColumnsPopover({
|
|||
size='xSmall'
|
||||
onClick={() => onColumnsVisibilityChange([])}
|
||||
>
|
||||
<Icon name='eye-show-outline' color='#1473e6' />
|
||||
<Icon name='eye-show-outline' color='#ff5b00' />
|
||||
<Text size={12} tint={100}>
|
||||
显示所有
|
||||
</Text>
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
.SelectForm__clearAll {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
}
|
||||
|
||||
i {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
height: 1.5rem;
|
||||
top: -$space-xxxxs;
|
||||
&.opened {
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
}
|
||||
.MuiButton-label {
|
||||
padding-top: $space-xxxxs;
|
||||
|
|
@ -495,7 +495,7 @@
|
|||
}
|
||||
}
|
||||
&__headerContainer {
|
||||
background: #f3f8fe;
|
||||
background: #fef5f3;
|
||||
width: 100%;
|
||||
height: 2.25rem;
|
||||
display: flex;
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
}
|
||||
#block-menu-container {
|
||||
box-shadow: 0 0.25rem 0.375rem rgb(144 175 218 / 20%);
|
||||
border: 0.0625rem solid #e8f1fc;
|
||||
border: 0.0625rem solid #fcece9;
|
||||
svg {
|
||||
fill: $pico-80;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export const RunLogRecordsConfig: Record<
|
|||
color: '#ffcc00',
|
||||
background: '#ffcc004a',
|
||||
},
|
||||
INFO: { icon: 'circle-info', color: '#1473e6', background: '#1473e64a' },
|
||||
INFO: { icon: 'circle-info', color: '#ff5b00', background: '#ff5b004a' },
|
||||
DEBUG: { icon: 'search', color: '#1c2852', background: '#1c28524a' },
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export default function useNotesResizePanel(wrapperRef: any, editorRef: any) {
|
|||
|
||||
function startResize(event: any): void {
|
||||
wrapperRef.current.style.userSelect = 'none';
|
||||
resizeElemRef.current.style.background = '#89b9f2';
|
||||
resizeElemRef.current.style.background = '#ffddd4';
|
||||
wrapperRef.current.style.cursor = 'col-resize';
|
||||
|
||||
if (leftPanelRef.current && rightPanelRef.current && wrapperRef.current) {
|
||||
|
|
@ -45,7 +45,7 @@ export default function useNotesResizePanel(wrapperRef: any, editorRef: any) {
|
|||
if (wrapperRef?.current && resizeElemRef?.current) {
|
||||
wrapperRef.current.style.userSelect = 'unset';
|
||||
wrapperRef.current.style.cursor = 'unset';
|
||||
resizeElemRef.current.style.background = '#e8f1fc';
|
||||
resizeElemRef.current.style.background = '#fcece9';
|
||||
document.removeEventListener('mousemove', startResize);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,11 +37,11 @@
|
|||
border-radius: $border-radius-main;
|
||||
|
||||
&.active {
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
color: #fff;
|
||||
|
||||
&.outlined {
|
||||
background-color: #1664ff;
|
||||
background-color: #ff5b00;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@
|
|||
&__clearAll {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
}
|
||||
|
||||
i {
|
||||
color: #1473e6;
|
||||
color: #ff5b00;
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@
|
|||
&__row {
|
||||
border-bottom: none;
|
||||
&--hovered {
|
||||
background: #e8f1fc;
|
||||
background: #fcece9;
|
||||
}
|
||||
&-cell {
|
||||
border-right: $border-grey;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@use "./functions" as *;
|
||||
|
||||
$primary-color: #1473e6;
|
||||
$primary-color: #ff5b00;
|
||||
$error-color: #e64e48;
|
||||
$success-color: #2bc784;
|
||||
$warning-color: #ffcc00;
|
||||
|
|
@ -41,13 +41,13 @@ $primary-color-90: #2c81e9;
|
|||
$primary-color-80: #438feb;
|
||||
$primary-color-70: #5b9dee;
|
||||
$primary-color-60: #72abf0;
|
||||
$primary-color-50: #89b9f2;
|
||||
$primary-color-50: #ffddd4;
|
||||
$primary-color-40: #a1c7f5;
|
||||
$primary-color-30: #d0e3fa;
|
||||
$primary-color-25: #c4dcf9;
|
||||
$primary-color-20: #dceafb;
|
||||
$primary-color-10: #e8f1fc;
|
||||
$primary-color-5: #f3f8fe;
|
||||
$primary-color-10: #fcece9;
|
||||
$primary-color-5: #fef5f3;
|
||||
|
||||
$pico-100: #1c2852;
|
||||
$pico-90: #2a355a;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,5 @@
|
|||
# 做镜像的方法
|
||||
|
||||
## ssh登录到172.20.32.186,密码和之前的一样
|
||||
### x86构建,进入docker/x86目录执行 x86-compile-and-build-image.sh
|
||||
|
||||
```
|
||||
cd /home/deploy/script/aim-build
|
||||
git pull
|
||||
conda activate aim-build
|
||||
cd docker
|
||||
./build-image.sh
|
||||
```
|
||||
### arm构建 进入docker/arm目录执行 arm-compile-and-build-image.sh
|
||||
Binary file not shown.
|
|
@ -1,7 +1,7 @@
|
|||
FROM 172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env
|
||||
FROM 172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env
|
||||
|
||||
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
COPY aim*.whl /opt/aim/
|
||||
COPY ../aim*.whl /opt/aim/
|
||||
RUN pip install /opt/aim/aim_ui-3.19.0-py3-none-any.whl
|
||||
RUN pip install /opt/aim/aim-3.19.0-cp39-cp39-linux_aarch64.whl
|
||||
|
||||
2
docker/arm-build-image-node18.sh → docker/arm/arm-build-image-node18.sh
Executable file → Normal file
2
docker/arm-build-image-node18.sh → docker/arm/arm-build-image-node18.sh
Executable file → Normal file
|
|
@ -44,7 +44,7 @@ echo "build aim-ui package success"
|
|||
|
||||
cd ../../../docker/
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-$date-arm
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-$date-arm
|
||||
docker build -t "$image" \
|
||||
--build-arg "HTTP_PROXY=http://172.20.32.253:3128" \
|
||||
--build-arg "HTTPS_PROXY=http://172.20.32.253:3128" \
|
||||
|
|
@ -6,11 +6,8 @@
|
|||
|
||||
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-$date-arm
|
||||
docker build -t "$image" \
|
||||
--build-arg "HTTP_PROXY=http://172.20.32.253:3128" \
|
||||
--build-arg "HTTPS_PROXY=http://172.20.32.253:3128" \
|
||||
-f Dockerfile.arm .
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-$date-arm
|
||||
docker build -t "$image" -f Dockerfile.arm .
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build image failed"
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 切换到项目 UI 目录
|
||||
cd ../aim/web/ui || { echo "错误:无法切换到 aim/web/ui 目录"; exit 1; }
|
||||
cd ../../aim/web/ui || { echo "错误:无法切换到 aim/web/ui 目录"; exit 1; }
|
||||
|
||||
# 配置变量
|
||||
IMAGE="172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env"
|
||||
IMAGE="172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env"
|
||||
CONTAINER_NAME="aim-ui-builder-$(date +%s)"
|
||||
HOST_WORKDIR=$(pwd)
|
||||
PROJECT_ROOT=$(dirname "$(dirname "$HOST_WORKDIR")") # 获取项目根目录
|
||||
|
|
@ -35,11 +35,12 @@ docker run --rm \
|
|||
fi;"
|
||||
|
||||
|
||||
cp dist/aim_ui*.whl ../../../docker/; \
|
||||
target_dir=../../../docker/arm
|
||||
cp dist/aim_ui*.whl $target_dir; \
|
||||
echo '生成的文件列表:'; \
|
||||
ls -lh dist/*.whl; \
|
||||
echo '输出到 docker 目录的文件:'; \
|
||||
ls -lh ../../../docker/aim_ui*.whl; \
|
||||
ls -lh $target_dir/*.whl; \
|
||||
echo '== 构建完成 =='
|
||||
|
||||
# 检查构建结果
|
||||
|
|
@ -47,7 +48,7 @@ if [ $? -eq 0 ]; then
|
|||
echo "=== Aim UI 软件包构建成功 ==="
|
||||
echo "生成的 wheel 文件已复制到: $DOCKER_DIR"
|
||||
echo "文件列表:"
|
||||
ls -lh "$DOCKER_DIR"/aim_ui*.whl
|
||||
ls -lh $target_dir/aim_ui*.whl
|
||||
else
|
||||
echo "=== 构建失败,请检查错误信息 ===" >&2
|
||||
exit 1
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
echo "build aim package success"
|
||||
|
||||
#编译前端代码
|
||||
cd ../aim/web/ui
|
||||
cd ../../aim/web/ui
|
||||
|
||||
if [ -d build ]; then
|
||||
echo "rm build dir success"
|
||||
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
#!/bin/bash
|
||||
|
||||
cd ../
|
||||
cd ../../
|
||||
# Aim 软件包构建脚本
|
||||
# 使用 Docker 容器环境构建并复制 wheel 文件
|
||||
|
||||
# 配置变量
|
||||
IMAGE="172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env"
|
||||
IMAGE="172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env"
|
||||
CONTAINER_NAME="aim-builder-$(date +%s)"
|
||||
HOST_WORKDIR=$(pwd)
|
||||
CONTAINER_WORKDIR="/code"
|
||||
|
|
@ -33,14 +33,14 @@ docker run --rm \
|
|||
fi; \
|
||||
echo '构建成功'; \
|
||||
echo '复制 wheel 文件到 docker 目录'; \
|
||||
cp dist/aim*.whl docker/; \
|
||||
cp dist/aim*.whl docker/arm/; \
|
||||
echo '== 构建完成 =='"
|
||||
|
||||
# 检查构建结果
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "=== Aim 软件包构建成功 ==="
|
||||
echo "生成的 wheel 文件已复制到: $HOST_WORKDIR/docker/"
|
||||
ls -lh "$HOST_WORKDIR/docker/aim"*.whl
|
||||
echo "生成的 wheel 文件已复制到: $HOST_WORKDIR/docker/arm"
|
||||
ls -lh "$HOST_WORKDIR/docker/arm/aim"*.whl
|
||||
else
|
||||
echo "=== 构建失败,请检查错误信息 ==="
|
||||
exit 1
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
current_dir=$(pwd)
|
||||
echo "开始 ARM 架构完整构建流程..."
|
||||
start_time=$(date +%s)
|
||||
|
||||
# 准备环境
|
||||
echo "=== 准备构建环境 ==="
|
||||
env_start=$(date +%s)
|
||||
source ../prepare-env.sh
|
||||
env_end=$(date +%s)
|
||||
env_duration=$((env_end - env_start))
|
||||
echo "✅ 环境准备完成,耗时: ${env_duration}秒"
|
||||
echo ""
|
||||
|
||||
cd "$current_dir"
|
||||
|
||||
# 构建 whl 包
|
||||
echo "=== 构建 ARM whl 包 ==="
|
||||
whl_start=$(date +%s)
|
||||
source ./arm-build-whl.sh || { echo "❌ ARM whl 包构建失败"; exit 1; }
|
||||
cd "$current_dir"
|
||||
whl_end=$(date +%s)
|
||||
whl_duration=$((whl_end - whl_start))
|
||||
echo "✅ ARM whl 包构建完成,耗时: ${whl_duration}秒"
|
||||
echo ""
|
||||
|
||||
# 构建 UI
|
||||
echo "=== 构建 ARM UI ==="
|
||||
ui_start=$(date +%s)
|
||||
source ./arm-build-ui.sh || { echo "❌ ARM UI 构建失败"; exit 1; }
|
||||
cd "$current_dir"
|
||||
ui_end=$(date +%s)
|
||||
ui_duration=$((ui_end - ui_start))
|
||||
echo "✅ ARM UI 构建完成,耗时: ${ui_duration}秒"
|
||||
echo ""
|
||||
|
||||
# 构建包含 UI 的 whl 包
|
||||
echo "=== 构建包含 UI 的 ARM whl 包 ==="
|
||||
ui_whl_start=$(date +%s)
|
||||
source ./arm-build-ui-whl.sh || { echo "❌ ARM UI whl 包构建失败"; exit 1; }
|
||||
cd "$current_dir"
|
||||
ui_whl_end=$(date +%s)
|
||||
ui_whl_duration=$((ui_whl_end - ui_whl_start))
|
||||
echo "✅ ARM UI whl 包构建完成,耗时: ${ui_whl_duration}秒"
|
||||
echo ""
|
||||
|
||||
# 构建 Docker 镜像
|
||||
echo "=== 构建 ARM Docker 镜像 ==="
|
||||
image_start=$(date +%s)
|
||||
source ./arm-build-image.sh || { echo "❌ ARM Docker 镜像构建失败"; exit 1; }
|
||||
cd "$current_dir"
|
||||
image_end=$(date +%s)
|
||||
image_duration=$((image_end - image_start))
|
||||
echo "✅ ARM Docker 镜像构建完成,耗时: ${image_duration}秒"
|
||||
echo ""
|
||||
|
||||
# 计算总耗时
|
||||
end_time=$(date +%s)
|
||||
total_duration=$((end_time - start_time))
|
||||
|
||||
echo "🎉 ARM 架构所有构建步骤完成!"
|
||||
echo ""
|
||||
echo "=== 构建耗时统计 ==="
|
||||
echo "环境准备: ${env_duration}秒"
|
||||
echo "whl 包构建: ${whl_duration}秒"
|
||||
echo "UI 构建: ${ui_duration}秒"
|
||||
echo "UI whl 包构建: ${ui_whl_duration}秒"
|
||||
echo "Docker 镜像构建: ${image_duration}秒"
|
||||
echo "------------------------"
|
||||
echo "总耗时: ${total_duration}秒"
|
||||
|
|
@ -8,7 +8,7 @@ DOCKERFILE_PATH="." # Dockerfile 所在目录
|
|||
|
||||
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-build-env
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env
|
||||
|
||||
# 允许通过参数设置镜像标签
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# ========== Dockerfile ==========
|
||||
FROM ccr.ccs.tencentyun.com/somunslotus/ubuntu:22.04
|
||||
|
||||
ARG PY_VER=3.10
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# 切换到阿里云 Ubuntu 源
|
||||
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
sed -i 's|http://security.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
apt-get clean && apt-get update
|
||||
|
||||
# 安装基础依赖
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
curl ca-certificates build-essential git software-properties-common vim && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 Python(Ubuntu 22.04 自带 python3.10, 支持 python3.8~3.12)
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python${PY_VER} python${PY_VER}-dev python${PY_VER}-venv python3-pip && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 pip(确保最新)
|
||||
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python${PY_VER}
|
||||
|
||||
# 设置默认 Python 版本
|
||||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python${PY_VER} 1 && \
|
||||
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PY_VER} 1
|
||||
|
||||
# 检查版本
|
||||
RUN python3 --version && pip3 --version
|
||||
|
||||
WORKDIR /opt/app
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# ---------- Python 3.8 + 清华源 ----------
|
||||
FROM ccr.ccs.tencentyun.com/somunslotus/ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# 切换为阿里云源(HTTP)
|
||||
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
sed -i 's|http://security.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
apt-get clean && apt-get update
|
||||
|
||||
|
||||
# 安装 Python 3.8(系统默认版本)及基本工具
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
python3.8 python3.8-venv python3.8-distutils python3-pip curl ca-certificates git vim build-essential && \
|
||||
ln -sf /usr/bin/python3.8 /usr/bin/python && \
|
||||
python -m pip install --upgrade pip && \
|
||||
mkdir -p /root/.pip && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
# 验证 Python 与 pip 版本
|
||||
RUN python --version && pip --version
|
||||
|
||||
CMD ["python3.8"]
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# ---------- Python 3.9 + 清华源 ----------
|
||||
FROM ccr.ccs.tencentyun.com/somunslotus/ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# 切换为阿里云源(HTTP)
|
||||
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
sed -i 's|http://security.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
|
||||
apt-get clean && apt-get update
|
||||
|
||||
# 先移除系统自带的 Python 3.8(如果存在)
|
||||
RUN apt-get remove -y python3.8 python3.8-minimal python3.8-venv python3.8-distutils 2>/dev/null || true
|
||||
|
||||
# 安装 Python 3.9 及相关开发包
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
software-properties-common && \
|
||||
add-apt-repository ppa:deadsnakes/ppa -y && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
python3.9 python3.9-venv python3.9-distutils python3.9-dev python3.9-full \
|
||||
curl vim ca-certificates git build-essential && \
|
||||
# 清理不再需要的包
|
||||
apt-get remove -y software-properties-common && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 设置 Python 3.9 为默认版本
|
||||
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 && \
|
||||
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 && \
|
||||
# 确保 pip 指向正确的 Python 版本
|
||||
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9 && \
|
||||
ln -sf /usr/bin/python3.9 /usr/bin/python
|
||||
|
||||
# 配置 pip 使用清华源
|
||||
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
# 验证 Python 与 pip 版本
|
||||
RUN python --version && python3 --version && pip --version
|
||||
|
||||
# 验证所有 Python 相关命令都指向 3.9
|
||||
RUN echo "Python commands check:" && \
|
||||
ls -la /usr/bin/python* && \
|
||||
echo "Python3 version:" && \
|
||||
python3 -V && \
|
||||
echo "Python version:" && \
|
||||
python -V && \
|
||||
echo "pip3 version:" && \
|
||||
pip3 -V
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 要构建的 Python 版本列表
|
||||
VERSIONS=(3.8 3.9 3.10 3.11 3.12)
|
||||
IMAGE_NAME="ccr.ccs.tencentyun.com/somunslotus/ubuntu"
|
||||
|
||||
for ver in "${VERSIONS[@]}"; do
|
||||
echo "🚀 构建镜像: ${IMAGE_NAME}:2204-${ver}"
|
||||
docker build \
|
||||
--build-arg PY_VER=${ver} \
|
||||
-t ${IMAGE_NAME}:${ver} \
|
||||
.
|
||||
done
|
||||
|
||||
echo "✅ 所有镜像构建完成!"
|
||||
docker images | grep ${IMAGE_NAME}
|
||||
|
|
@ -27,8 +27,8 @@ if [ -d aim_ui/build ]; then
|
|||
fi
|
||||
|
||||
docker run -v $(pwd):/code -w /code \
|
||||
-e http_proxy=http://172.20.32.253:3128 -e https_proxy=http://172.20.32.253:3128 \
|
||||
172.20.32.187/ci4s/node:16.16.0 /bin/sh -c "npm config set registry https://registry.npmmirror.com && npm install --legacy-peer-deps && npm run build"
|
||||
-e http_proxy= -e https_proxy= \
|
||||
172.20.32.159/ci4s/node:16.16.0 /bin/sh -c "npm config set registry https://registry.npmmirror.com && npm install --legacy-peer-deps && npm run build"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build ui failed"
|
||||
|
|
@ -51,7 +51,7 @@ echo "build aim-ui package success"
|
|||
|
||||
cd ../../../docker/
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.187/pipeline-service/aimstack/aim:3.19.0-$date
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-$date
|
||||
docker build -t "$image" \
|
||||
--build-arg "HTTP_PROXY=http://172.20.32.253:3128" \
|
||||
--build-arg "HTTPS_PROXY=http://172.20.32.253:3128" \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bahs
|
||||
|
||||
cd ../../
|
||||
|
||||
find ./docker -name "*.sh" -exec chmod +x {} \;
|
||||
find . -type f -not -path "./aim/web/ui/node_modules/*" -print0 | xargs -0 dos2unix
|
||||
|
|
@ -21,4 +21,5 @@ python-dateutil
|
|||
requests
|
||||
websockets
|
||||
boto3
|
||||
Cython==3.0.0a9
|
||||
Cython==3.0.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
FROM 172.20.32.187/pipeline-service/python:3.9.10-slim
|
||||
FROM 172.20.32.159/pipeline-service/python:3.9.10-slim
|
||||
|
||||
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
COPY aim*.whl /opt/aim/
|
||||
COPY aim_ui-3.19.0-py3-none-any.whl /opt/aim/aim_ui-3.19.0-py3-none-any.whl
|
||||
COPY aim-3.19.0-cp39-cp39-linux_x86_64.whl /opt/aim/aim-3.19.0-cp39-cp39-linux_x86_64.whl
|
||||
RUN pip install /opt/aim/aim_ui-3.19.0-py3-none-any.whl
|
||||
RUN pip install /opt/aim/aim-3.19.0-cp39-cp39-linux_x86_64.whl
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
FROM ccr.ccs.tencentyun.com/somunslotus/ubuntu:2004-python3.9
|
||||
|
||||
|
||||
# 更新并安装编译工具
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
gcc \
|
||||
g++ \
|
||||
vim \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 设置 pip 清华源
|
||||
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
# 预先复制 requirements 文件(利用缓存层)
|
||||
COPY ./requirements-new.txt /app/
|
||||
|
||||
# 安装 Python 依赖
|
||||
RUN pip install --no-cache-dir --upgrade pip && \
|
||||
pip install --no-cache-dir -r requirements-new.txt
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Docker 构建脚本(带代理设置)
|
||||
# 用法:./build.sh [镜像标签]
|
||||
|
||||
# 设置代理配置
|
||||
DOCKERFILE_PATH="." # Dockerfile 所在目录
|
||||
|
||||
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env-x86
|
||||
|
||||
# 允许通过参数设置镜像标签
|
||||
|
||||
# 构建命令
|
||||
docker build \
|
||||
-t $image \
|
||||
-f Dockerfile-x86.build-env \
|
||||
"${DOCKERFILE_PATH}"
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
date=$(date +%Y%m%d%H%M)
|
||||
image=172.20.32.159/pipeline-service/aimstack/aim:3.19.0-$date
|
||||
docker build -t "$image" -f Dockerfile.x86 .
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build image failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "build image success"
|
||||
docker push "$image"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "push image failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "build image success"
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 切换到项目 UI 目录
|
||||
cd ../../aim/web/ui || { echo "错误:无法切换到 aim/web/ui 目录"; exit 1; }
|
||||
|
||||
# 配置变量
|
||||
IMAGE="172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env-x86"
|
||||
CONTAINER_NAME="aim-ui-builder-$(date +%s)"
|
||||
HOST_WORKDIR=$(pwd)
|
||||
PROJECT_ROOT=$(dirname "$(dirname "$HOST_WORKDIR")") # 获取项目根目录
|
||||
DOCKER_DIR="$PROJECT_ROOT/docker" # docker 目录绝对路径
|
||||
CONTAINER_WORKDIR="/code"
|
||||
|
||||
echo "=== 开始构建 Aim UI 软件包 ==="
|
||||
echo "使用镜像: $IMAGE"
|
||||
echo "主机工作目录: $HOST_WORKDIR"
|
||||
echo "Docker 输出目录: $DOCKER_DIR"
|
||||
echo "容器工作目录: $CONTAINER_WORKDIR"
|
||||
|
||||
# 确保 docker 目录存在
|
||||
mkdir -p "$DOCKER_DIR"
|
||||
|
||||
# 启动容器并执行构建
|
||||
docker run --rm \
|
||||
--name "$CONTAINER_NAME" \
|
||||
-v "$HOST_WORKDIR:$CONTAINER_WORKDIR" \
|
||||
-v "$DOCKER_DIR:/docker_out" \
|
||||
-w "$CONTAINER_WORKDIR" \
|
||||
"$IMAGE" \
|
||||
/bin/bash -c "\
|
||||
echo '== 执行构建命令 =='; \
|
||||
if ! python setup.py bdist_wheel; then \
|
||||
echo '构建 Aim UI 软件包失败'; \
|
||||
exit 1; \
|
||||
fi;"
|
||||
|
||||
target_dir=../../../docker/x86
|
||||
cp dist/aim_ui*.whl $target_dir; \
|
||||
echo '生成的文件列表:'; \
|
||||
ls -lh dist/*.whl; \
|
||||
echo '输出到 docker 目录的文件:'; \
|
||||
ls -lh $target_dir/aim_ui*.whl; \
|
||||
echo '== 构建完成 =='
|
||||
|
||||
# 检查构建结果
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "=== Aim UI 软件包构建成功 ==="
|
||||
echo "生成的 wheel 文件已复制到: $DOCKER_DIR"
|
||||
echo "文件列表:"
|
||||
ls -lh $target_dir/aim_ui*.whl
|
||||
else
|
||||
echo "=== 构建失败,请检查错误信息 ===" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 进入182服务器,然后切换到conda activate aim-build环境进行构建
|
||||
#构建aim 包
|
||||
|
||||
|
||||
echo "build aim package success"
|
||||
|
||||
#编译前端代码
|
||||
cd ../../aim/web/ui
|
||||
|
||||
if [ -d build ]; then
|
||||
echo "rm build dir success"
|
||||
rm -rf build/
|
||||
fi
|
||||
|
||||
if [ -d aim_ui/build ]; then
|
||||
echo "rm aim_ui/build dir success"
|
||||
rm -rf aim_ui/build/
|
||||
fi
|
||||
|
||||
docker run -v $(pwd):/code -w /code \
|
||||
172.20.32.159/ci4s/node:16.16.0 /bin/sh -c "npm config set registry https://registry.npmmirror.com && npm install --legacy-peer-deps --verbose && npm run build"
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "build ui failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
mv -f build/ aim_ui/
|
||||
echo "build ui success"
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
#!/bin/bash
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
cd ../../
|
||||
# Aim 软件包构建脚本
|
||||
# 使用 Docker 容器环境构建并复制 wheel 文件
|
||||
|
||||
# 配置变量
|
||||
IMAGE="172.20.32.159/pipeline-service/aimstack/aim:3.19.0-build-env-x86"
|
||||
CONTAINER_NAME="aim-builder-$(date +%s)"
|
||||
HOST_WORKDIR=$(pwd)
|
||||
CONTAINER_WORKDIR="/code"
|
||||
|
||||
echo "=== 开始构建 Aim 软件包 ==="
|
||||
echo "使用镜像: $IMAGE"
|
||||
echo "主机工作目录: $HOST_WORKDIR"
|
||||
echo "容器工作目录: $CONTAINER_WORKDIR"
|
||||
|
||||
# 启动容器并执行构建
|
||||
docker run --rm \
|
||||
--name $CONTAINER_NAME \
|
||||
-v "$HOST_WORKDIR:$CONTAINER_WORKDIR" \
|
||||
-w $CONTAINER_WORKDIR \
|
||||
$IMAGE \
|
||||
/bin/bash -c "\
|
||||
echo '== 在容器中执行构建命令 =='; \
|
||||
python setup.py bdist_wheel; \
|
||||
BUILD_RESULT=\$?; \
|
||||
if [ \$BUILD_RESULT -ne 0 ]; then \
|
||||
echo '构建 Aim 软件包失败'; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo '构建成功'; \
|
||||
echo '复制 wheel 文件到 docker 目录'; \
|
||||
cp dist/aim*.whl docker/x86; \
|
||||
echo '== 构建完成 =='"
|
||||
|
||||
# 检查构建结果
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "=== Aim 软件包构建成功 ==="
|
||||
echo "生成的 wheel 文件已复制到: $HOST_WORKDIR/docker/x86"
|
||||
ls -lh "$HOST_WORKDIR/docker/x86/aim"*.whl
|
||||
else
|
||||
echo "=== 构建失败,请检查错误信息 ==="
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
#!/bin/bash
|
||||
# build-all.sh
|
||||
|
||||
set -e
|
||||
current_dir=$(pwd)
|
||||
echo "开始完整构建流程..."
|
||||
start_time=$(date +%s)
|
||||
|
||||
# 准备环境
|
||||
echo "=== 准备构建环境 ==="
|
||||
env_start=$(date +%s)
|
||||
source ../prepare-env.sh
|
||||
env_end=$(date +%s)
|
||||
env_duration=$((env_end - env_start))
|
||||
echo "✅ 环境准备完成,耗时: ${env_duration}秒"
|
||||
echo ""
|
||||
|
||||
cd $current_dir
|
||||
# 构建 whl 包
|
||||
echo "=== 构建 server whl 包 ==="
|
||||
whl_start=$(date +%s)
|
||||
source ./x86-build-whl.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ whl 包构建失败,停止构建"
|
||||
exit 1
|
||||
fi
|
||||
cd $current_dir
|
||||
whl_end=$(date +%s)
|
||||
whl_duration=$((whl_end - whl_start))
|
||||
echo "✅ whl 包构建完成,耗时: ${whl_duration}秒"
|
||||
echo ""
|
||||
|
||||
cd $current_dir
|
||||
# 构建 UI
|
||||
echo "=== 编译 UI ==="
|
||||
ui_start=$(date +%s)
|
||||
source ./x86-build-ui.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ UI 编译失败,停止构建"
|
||||
exit 1
|
||||
fi
|
||||
cd $current_dir
|
||||
ui_end=$(date +%s)
|
||||
ui_duration=$((ui_end - ui_start))
|
||||
echo "✅ UI 编译完成,耗时: ${ui_duration}秒"
|
||||
echo ""
|
||||
|
||||
cd $current_dir
|
||||
# 构建包含 UI 的 whl 包
|
||||
echo "=== 构建包含 UI 的 whl 包 ==="
|
||||
ui_whl_start=$(date +%s)
|
||||
source ./x86-build-ui-whl.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ UI whl 包构建失败,停止构建"
|
||||
exit 1
|
||||
fi
|
||||
cd $current_dir
|
||||
ui_whl_end=$(date +%s)
|
||||
ui_whl_duration=$((ui_whl_end - ui_whl_start))
|
||||
echo "✅ UI whl 包构建完成,耗时: ${ui_whl_duration}秒"
|
||||
echo ""
|
||||
|
||||
cd $current_dir
|
||||
# 构建 Docker 镜像
|
||||
echo "=== 构建 Docker 镜像 ==="
|
||||
image_start=$(date +%s)
|
||||
source ./x86-build-image.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Docker 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
cd $current_dir
|
||||
image_end=$(date +%s)
|
||||
image_duration=$((image_end - image_start))
|
||||
echo "✅ Docker 镜像构建完成,耗时: ${image_duration}秒"
|
||||
echo ""
|
||||
|
||||
# 计算总耗时
|
||||
end_time=$(date +%s)
|
||||
total_duration=$((end_time - start_time))
|
||||
|
||||
echo "🎉 所有构建步骤完成!"
|
||||
echo ""
|
||||
echo "=== 构建耗时统计 ==="
|
||||
echo "环境准备: ${env_duration}秒"
|
||||
echo "whl 包构建: ${whl_duration}秒"
|
||||
echo "UI 编译: ${ui_duration}秒"
|
||||
echo "UI whl 包构建: ${ui_whl_duration}秒"
|
||||
echo "Docker 镜像构建: ${image_duration}秒"
|
||||
echo "------------------------"
|
||||
echo "总耗时: ${total_duration}秒"
|
||||
|
|
@ -21,4 +21,4 @@ python-dateutil
|
|||
requests
|
||||
websockets
|
||||
boto3
|
||||
Cython==3.0.0a9
|
||||
Cython==3.0.0
|
||||
|
|
|
|||
Loading…
Reference in New Issue