3. 开发环境搭建:Linux服务器基础配置、Docker与Kubernetes环境部署、Git版本控制与CI/CD流水线搭建、Python/Java/Go开发环境配置

说实话,搭建开发环境这件事,看着琐碎,但真能决定你后面几个月的开发效率。我在半导体智能制造平台的项目里,见过太多团队因为环境不一致,最后联调时炸成一锅粥。所以这一章,咱们把地基打牢。

核心思路:一切环境都容器化,宿主机只装最基础的东西。这样你换台服务器,十分钟就能恢复全部战斗力。

3.1 Linux服务器基础配置

我习惯用 Ubuntu 20.04 LTS 或 CentOS 7.9。选哪个?看你团队运维的熟悉程度。我个人偏爱 Ubuntu,因为包管理更顺手。

3.1.1 系统初始化

拿到一台新服务器,第一件事不是装软件,而是做安全加固。我曾经吃过亏,服务器刚上线就被挖矿脚本盯上了。

# 更新系统
sudo apt update && sudo apt upgrade -y

# 创建普通用户,禁止root直接登录
sudo useradd -m -s /bin/bash devops
sudo passwd devops
sudo usermod -aG sudo devops

# 配置SSH密钥登录
ssh-keygen -t rsa -b 4096
ssh-copy-id devops@your-server-ip

# 修改SSH配置
sudo vim /etc/ssh/sshd_config
# 修改以下参数:
# PermitRootLogin no
# PasswordAuthentication no
# Port 2222  # 换个端口,避开扫描

sudo systemctl restart sshd

小技巧:我习惯把 SSH 端口改成 2222 或 10022。虽然不能完全防住攻击,但能过滤掉 99% 的自动扫描脚本。

3.1.2 基础工具链

这些工具是后面所有操作的前提。嗯,这里要注意,千万别漏了 curlwget,不然你装 Docker 时会抓狂。

sudo apt install -y curl wget vim git net-tools htop \
    tree jq unzip build-essential software-properties-common

3.1.3 网络与防火墙

半导体工厂里的网络环境通常很复杂。有内网、外网、还有设备网。我建议你一开始就规划好端口策略。

服务 默认端口 说明
SSH 2222 远程管理
Kubernetes API 6443 集群管理
NodePort 范围 30000-32767 外部访问
Docker Registry 5000 镜像仓库
# 配置UFW防火墙
sudo ufw allow 2222/tcp
sudo ufw allow 6443/tcp
sudo ufw allow 30000:32767/tcp
sudo ufw enable

3.2 Docker 与 Kubernetes 环境部署

为什么一定要用容器?说白了,半导体制造涉及的工具链太杂了。Python 要 3.8,Java 要 11,Go 要 1.20,还有各种 C++ 库。不用容器,你光解决依赖冲突就能耗掉一周。

3.2.1 Docker 安装

我推荐用官方脚本安装,干净利落。别用系统自带的包管理器,版本太旧。

# 官方一键安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 将用户加入docker组,避免每次sudo
sudo usermod -aG docker $USER
newgrp docker

# 验证安装
docker --version
docker run hello-world

注意:我在项目中遇到过 Docker 磁盘占满的问题。半导体数据量很大,晶圆图、测试数据动不动就几百 GB。一定要配置 Docker 的存储驱动和日志轮转。

# 配置Docker存储驱动为overlay2,限制日志大小
sudo mkdir -p /etc/docker
cat <

3.2.2 Kubernetes 集群搭建

我选择 kubeadm 来搭建。虽然现在有 k3s、microk8s 这些轻量方案,但生产环境还是 kubeadm 最稳。你想想看,半导体产线不能停,稳定压倒一切。

# 安装kubeadm、kubelet、kubectl
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# 初始化控制平面
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件(我选Flannel)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

避坑指南:我曾经在 CentOS 上因为 SELinux 没关,折腾了两天。记得检查 swapoff -asetenforce 0。Kubernetes 要求 swap 必须关闭。

3.3 Git 版本控制与 CI/CD 流水线搭建

半导体制造有个特点:版本管理极其严格。一个光刻参数错了,整批晶圆就废了。所以 Git 不只是代码管理,更是配置管理。

3.3.1 Git 服务器搭建

我习惯用 Gitea,轻量、好维护。GitLab 功能多但太重,对于团队内部使用,Gitea 足够了。

# 使用Docker部署Gitea
docker run -d \
  --name=gitea \
  -p 3000:3000 \
  -p 222:22 \
  -v /data/gitea:/data \
  gitea/gitea:latest

3.3.2 Git 工作流规范

在半导体智能制造平台,我推荐用 GitFlow 变体。为什么?因为我们的发布周期很固定,两周一个迭代,热修复随时可能。

  • main:生产分支,只合入经过验证的代码
  • develop:开发主分支,日常集成
  • feature/*:功能分支,从 develop 拉出
  • release/*:发布分支,测试通过后合并到 main
  • hotfix/*:紧急修复,从 main 拉出

3.3.3 CI/CD 流水线(Jenkins + GitLab CI)

我选择 Jenkins 作为主引擎。虽然现在 GitHub Actions 很火,但 Jenkins 的插件生态更适合半导体行业的特殊需求——比如调用 EDA 工具、生成 GDSII 文件。

# Jenkins Docker部署
docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /data/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins/jenkins:lts

一个典型的 CI/CD 流水线包含以下阶段:

  1. 代码拉取:从 Git 仓库获取最新代码
  2. 静态检查:SonarQube 扫描代码质量
  3. 单元测试:运行 pytest、JUnit、Go test
  4. 构建镜像:Docker build 并 push 到私有仓库
  5. 部署到测试环境:Kubernetes apply
  6. 集成测试:模拟数据跑一遍流程
  7. 通知:钉钉/企业微信通知结果

核心原则:流水线必须幂等。同一份代码,跑一百次结果应该一样。我在项目中遇到过因为测试数据没清理,导致构建结果不一致的惨痛教训。

3.4 Python/Java/Go 开发环境配置

这三个语言基本覆盖了半导体智能制造平台的所有场景:Python 做数据分析、Java 做后端服务、Go 做高性能中间件。

3.4.1 Python 环境

我强烈推荐用 pyenv + poetry 的组合。别用系统自带的 Python,版本太老,而且容易污染。

# 安装pyenv
curl https://pyenv.run | bash

# 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 安装Python 3.10
pyenv install 3.10.12
pyenv global 3.10.12

# 安装poetry
curl -sSL https://install.python-poetry.org | python3 -

个人经验:半导体数据分析经常用到 numpy、pandas、scikit-learn。这些库的 C 扩展编译很慢。我习惯在 Dockerfile 里预编译好,避免每次构建都等十分钟。

3.4.2 Java 环境

Java 在半导体行业主要用于 MES(制造执行系统)和 EAP(设备自动化程序)。我推荐用 SDKMAN 管理多版本。

# 安装SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# 安装Java 11和17
sdk install java 11.0.20-tem
sdk install java 17.0.8-tem

# 设置默认版本
sdk default java 17.0.8-tem

# 安装Maven和Gradle
sdk install maven
sdk install gradle

3.4.3 Go 环境

Go 我用来写设备驱动和中间件。它的并发模型很适合处理半导体设备的海量数据流。

# 下载Go
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

# 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc

# 验证
go version

3.5 知识体系总览

下面这张图,是我梳理的整个开发环境搭建的逻辑。你看一眼,心里就有谱了。

开发环境搭建知识体系 Linux 服务器基础 Docker + Kubernetes 容器编排 Git 版本控制 + Jenkins CI/CD 流水线 Python(数据分析) | Java(MES/EAP) | Go(中间件) 每一层都依赖下一层,从下往上逐层构建 容器化贯穿始终,保证环境一致性 从零搭建 → 生产可用

你看,整个体系是层层递进的。Linux 是地基,Docker/K8s 是骨架,Git/CI/CD 是血脉,三种语言是肌肉。缺了任何一层,平台都跑不起来。

最后提醒一句:别想着一次配完所有环境。我刚开始做这个平台时,恨不得一天搭完所有东西。结果呢?三天后全推倒重来。先搭最小可用集,跑通一个最简单的流水线,再慢慢加东西。稳扎稳打,才是半导体行业的节奏。


公众号:蓝海资料掘金营,微信deep3321

专注资料整理