Tag: 蒸气

使用Google Cloud Build的Vapor 3的简单CD流水线— git push→Docker容器→GKE中可用的服务

我有一个用Swift 4.1编写的Vapor 3项目,我想创建一个简单的CD管道,以便在每次git push送到分支时(或当有新标签时),都将在Google Kubernetes Engine中构建并部署一个容器,其API可从http://[INGRESS_IP]/projectname/获得,GKE中已配置了一个群集,该群集已配置Istio 1.0作为服务网格和定义的路由。 Vapor 3 Web框架 您可以在https://vapor.codes/上查看有关Vapor 3的更多信息,以及在https://docs.vapor.codes/3.0/上提供的文档。 这里特别令人感兴趣的是Swift 4.1与高性能Apple NIO非阻塞框架的结合。 如果要利用并行计算,多核体系结构和事件驱动的设计模式,则可能希望为项目采用非阻塞体系结构。 Vapor 3还带有一个异步库。 您可以使用的越多,并行化就越多。 云构建 Google Cloud Build是启用CD管道的简单工具; 在触发器方面,它支持推送到git分支和标签(与Google自己的代码仓库,GitHub和Bitbucket的Cloud Source Repository集成)。 已经有很多可用的云构建器可以作为单个步骤添加到管道中( 例如 ,docker,mvn,go,kubectl等)。 创建Dockerfile 配置Kubernetes部署和服务 配置Istio网关和虚拟服务 在cloudbuild.yaml配置管道 在Google Cloud Build中定义构建触发器( 例如,推送,标记) 1.创建Dockerfile 我使用了两个阶段的多阶段Dockerfile: 在Swift 4.1容器映像上构建Vapor 3服务 编译后的文件将复制到干净的生产映像中,从而生成一个小容器。 此示例使用ubuntu:16.04但有些人也使用alpine,显然有一些好处。 我没有尝试过alpine版本,如果它对您有用,请分享您的配置文件和/或评论 #Builder图像-构建代码 #================================================== ============== 来自swift:4.1作为构建者 运行apt-get -qq更新&& rm -r / var […]

在iOS和SQLite上使用Fluent

大家好,今天,我将尽我最大的努力,向您介绍安装和使用SQLite在iOS上使Fluent正常工作的经验。 Fluent是完全基于Swift 3.0编写的基于口才的ORM,由团队在Steam上创建。 它易于使用和设置,并且与Vapor进行了深度集成,Vapor是利用Swift 3.0的最新和有前途的Web框架之一。 我建议您看一下它们的主要仓库,在其中可以找到很多有希望的服务器端swift库:蒸气 本演练基本上适用于任何依赖基础C库的Swift框架。 在我的小冒险中,我严重依赖这些资源和教程: https://medium.com/swift-and-ios-writing/using-ac-library-inside-a-swift-framework-d041d7b701d9#.jsp34w5km http://stackoverflow.com/a/31757698/1233655 为什么呢 对于Vapor用户和服务器端敏捷开发人员而言,Fluent是使您的应用程序与后端之间的模型保持一致的好方法。 另外,Node使在您的应用程序和服务器之间传输JSON变得非常容易,Fluent很大程度上依赖于它以及Vapor。 现在开始吧! 创建一个iOS Xcode项目 这里没有技巧,这将是您的iOS应用程序项目。 您当然可以使用现有项目,它将与任何类型的iOS项目一起使用。 将Fluent集成到工作区中 此步骤旨在创建一个工作区,包括您的应用程序项目和FluentSQLite.xcodeproj, 为了在单个git clone获取所有框架,我们只需要获取将使我们能够将Fluent与SQLite一起使用的驱动程序,而swift软件包管理器将获取所需的所有依赖项。 git clone https://github.com/vapor/sqlite-driver.git 让我们生成Xcode项目,该项目将获取所有依赖项。 cd sqlite-driver / 迅捷包generate-xcodeproj 现在我们有一个适合Fluent的xcodeproject,让我们创建一个包含两个项目的工作区。 Fluent及其依赖项配置为仅在macOS上构建。 要更改此设置,我们需要转到FluentSQLite设置>构建设置,并将每个框架支持的平台从macOS更改为iOS。 (用箭头显示的列表) 更改支持的平台后,选择适当的iOS设备以在其上构建FluentSQLite。 导入CSQLiteMac 到目前为止,由于尚未导入CSQliteMac模块,因此无法编译。 您将需要从github获取它(我建议将其克隆到您项目的根目录) git clone https://github.com/vapor/csqlite 现在在项目的构建设置中,转到Swift搜索路径->导入路径,如果在项目的根目录中克隆了${SRCROOT}/csqlite则只需添加${SRCROOT}/csqlite ,否则添加路径。 就是这样! iOS默认情况下安装了sqlite,因此无需将其嵌入到项目中。 让我为您提供一个用于创建数据库的简单代码段,它是我添加到AppDelegate.swift中的一个简单函数:https://gist.github.com/adriencanterot/fc5fb983e55cab115440406e33c3e88f 欢迎在vapor.team上提问,并在vapor / fluent-example上查看Fluent-example! 社区反应异常活跃,如果有的话,我很乐意提供帮助!

Cloud Foundry上的蒸气3

您对如何编写服务器端swift代码感兴趣,并且在第一个hello世界之后,您在脑海中听到了声音,例如“在哪里可以运行此代码”? 因此,一种解决方案是在swift运行时内的Cloud Foundry上运行它。 我知道服务器端快速是当前鲜为要求的话题,但是当我开始使用Vapor 3时,我意识到花了一些时间和一些研究才能在Cloud Foundry上运行它。 我的希望是,如果有人在那里尝试相同的内容,将会找到此博客文章,并且有助于使这些内容正常运行。 现在,让我们开始吧,让我解释一下如何将Vapor 3应用程序带到Cloud Foundry。 首先,您需要访问应在其上运行应用程序的Cloud Foundry环境。 接下来,您需要一个快速的应用程序,就我而言,它是一个简单的CRUD服务,可以处理待办事项。 作为标题 假设,此应用使用了蒸气3 Web框架。 我选择此Web框架,因为我将使用最新的Swift网络堆栈,更好地称为Swift NIO(2018年3月发布)。 Cloud Foundry(CF)的概念之一是对“ 12要素应用程序”模式的大力支持。 CF希望您遵循此模式,并按照“ 12因子应用”网页上主题3所述从环境变量读取所有配置。 在我的情况下,我必须提供一个数据库配置(PostgreSQL),并且对于cf运行时,我必须读取套接字配置,这两者都将通过环境变量提供。 服务器套接字的环境变量名称基于cf运行时。 为此,运行时使用标准变量VCAP_APP_HOST和PORT提供套接字配置。 为了简化本地开发设置,我采用了相同的方法并重用了它。 对于数据库,我使用自己的一组环境变量,并在所有变量前面都加上了PSQL *。 对于我的本地开发,我将所有内容都配置为本地资源,将套接字配置为127.0.0.1:8080,并将数据库配置为本地PostgreSQL数据库。 在CF运行时中,总是为我提供套接字配置,但是数据库变量必须由我自己提供,因此我必须将带有cf set-env的PostgreSQL变量添加到我的CF应用运行时中。 这样,我可以从cf环境中读取托管云PostgreSQL数据库实例的配置,就像在本地计算机上一样。 bash $ cf set-env snatch-todos PSQLHOSTNAME psql.clouddb.hostname.com bash $ cf set-env snatch-todos PSQLPORT 5432 bash $ cf set-env snatch-todos PSQLUSERNAME“ xxxxx” bash […]

服务器端Swift:Vapor 3-Bölüm2:APIOluşturma第2/2部分

Merhaba👋🏻, 第1部分:API API应用程序API。 亲子ilişkilerineve流利的query’lerinegeçmedenönceuygulamaya 用户 ve 风格 ekleyelim。 用户ve类别控制器的用户类别控制器的声音。 蒸气xcode -y 用户sınıfını实现edelim。 Fluent’in用户手册。 Bu id’yi Song eklerken creatorID参数设置。 creatorID’miz ile Song’u ekledik。 响应身体içerisindeayrıntılıolarakgörüyoruz。 Bir Song daha ekleyelim。 即时用户(Sim’User’ıneklediğitümSong’ları)正在获取其他信息。 Buradakullanacağımızurlyapısı; http:// localhost:8080 / api / users / CREATOR_ID /歌曲 Son olarak Song’u ekleyen用户’ıgetiren fonksiyonumuzu测试edelim。 Kullanacağımız路线yapısı; http:// localhost:8080 / api / songs / 1 / creator 亲子ilişkilerindebahsetmem […]

Vapor APT 2.0 —拥抱开源

我们很早就决定建立一个APT存储库,以使人们可以轻松地在Linux上安装Swift和我们的Vapor Toolbox。 长期以来,它很快就被构建起来,但是它的确意味着很难维护。 展望未来,我们最近发布了APT 2.0版。 它是完全开源的,能够使我们的社区更紧密地融入流程。 我们是一家非常注重开源的公司,主要是因为我们的公司基于开源。 这也确实意味着我们拥有社区构建工具,这些工具可以从我们在APT上的工作中受益,并将工具放置在同一位置。 为了简化此过程,所有软件包现在都位于GitHub上,并且一旦批准,我们将使用CI系统在APT上构建新版本。 这个过程很简单。 用户在新的PullRequest中将基于某些模板的包推送到GitHub。 为了确保我们保持安全性,管理员需要进入并查看PR。 如果获得批准,则管理员只需向PR回复/approved ,之后,我们将运行一个Jenkins实例,它将获取更改,并启动一个Vapor CLI应用程序,该应用程序负责构建APT。 完成后,Jenkins将通过我们的vapor-ci-robot用户进行报告,并提供状态和日志链接 我们当然要添加很多东西,其中一项是我们现在正在构建的,并且令人兴奋的是,该工具可以自动测试新PR的建立和设置是否正确,这意味着我们将在沙盒环境中进行构建和设置。 完成所有工作后,管理员便可以批准该应用程序,知道是否一切正常。 我们还计划能够构建到目标操作系统。 这将为自动构建系统增加更多的灵活性。 只需访问http://github.com/vapor/apt,这里还有有关如何通过Linux上的APT安装Swift和Vapor的文档。 APT只能用于安装Swift,因此它不仅意味着可以与Vapor一起使用,而且还可以与其他服务器端Swift框架一起使用。

如何在Vapor项目中集成PostgreSQL提供程序

表中的内容: 在项目中包括提供商 创建PostgreSQL配置文件 将PostgreSQL提供程序导入项目 将提供者添加到Droplet并查询数据库 在项目中包括提供商 在https://github.com/vapor上搜索提供程序存储库。 在文件Package.swift中包含该URL vapor / postgresql提供者 postgresql-provider-Vapor Web框架的PostgreSQL提供程序。 github.com 创建PostgreSQL配置文件 创建新的机密文件夹。 创建新的postgresql.json文件并介绍配置数据。 { “主机”:“ 127.0.0.1”, “用户”:“ manuelbordallo”, “密码”:“”, “数据库”:“ manuelbordallo”, “端口”:5432 } 将PostgreSQL提供程序导入项目 将库导入main.swift文件 导入VaporPostgreSQL 将提供者添加到Droplet并查询数据库 使用PostgreSQL提供程序更新Droplet初始化。 获取PostgreSQL驱动程序实例。 查询数据库。 让drop = Droplet( 提供者:[VaporPostgreSQL.Provider.self] ) drop.get(“ version”){在 如果让db = drop.database?.driver as? PostgreSQLDriver { let version =试试db.raw(“ SELECT version()”) 返回尝试JSON(节点:版本) }其他{ 返回“无数据库连接” […]

使用蒸气的基本Swift Server设置

自从苹果宣布并发布了Linux兼容的Swift源代码以来,服务器端Swift一直是最活跃的开发追求之一。 已经出现了许多框架,包括Perfect,Vapor和Kitura(由IBM提供)。 在此博客文章中,我们将讨论使用Vapor进行基本设置有多么容易。 Vapor是Qutheory的合作者为Swift开发的Web框架。 它以其简单性,类型安全性和速度而自豪。 该框架会经常更新以使用最新的Swift 3快照。 当前,正在OSX和Ubuntu(14.04和15.10)上进行开发测试。 我们将设置一个服务器,该服务器将在撰写本文时使用最新的Vapor版本在本地运行。 安装Swift 3 为了简化安装,我们将使用swiftenv,它是一个类似于pyenv和rbenv的Swift版本管理器。 访问他们的github页面以获取更多详细的安装和使用说明。 目前,我们正在终端中执行以下操作,以安装最新的Vapor快照支持。 swiftenv安装DEVELOPMENT-SNAPSHOT-2016-05-03-a 此命令下载并安装2016年5月3日的Swift 3快照。 安装Vapor CLI 在处理Vapor项目时,Vapor的命令行工具提供了很多便利。 wget cli.qutheory.io -O蒸气 chmod + x蒸气 须藤MV蒸气/ usr / local / bin 更新CLI的过程非常简单 蒸气自我更新 创建服务器 使用CLI,我们将能够使用简单的命令来创建基本服务器。 vapor new test-server //创建一个名为“ test-server”的项目 cd测试服务器 蒸气生成 蒸气运行 运行给定命令将设置并运行基本服务器模板。 如果您在浏览器上访问http:// localhost:8080,将会看到类似的内容。 这是一个简单的项目示例,您可以对其进行修改以适合您的服务器需求。 蒸气甚至通过单击登录页面上的链接来提供示例。 自定义路线 检查项目目录,我们可以看到创建了许多文件和子目录,包括VaporApp.xcodeproj 。 双击以Xcode打开它。 确保您使用的是正确的Xcode开发快照工具链。 该项目应具有以下文件结构。 […]

流利的蒸气关系-服务器端Swift

了解如何在模型,父母,孩子和兄弟姐妹之间建立关系。 我们将创建一个小型Web应用程序,了解如何实现Model作为Parent , Children和Siblings之间的关系 。 本文假定您已经对 Vapor 有所了解, 并希望 使用 Fluent 在您的模型之间 建立一些 关系 。 否则,您可以参考 Vapor的Documentation 来设置您的第一个项目 。 列出主人约翰的所有宠物 在第一个教程中,我们将构建一个简单的Web API,以在线添加宠物及其主人信息。 让我们将数据保存到数据库中 ,该数据库可通过路线访问。 我们将通过JSON将数据提供给客户端。 建立关系 关系允许数据库实体之间基于外键的连接。 我们要做的是创建Pet并将其设置为“ Children”作为所有者 。 这样,我们将能够从一个所有者那里获取所有Pet 。 外键 为使魔术发生,我们需要在Pet上添加一个外键 ,该键将是一个Node类型,该类型将存储Parent的ID,即Node。 var owner_id: Node? 并在数据库中建立关系,请将以下行添加到prepare方法中: pets.parent(Owner.self, optional: false) 如果您想迁移数据库,请单击“如何使用Vapor的Fluent迁移数据库”的链接。 最后,您的Pet.swift文件应如下所示: 此外,要建立关系,您需要将所有者的ID设置为宠物的owner_id 。 注意:请记住,实体 所有者 将获得一个 id 在 save() 。 我们知道我们其中一位主人的id为1 ,我们可以设置一条路线来放置Pet […]

蒸气2入门-Restful API Swift Server

正如之前在这里宣布的那样,Vapor框架刚刚推出了其2.0版本。 在Monk Software,我们一直在寻找新技术,我们为Vapor提供了机会! 什么是蒸气? Vapor是服务器端Swift Web框架。 无论您需要什么,Restful API Server,显示html页面,发送电子邮件或推送通知,Vapor几乎可以满足所有需求。 我们将在这篇博客文章中介绍什么? 今天,我想向您展示从Vapor API模板开始,添加一些端点然后将服务器部署到Heroku多么容易。 让我们开始吧 我假设您使用的是装有Swift和Xcode的Mac,如果没有,请安装Xcode(Swift捆绑在其中),如果您使用的是Ubuntu,请按照此指南进行操作。 1)安装蒸气工具箱 要充分利用Vapor,我们还需要它的工具箱,您可以通过在终端中输入以下内容进行安装: 冲泡安装蒸气 或者,如果您在Ubuntu上,请执行以下操作: sudo apt-get更新 sudo apt-get安装蒸气 2)创建一个新的应用程序 创建一个超级简单的应用程序,只需在终端中输入: 蒸气新的IncredibleVaporApp –template = api(或您想要的任何名称) 在少数情况下,Vapor应该下载所有依赖项,并使用给定的应用程序名称创建一个文件夹。 3)可选:生成Xcode项目文件 如果您想利用Xcode自动补全功能,可以在vapor app文件夹内的终端中键入以下内容: 蒸气Xcode 这将生成.xcodeproj,键入“ y”以在Xcode中打开。 4)运行服务器 好的,我们已经准备好运行我们的服务器,如果您使用Xcode,请选择方案App并按play,如果您在Ubuntu中,请输入终端: 蒸气生成和&蒸气运行 build将提取要部署的构建,然后运行将启动服务器。 默认情况下,Vapor将在以下地址启动服务器: 0.0.0.0:8080进行测试,请访问http://0.0.0.0:8080/hello, 您将看到此类型的json: {“你好,世界”} 一切都按预期进行! 5)添加自定义端点 现在是时候添加我们的自定义终结点了,假设我们要通过传入一个人的名字来问候他。 首先,在我们的项目中打开Routes.swift文件,然后在方法中 func build(_ builder:RouteBuilder)抛出 我们可以添加新的API: builder.get(“ greet”){要求 let name […]

使用蒸气的服务器端Swift

作为iOS开发人员,我一直着迷于编写甚至自己的应用程序的后端,以完全控制它。 我在工作时选择的语言是Swift,这让我惊讶不已。 它提供了真正的多功能用途。 除了对移动和桌面应用程序进行编程之外,它还被证明非常适合脚本编写,并且也越来越多地用于后端编程。 对于后端,显而易见的选择是Node.js。 服务器上的Javascript非常强大,而且由于其用途广泛,因此也易于访问。 围绕Node.js形成了一个大型社区,该社区现在生成了大量的各种库。 那为什么还要尝试新的东西呢? Javascript的主要优势在于它的传播; 但是,它往往会承担并非总是最好的体系结构决策的负担。 由于Javascript是松散类型的,因此基于Javascript构建的程序容易出现各种错误。 另一方面,从第一天开始,Swift一直是一种强类型语言。 但是,它仍然带有精心设计的类型推断系统,在该系统中,编译器可以从上下文派生类型。 Swift消除了我们从其他语言中知道的一些传统语法项,例如分号和多余的括号,从而产生了简洁,易读和有效的代码段。 Swift最初是一种仅限Apple平台的语言。 但是,它已经在版本2中向世界开放。新的开源方法使开发人员可以在主要的Unix平台上使用Swift,因此没有任何办法可以利用它进行后端编程。 旨在将Swift部署到服务器上的项目之一就是Vapor。 它不仅在其上构建的项目数量上非常出色,而且在它使用Swift的泛型和协议扩展等高级功能方面也非常出色。 让我们看一个例子。 以下代码显示了用于简单CD目录的REST API的一部分。 import Vapor import HTTP final class ArtistController { // Routes registration func addRoutes(drop: Droplet) { let group = drop.grouped(“artists”) group.get(handler: index) group.get(Artist.self, “albums”, handler: albumsIndex) let searchGroup = group.grouped(“search”) searchGroup.get(handler: search) } // GET […]