在Ubuntu上搭建Flutter CI/CD(持续集成和持续部署)流程,可以按照以下步骤进行:
首先,确保你的Ubuntu系统已经安装了以下工具:
sudo apt update
sudo apt install git
# 安装Dart
sudo apt install wget unzip
wget https://storage.googleapis.com/dart-archive/channels/stable/release/linux/debian/9/sdk/dartsdk-linux-x64-release.zip
unzip dartsdk-linux-x64-release.zip -d ~/flutter_sdk
echo 'export PATH="$PATH:$HOME/flutter_sdk/bin"' >> ~/.bashrc
source ~/.bashrc
# 验证安装
flutter doctor
sudo apt update
sudo apt install openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
启动Jenkins服务:
sudo systemctl start jenkins
sudo systemctl enable jenkins
访问 http://<your_server_ip>:8080
并按照提示完成Jenkins的初始配置。
在Jenkins管理界面中,安装以下插件:
在Jenkins中创建一个新的Pipeline项目,并配置Pipeline脚本。以下是一个简单的示例:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo/your-flutter-app.git'
}
}
stage('Install Flutter') {
steps {
sh 'flutter doctor'
sh 'flutter pub get'
}
}
stage('Build Android') {
steps {
sh 'flutter build apk'
}
}
stage('Build iOS') {
steps {
// 需要Mac环境来构建iOS应用
// 可以使用Jenkins的SSH Agent插件来远程执行这些命令
sh 'flutter build ios'
}
}
stage('Deploy') {
steps {
// 部署逻辑,例如上传到服务器或发布到应用商店
}
}
}
}
如果你更喜欢使用GitHub Actions,可以在你的Flutter项目根目录下创建一个 .github/workflows/flutter-ci.yml
文件,并添加以下内容:
name: Flutter CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Flutter
run: |
curl https://storage.googleapis.com/dart-archive/channels/stable/release/linux/debian/9/sdk/dartsdk-linux-x64-release.zip -o dart-sdk.zip
unzip dart-sdk.zip -d flutter_sdk
export PATH="$PATH:$HOME/flutter_sdk/bin"
flutter doctor
- name: Install dependencies
run: flutter pub get
- name: Build and test
run: flutter test
- name: Build for Android
run: flutter build apk
- name: Build for iOS
run: flutter build ios
env:
FLUTTER_TARGET: ios
通过以上步骤,你就可以在Ubuntu上搭建一个基本的Flutter CI/CD流程。根据具体需求,你可以进一步扩展和优化这个流程。