Atlantis Web界面定制:打造团队专属的操作控制台

Atlantis Web界面定制:打造团队专属的操作控制台

【免费下载链接】atlantis runatlantis/atlantis: Atlantis 是一款针对 Terraform 的自动化基础设施部署工具,它集成到GitHub、GitLab 或 Bitbucket 等版本控制系统中,支持团队协作审查和执行 Terraform 计划,并通过评论驱动的工作流程简化了基础设施即代码(IaC)的生命周期管理。 【免费下载链接】atlantis 项目地址: https://gitcode.com/gh_mirrors/at/atlantis

Atlantis作为Terraform的自动化部署工具,其Web界面是团队日常操作的核心入口。默认界面虽功能完整,但通过定制化可显著提升团队协作效率。本文将从样式调整、功能扩展、部署流程三个维度,详解如何打造符合团队需求的专属控制台。

界面定制基础:目录结构与核心文件

Atlantis的Web界面资源集中在server/static/目录下,采用经典的前端三层架构:

样式定制:从品牌色到响应式布局

品牌标识植入

通过修改custom.css中的.header类,可将团队Logo和品牌色融入界面:

.header {
  margin-top: 2.5vh;
  text-align: center;
  background-image: url('images/team-logo.png');
  background-repeat: no-repeat;
  background-position: left 20px center;
  padding-left: 80px;
}

.navbar-link {
  color: #2c3e50; /* 团队主色调 */
}

.button-primary {
  background-color: #3498db; /* 行动按钮色 */
  border-color: #3498db;
}

响应式布局优化

针对不同设备调整控制台布局,在skeleton.css的媒体查询块中添加:

/* 适配平板设备 */
@media (min-width: 768px) and (max-width: 1024px) {
  .lock-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* 移动端优化 */
@media (max-width: 767px) {
  .lock-grid {
    grid-template-columns: 1fr;
  }
  .navbar-link {
    font-size: 10px;
    padding: 0 8px;
  }
}

暗色模式实现

通过CSS变量和JavaScript切换实现暗色模式,在custom.css中定义:

:root {
  --bg-color: #ffffff;
  --text-color: #222222;
  --grid-bg: #f9f9f9;
}

[data-theme="dark"] {
  --bg-color: #1a1a1a;
  --text-color: #e0e0e0;
  --grid-bg: #2d2d2d;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

.lock-grid {
  background-color: var(--grid-bg);
}

功能扩展:JavaScript交互增强

自定义数据过滤器

在现有JavaScript基础上添加项目筛选功能,创建server/static/js/filters.js

// 项目路径过滤
document.getElementById('path-filter').addEventListener('input', function(e) {
  const filter = e.target.value.toLowerCase();
  document.querySelectorAll('.lock-row').forEach(row => {
    const path = row.querySelector('.lock-path').textContent.toLowerCase();
    row.style.display = path.includes(filter) ? '' : 'none';
  });
});

// 时间范围筛选
document.getElementById('time-filter').addEventListener('change', function(e) {
  const days = parseInt(e.target.value);
  const cutoff = new Date();
  cutoff.setDate(cutoff.getDate() - days);
  
  document.querySelectorAll('.lock-datetime').forEach(el => {
    const lockDate = new Date(el.dataset.timestamp);
    const row = el.closest('.lock-row');
    row.style.display = lockDate >= cutoff ? '' : 'none';
  });
});

批量操作功能

扩展批量解锁功能,在server/static/js/batch-actions.js中实现:

// 全选切换
document.getElementById('select-all').addEventListener('change', function(e) {
  document.querySelectorAll('.lock-selector').forEach(checkbox => {
    checkbox.checked = e.target.checked;
  });
});

// 批量解锁
document.getElementById('batch-unlock').addEventListener('click', async function() {
  const selectedLocks = Array.from(document.querySelectorAll('.lock-selector:checked'))
    .map(cb => cb.dataset.lockId);
  
  if (selectedLocks.length === 0) return;
  
  try {
    const response = await fetch('/api/locks/batch-unlock', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ lockIds: selectedLocks })
    });
    
    if (response.ok) {
      selectedLocks.forEach(id => {
        document.querySelector(`[data-lock-id="${id}"]`).closest('.lock-row').remove();
      });
      showNotification('成功解锁选中项目', 'success');
    }
  } catch (error) {
    showNotification('解锁失败: ' + error.message, 'error');
  }
});

部署与版本控制

定制资源打包

修改项目根目录的Makefile,添加自定义资源打包步骤:

# 自定义前端资源打包
build-frontend:
  @echo "Building custom frontend assets..."
  # 编译CSS
  cat server/static/css/normalize.css server/static/css/skeleton.css server/static/css/custom.css > server/static/css/bundle.css
  # 压缩JS
  uglifyjs server/static/js/*.js -o server/static/js/bundle.min.js
  # 添加版本标识
  echo "const ASSETS_VERSION = '$(shell git rev-parse --short HEAD)';" >> server/static/js/bundle.min.js

配置管理最佳实践

采用环境变量控制界面特性,修改server/user_config.go添加配置项:

type UIConfig struct {
  CustomLogoPath string `json:"custom_logo_path"`
  EnableDarkMode bool   `json:"enable_dark_mode"`
  DefaultTheme   string `json:"default_theme"`
}

// 从环境变量加载UI配置
func LoadUIConfig() UIConfig {
  return UIConfig{
    CustomLogoPath: os.Getenv("ATLANTIS_UI_LOGO_PATH"),
    EnableDarkMode: os.Getenv("ATLANTIS_UI_DARK_MODE") == "true",
    DefaultTheme:   os.Getenv("ATLANTIS_DEFAULT_THEME"),
  }
}

效果展示与迭代优化

定制前后对比

界面定制前后对比

左侧为默认界面,右侧为定制后的团队专属控制台,包含:

  • 团队配色方案与Logo
  • 项目分类标签系统
  • 高级筛选工具栏
  • 批量操作按钮组

用户反馈收集

在界面添加反馈入口,创建server/static/js/feedback.js

// 反馈表单提交
document.getElementById('feedback-form').addEventListener('submit', function(e) {
  e.preventDefault();
  const feedbackText = document.getElementById('feedback-text').value;
  const rating = document.querySelector('input[name="rating"]:checked').value;
  
  fetch('/api/feedback', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      feedback: feedbackText,
      rating: rating,
      uiVersion: ASSETS_VERSION,
      timestamp: new Date().toISOString()
    })
  }).then(() => {
    document.getElementById('feedback-form').reset();
    alert('感谢您的反馈!');
  });
});

总结与后续扩展方向

通过CSS变量定制、JavaScript功能增强和配置系统扩展,Atlantis Web界面可完美适配团队工作流。后续可探索:

  1. 插件系统:开发界面插件架构,支持团队独立开发功能模块
  2. 实时协作:集成WebSocket实现多人操作状态同步
  3. 数据可视化:添加Terraform执行统计仪表盘

完整的定制方案已归档至项目的custom-ui分支,包含所有示例代码和配置文件。

【免费下载链接】atlantis runatlantis/atlantis: Atlantis 是一款针对 Terraform 的自动化基础设施部署工具,它集成到GitHub、GitLab 或 Bitbucket 等版本控制系统中,支持团队协作审查和执行 Terraform 计划,并通过评论驱动的工作流程简化了基础设施即代码(IaC)的生命周期管理。 【免费下载链接】atlantis 项目地址: https://gitcode.com/gh_mirrors/at/atlantis

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值