app自动化编译及持续集成(一)

什么是持续集成?

持续集成指的是,频繁地(一天多次)将代码集成到主干,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

为什么要做持续集成?

  • 每天都有很多重复性的工作,比如打包,由人工来完成占用开发时间且单调无聊。交给机器来做,把人释放出来,去做更有意义的工作。
  • 开发中的代码需要尽早的测试,以发现问题,特别是主流程上的问题。
  • 已经发布的版本需要实时监控,发现问题及时通知。

    主要工具

  • Jenkins
    • Jenkins是Java 写的一个持续集成工具,可以持续监控代码变化,并调用外部组件实现相关功能。
    • Gitlab插件,为了从gitlab仓库拉取代码,我们使用了Gitlab插件,该插件需要在系统设置中配置好host地址和ssh鉴权用的密钥、帐号等,然后在各个任务中再进行相应配置。
    • multipleSCMs插件,适用于多仓库构建。
  • Xcodebuild
    • Xcodebuild是iOS平台上的构建工具,有单独命令行和Xcode插件两种形式,需要依赖Xcode。类似工具还有xcrun,xctools。
  • Gradle
    • Gradle是基于JVM的构建工具,可以打包Android的apk,本身不依赖于Android SDK,但我们的gradle脚本中需要用到Android SDK。
  • Xcode7/Xcode8
    • Xcode7用于UI自动化测试,Xcode8用于自动化编译ipa
  • Android Studio
    • 对应SDK版本为21(Android5.0)

注意!

  • 系统权限
    • 由于Jenkins与管理员不在同一个帐号组内,为了避免因权限问题无法操作对应文件,将源代码、测试脚本、打包工具和对应的配置文件都设为了全部用户可读写。

Jenkins仓库配置

  • ios仓库配置
    • iOS juanpi的代码只有一个工程,只需要配置一个仓库,即xxx.git,分支选择develop(提测时为对应版本的release分支)
  • Android仓库配置
    • 假如Android 的代码有多个工程,需要配置多个仓库,其中xxxx.git为主工程,依赖于其他几个仓库, 为了保持代码的一致性,我们用了jenkins的multipleSCMs这个插件,注意要设置代码checkout到子目录,否则不同仓库的代码会相互覆盖,比如Local subdirectory for repo : test,则代码会checkout到test这个子目录下。

构建触发器

通过Poll SCM对话框里设置构建触发的定时器,比如”H/30 “,表示每半小时检查一次代码。

Jenkins系统配置参考

Environment variables

  • ANDROID_HOME
    • /Users/Shared/Jenkins/Library/android-sdk
  • CLASSPATH
    • .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • JAVA_HOME
    • /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
  • NODE_BINARY
    • /usr/local/bin/node
  • PATH
    • $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Xcode Builder

  • xcodebuild executable path
    • /usr/bin/xcodebuild
  • agvtool executable path
    • /usr/bin/agvtool
  • xcrun executable path
    • /usr/bin/xcrun

Extended E-mail Notification

  • Default Subject
    • $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
  • Default Content

    • $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:

      Check console output at $BUILD_URL to view the results.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那我来给你介绍一下如何使用 Django 和 vbenadmin 来搭建一个自动化平台。 1. 安装 Django 和 vbenadmin 首先需要安装 Django 和 vbenadmin,可以使用 pip 进行安装: ```bash pip install Django pip install django-vben-admin ``` 2. 创建 Django 项目 使用 Django 的命令行工具创建一个新的项目: ```bash django-admin startproject myproject ``` 其中 myproject 是你的项目名称,可以根据实际情况进行修改。 3. 创建 Django 应用 在项目目录下创建一个新的应用: ```bash cd myproject python manage.py startapp myapp ``` 其中 myapp 是你的应用名称,可以根据实际情况进行修改。 4. 配置数据库 在 myproject/settings.py 文件中配置数据库信息,例如使用 SQLite: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } ``` 5. 配置 vbenadmin 在 myproject/settings.py 文件中添加 vbenadmin 的配置: ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'vben_admin', 'myapp', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] STATIC_URL = '/static/' LOGIN_URL = '/admin/login/' VUE_ADMIN_CONFIG = { 'site_title': 'My Site', 'site_logo': '/static/logo.png', 'menu': [ { 'text': 'Dashboard', 'icon': 'el-icon-s-home', 'link': '/admin/dashboard/', }, ], } ``` 其中 VUE_ADMIN_CONFIG 是 vbenadmin 的配置,包括站点标题、站点 Logo、菜单等。 6. 创建数据库表 使用 Django 的命令行工具创建数据库表: ```bash python manage.py migrate ``` 7. 创建超级用户 使用 Django 的命令行工具创建超级用户: ```bash python manage.py createsuperuser ``` 根据提示输入用户名、邮箱和密码即可。 8. 创建模型 在 myapp/models.py 文件中定义数据模型,例如: ```python from django.db import models class Server(models.Model): name = models.CharField(max_length=50) ip = models.CharField(max_length=15) username = models.CharField(max_length=50) password = models.CharField(max_length=50) description = models.TextField(blank=True) def __str__(self): return self.name ``` 9. 注册模型 在 myapp/admin.py 文件中注册数据模型: ```python from django.contrib import admin from .models import Server admin.site.register(Server) ``` 10. 运行服务器 使用 Django 的命令行工具运行服务器: ```bash python manage.py runserver ``` 现在可以通过浏览器访问 http://127.0.0.1:8000/admin/ 进入后台管理界面,使用刚才创建的超级用户登录。 11. 创建前端页面 可以使用 vbenadmin 的组件来创建前端页面,例如创建一个服务器列表页面: ```vue <template> <v-card> <v-table :data="servers" :columns="columns" /> </v-card> </template> <script> export default { data() { return { servers: [], columns: [ { title: '名称', key: 'name' }, { title: 'IP地址', key: 'ip' }, { title: '用户名', key: 'username' }, { title: '描述', key: 'description' }, ], }; }, created() { this.getServers(); }, methods: { getServers() { this.$axios.get('/api/servers/').then((response) => { this.servers = response.data; }); }, }, }; </script> ``` 其中 v-table 是 vbenadmin 的表格组件,$axios 是 vbenadmin 封装的请求库,/api/servers/ 是后台接口地址。 12. 创建后台接口 在 myapp/views.py 文件中定义后台接口,例如: ```python from rest_framework import viewsets from .models import Server from .serializers import ServerSerializer class ServerViewSet(viewsets.ModelViewSet): queryset = Server.objects.all() serializer_class = ServerSerializer ``` 其中 ServerViewSet 继承自 rest_framework 的 viewsets.ModelViewSet,queryset 指定了数据源,serializer_class 指定了数据序列化器。 在 myapp/urls.py 文件中定义后台接口路由,例如: ```python from django.urls import path, include from rest_framework import routers from .views import ServerViewSet router = routers.DefaultRouter() router.register(r'servers', ServerViewSet) urlpatterns = [ path('api/', include(router.urls)), ] ``` 其中 routers.DefaultRouter 自动生成了 CRUD 操作的路由。 现在可以通过浏览器访问 http://127.0.0.1:8000/api/servers/ 获取服务器数据。 13. 集成前后端 在 myproject/settings.py 文件中配置静态文件目录: ```python STATICFILES_DIRS = [ BASE_DIR / 'static', ] ``` 在 static 目录下创建 index.html 文件,引入前面创建的前端页面: ```html <!DOCTYPE html> <html> <head> <title>My Site</title> <link rel="stylesheet" href="/static/css/app.css"> <script src="/static/js/app.js"></script> </head> <body> <div id="app"> <server-list /> </div> </body> </html> ``` 其中 /static/css/app.css 和 /static/js/app.js 是 vbenadmin 编译后的静态文件,<server-list /> 是前面创建的前端页面组件。 在 myproject/urls.py 文件中配置路由: ```python from django.urls import path, include from django.views.generic import TemplateView urlpatterns = [ path('admin/', include('vben_admin.urls')), path('', TemplateView.as_view(template_name='index.html')), ] ``` 其中 /admin/ 是 vbenadmin 的路由,'' 是首页路由,使用 TemplateView.as_view(template_name='index.html') 渲染 index.html 文件。 现在可以通过浏览器访问 http://127.0.0.1:8000/ 查看自动化平台了。 以上是使用 Django 和 vbenadmin 搭建自动化平台的基本步骤,根据实际需求可以进行进一步的开发和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值