1. 修改代码
就像我之前说的,软件开发其实就是不断在代码里做小改动。这个过程被成千上万的程序员用几十年,经过反复调试、标准化和正规化,变得非常成熟。
用来存储代码的专用工具叫做 Git。Git 是一个分布式版本控制系统。它不仅仅存代码,还能追踪所有的改动,帮助程序员协作开发,不会互相干扰 🤝。
有了 Git,开发者可以创建不同的项目版本(分支),保存完整的变更历史,甚至随时回到过去的某个状态。这就像代码的时光机!Git还能帮忙合并改动、解决冲突,所以它成为现代团队开发的核心工具之一。👩💻
2. 构建项目
在测试或上传到服务器之前,必须先把项目“构建”出来。
🏗️ 项目构建,就是把源代码编译成可执行程序或其他运行格式,通常还会包括测试和部署。这是软件开发的关键环节,确保程序能正常用。
构建不只是简单的编译,虽然编译通常是构建的一部分。完成后,你可能会得到几十甚至几百个文件,要上传到不同的服务器。
构建工具可以是底层的,比如:
- ☕ Maven 和 Gradle — 在Java项目中很常用,用来管理依赖和构建流程。
- 🐜 Apache Ant — 另一个Java构建工具,写脚本更灵活。
- 🖥️ MSBuild — 用于微软Visual Studio创建的项目的构建。
- ⚙️ Make — 经典的构建工具,用Makefile定义规则,特别在C/C++项目中流行。
- 🌐 Webpack — 常用来打包JavaScript应用,管理依赖和模块。
- 📜 Gulp 和 Grunt — 自动化常见任务,比如压缩文件、编译SCSS成CSS。
还有一些高级的构建工具,后面会讲到。
3. CI/CD
🔄 CI/CD(持续集成/持续交付),是一套流程,保证所有开发分支的改动都能持续合并到主分支,并自动测试和部署。这样可以快速发现问题,提升开发效率和质量。
最常用的CI/CD工具之一是 Jenkins。如果你在小公司工作,80%的可能性会用到它。
🤖 Jenkins,是个很流行的自动化系统,用来做持续集成和交付(CI/CD)。它可以自动化构建、测试、部署的各个环节,让代码质量更高,开发速度更快。
如果你在大公司,可能还会遇到其他几款:
- 🚦 TeamCity — JetBrains出品的强大商业工具,和开发、测试环境集成紧密。
- 📝 GitLab CI — GitLab自带的CI/CD功能,用YAML配置,灵活好用。
- ☁️ CircleCI — 云端的CI/CD平台,支持自动测试和部署多个项目。
- 🦑 Travis CI — 早期的云端CI服务,很多开源项目用它,和GitHub集成很好。
- 🎍 Bamboo — Atlassian的产品,和Jira、Bitbucket配合紧密。
不用你全都掌握,通常公司里有专门的DevOps工程师负责这些流程。你只要知道它们存在,听到 Jenkins、CI/CD 或“持续集成”这些词也能明白大概意思。
4. 把项目部署到服务器
写完项目还不够,它还得跑到你的服务器上。部署(deploy)就是把你的Web应用放到服务器上,让用户能通过互联网访问 🚚。
这个过程包括把项目文件传到服务器、配置环境、数据库、依赖包,还要调好网络和安全设置 😅。
你觉得你的代码会自己上传到服务器吗?有人会帮你操作?还是你自己用SSH连接远程服务器,上传文件,然后手动配置?别担心:现在都不用这么麻烦了。因为有 Docker。
🐳 Docker,是个用容器技术开发、交付和运行应用的平台。它让创建、部署、运行应用变得简单,把应用和所有依赖打包在一起,形成一个“容器”。这样,无论在哪个环境,都能保证运行一致。
用 Docker,你可以把项目打包成 Docker容器。这就像虚拟机一样,但更轻量。
虽然在很多论坛里有人会说“Docker不是虚拟机”,但其实可以把 Docker 容器看作一种“虚拟化的虚拟机”。只是比传统虚拟机更轻便、更快 ⚡。
本质上,Docker容器就是虚拟的“虚拟机”。虚拟机会复制一份完整的操作系统、内核和硬件环境,而 Docker 容器只共享宿主机的内核,运行更快,占用更少资源 ⚡。
用 Docker 进行部署,流程变得非常简单,既快又靠谱。项目打包成 Docker 容器后,可以在任何支持 Docker 的系统上跑 🚢。
这也解决不同服务器环境带来的兼容问题,还能方便地扩展应用:增加或减少容器,按需调整。现在大家都用 Docker,既方便又高效。
GO TO FULL VERSION