1.
概览与前提
说明:本文目标是把开发工具(源码、构建、打包、部署)整合到海外服务器与苹果构建资源中,并配合CI/CD自动化。
小分段:适合对象:开源/私有项目(私有需注意Runner分钟数与付费),需要一个Git仓库(GitHub/GitLab)与一个海外VM或云实例。
2.
选择海外服务器(推荐免费/低成本)
步骤:推荐Oracle Cloud Always Free(ARM/VM),AWS Free Tier、Google Cloud试用或DigitalOcean低价实例。
小分段:选点建议:若仅部署后端API,选Ubuntu 22.04;如需Docker,确保至少1GB内存(最好2GB)。
3.
初始化服务器(SSH 与用户)
命令示例:本地生成密钥 ssh-keygen -t ed25519 -C "you@domain";将公钥复制到服务器~/.ssh/authorized_keys。
小分段:创建用户 sudo adduser deploy && usermod -aG sudo deploy;禁止密码登录:编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no,重启 sshd。
4.
安装基础环境(Docker、nginx、certbot)
Ubuntu 示例命令:sudo apt update && sudo apt install -y docker.io docker-compose nginx certbot python3-certbot-nginx git;sudo systemctl enable --now docker。
小分段:检查 docker sudo docker run hello-world;配置 nginx 反向代理并用 certbot --nginx 获取Let's Encrypt 证书。
5.
代码仓库与环境变量管理
步骤:在服务器创建目录 /var/www/myapp,git clone git@github.com:you/repo.git,或用CI通过rsync部署。
小分段:将敏感信息放在 .env 并加入 .gitignore;CI使用Secrets管理(如GITHUB_SECRETS、GitLab CI变量)。
6.
CI/CD 选择与基本工作流(以GitHub Actions为例)
说明:若公开仓库可免费使用 macos-latest Runner;私有仓库需注意分钟配额或自建Runner。
小分段:工作流分为:checkout -> install deps -> build/test -> 打包(iOS用xcodebuild/fastlane)-> 部署(SSH/rsync或Docker镜像推送)。
7.
GitHub Actions 实例(Linux 后端 + macOS 构建)
示例YAML要点:使用 jobs.build-linux 在 ubuntu-latest 上构建容器,jobs.build-ios 在 macos-latest 上运行 xcodebuild 或 fastlane;部署使用 apple secrets 与 SSH 私钥。
小分段:在仓库 Settings->Secrets 添加 SSH_PRIVATE_KEY, SERVER_USER, SERVER_IP, DEPLOY_PATH, APPLE_ID 等。
8.
示例:用 Actions 部署到海外服务器(关键步骤)
核心步骤(简化):actions/checkout -> actions/setup-node -> npm ci -> npm run build -> uses appleboy/scp-action@master 上传文件 -> ssh 执行远程 docker-compose pull && docker-compose up -d。
小分段:示例命令:rsync -avz --delete ./dist/ deploy@1.2.3.4:/var/www/myapp/ && ssh deploy@1.2.3.4 "cd /var/www/myapp && docker-compose up -d --build".
9.
苹果构建与签名(免费方案与限制)
说明:使用 macos-latest Runner + fastlane 能在CI上构建;开发签名可用免费Apple ID进行真机调试,但上传App Store与分发需要付费Apple Developer账号。
小分段:推荐流程:在Actions里导入证书/Provision(使用 fastlane match 或使用 App Store Connect API key,但后者需付费账号)。
10.
安全与自动化细节
建议:私钥使用Actions Secrets且在workflow中写入临时 ~/.ssh/id_ed25519 并设置权限;使用 fail-safe 脚本检查部署前的构建产物。
小分段:CI日志不要打印敏感变量;服务器上用 UFW 只开放必需端口(22、80、443、应用端口)。
11.
常见故障与排查步骤
故障排查:SSH 连接失败检查安全组与防火墙;部署失败查看 actions 日志与远程 docker logs。
小分段:iOS 构建失败查看 xcodebuild 输出,缺少证书/描述文件会报错误,先在本地复现并在fastlane中固定方案。
12.
问:能否完全免费在海外服务器上做iOS打包并提交App Store?
答:不完全可以。你可以用GitHub公开仓库免费使用 macos-latest Runner 做构建,但提交App Store、发布分发需要付费 Apple Developer Program(年费)。此外,证书与自动签名在CI上通常需要付费账户或复杂的证书管理。
13.
问:如何安全地将CI构建产物部署到海外服务器?
答:推荐使用SSH私钥(放在CI Secrets),通过rsync或scp上传构建产物,并在服务器端用docker-compose或systemd管理进程。部署脚本应先备份旧版本、执行健康检查并在失败时回滚。
14.
问:推荐的免费海外服务器与苹果CI组合最小可行方案是什么?
答:最小可行方案:公开GitHub仓库(可免费用macos runner)+ Oracle Cloud Always Free(或任意廉价VM)作为生产环境;CI负责构建(macOS)并通过SSH/rsync把产物部署到海外服务器。注意发行到App Store仍需付费苹果账户。
来源:开发工具整合海外服务器推荐免费苹果与CI/CD工作流结合