Tag: Docker

Xcode Bots:为Linux构建命令行应用程序

苹果通过Xcode 9引入了XCS Bots,它使iOS开发人员能够以最小的努力在内置CI系统中维护其构建。 目前,XCS仅在Mac系统上运行,这意味着-应用只能针对Apple生态系统iOS,macOS,watchOS和tvOS的平台进行编译。 但是由于Swift是开源的,并且可以在Ubuntu等Linux发行版上运行,因此XCS缺乏为此类平台编译库和命令行应用程序的可能性。 Docker进行了救援。 Docker提供了强大的界面,可根据您的特定需求虚拟化您的构建基础架构。 Docker有点像虚拟机,但是它没有创建整个虚拟机,而是使用主机操作系统的内核,从而显着提高了性能并减小了映像的大小。 为了使用Xcode Bots构建应用程序,要在Linux发行版上运行,您首先必须创建一个具有Swift Toolchain功能的Linux映像。 如果您的目标系统上没有安装docker(= XCS的运行位置),请下载并安装Docker Desktop App。 下载适用于macOS的Docker Docker使用Dockerfile构建具有所有必需依赖项的映像。 幸运的是,Docker Hub已经提供了一个。 前往Docker Hub获取官方的Swift Dockerfile。 确保选择使用最低必需Swift版本的Dockerfile。 将其保存到您的SPM项目目录。 假设您已经配置了用于构建项目的Bot,请使用以下代码行添加一个新的post脚本。 如果您未创建一个,则可以按照本教程进行操作。 / usr / local / bin / docker build \ –no-cache \ -t swift:ubuntu \ -f路径/到/ Dockerfile“ $ {XCS_SOURCE_DIR} / your-git-folder-name” 生成映像后,现在就可以运行它,并提供您在上一个命令中创建的标签。 此外,在虚拟Docker容器中挂载主机系统的两个目录。 一个目录包含您的SPM项目,另一个目录包含您的项目的linux编译版本。 (注意:您必须使用绝对路径来挂载目录)。 将以下代码添加到Bot的发布脚本中。 / usr / […]

Raspberry Pi时间流逝,带有Swift,Vapor,Docker和Nginx的Ubuntu 16.04服务器

为了使这个基本任务复杂化并学到一些有趣的东西,可以使用Docker并在容器中运行我们的服务器。 有很多关于Docker的教程(我建议您查阅https://www.digitalocean.com教程),因此我将只关注与我的项目相关的部分。 我遵循了本教程:https://bygri.github.io/2018/05/14/developing-deploying-vapor-docker.html 因为服务器代码非常简单,所以我没有使用单独的开发/生产设置和docker-compose。 要启动蒸气项目: 蒸发新的上传图像 我从模板中剥离了所有不必要的代码(删除了数据库依赖项),并将route.swift减少为: 进口蒸气 结构图片:内容{ var image:文件 } 公共 功能路由( _路由器:路由器) 抛出 { router.post(“ image”){ req-> Future 在 返回 尝试 req.content.decode(Image.self).map(to:HTTPStatus.self){fileImage in 让 imageFolder =“ / app / Public” 让 fileName = fileImage.image.filename 让 url = URL(fileURLWithPath:imageFolder).appendingPathComponent(fileName) 做 { 尝试 fileImage.image.data.write(to:url) } { 返回 .badRequest } 返回 .ok } } } […]

为OpenWhisk创建Swift二进制文件

在上一篇博客文章中,我们解释了如何使用OpenWhisk操作编写无服务器Swift函数。 Swift源文件在处理请求之前由平台编译。 此编译过程会增加“冷”运行时的调用时间延迟。 如果一段时间未调用该操作,系统负担沉重或并行接收多个调用,则需要初始化新的运行时。 可以部署预编译的二进制文件以消除此延迟。 必须为正确的平台体系结构编译二进制文件,并支持通过OpenWhisk运行时执行。 现在有了一个 Swift软件包, 可以使构建预编译二进制文件的过程变得更加容易。 让我们看看它是如何工作的…… Swift在Swift 3.0中引入了一个包管理器。 程序包管理器与构建系统集成在一起,以“自动执行依赖项的下载,编译和链接过程”。 Swift使用清单文件( Packages.swift )定义包属性,包括依赖项。 这是来自外部依赖的示例包中的示例清单文件。 导入PackageDescription让package = Package( 名称:“ DeckOfPlayingCards”, 目标:[], 依赖项:[ .Package(URL:“ https://github.com/apple/example-package-fisheryates.git”, majorVersion:1), .Package(URL:“ https://github.com/apple/example-package-playingcard.git”, majorVersion:1), ] ) 包通过解析为Git存储库的URL引用。 语义版本约定用于控制安装的软件包版本。 在构建过程中,将外部软件包下载,编译并链接到项目中。 $ swift build Fetching https://github.com/apple/example-package-deckofplayingcards.git Fetching https://github.com/apple/example-package-fisheryates.git Fetching https://github.com/apple/example-package-playingcard.git Cloning https://github.com/apple/example-package-fisheryates.git Resolving https://github.com/apple/example-package-fisheryates.git at 2.0.3 Cloning https://github.com/apple/example-package-playingcard.git Resolving https://github.com/apple/example-package-playingcard.git at […]

Swift + Docker + Kubernetes =来自macOS的出色部署

原始链接:阅读原始链接以获得更好的代码语法和格式! Swift + Docker + Kubernetes =来自macOS的出色部署 目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展部署…… shashikantjagtap.net Swift + Docker + Kubernetes =来自macOS的出色部署– XCTEQ 目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展部署…… www.xcteq.co.uk 目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展Web应用程序的部署。 但是,Kubernetes很少能够进入Swift和Apple的世界。 有服务器端Swift框架,例如Vapor,Kitura,Perfect等,它们正在做很棒的工作来在服务器上获得Swift。 为了使成熟的DevOps工具(如Docker或Terraform)能够提供部署,还正在进行着努力,以便公司可以在任何云平台上部署应用程序。 流行的云平台是AWS,Google Cloud,Azure,Heroku等。 在本文中,我们将看到在macOS上的本地Kubernetes集群上创建和部署Swift Web应用程序有多么容易。 要求 安装了Docker桌面应用程序(Edge版本)的macOS Mojave 带有docker-compose.yml的Dockerized服务器端Swift应用 Docker和Kubernetes部署的基础知识 在macOS上获取Docker + Kubernetes 随着Docker-Desktop的发布,在macOS上获取Docker和Kubernetes的过程变得如此轻松。 您只需要获取Docker-Desktop应用并在其上启用Kubernetes。 而已! 如果您熟悉命令行,但是还有其他解决方案可以在macOS(如Minikube)上本地部署Kubernetes,但是Docker-Desktop可以很好地工作并且可以通过UI轻松配置。 您需要获取嵌入了Kubernetes的最新Docker-Desktop应用程序。 此刻,我获得了包含所有服务的此版本 从Docker-Desktop启用Kubernetes服务非常容易。 只需转到首选项->选择Kubernetes选项卡,然后为本地部署启用以下功能。 几分钟后,您将看到Docker和Kubernetes服务正在运行。 在后台,Docker-Desktop已安装了Kubernetes的所有组件和CLI工具(如kubectl等)。 我们可以通过运行以下命令来检查Kubernetes集群信息,节点和上下文 $ kubectl版本 $ kubectl cluster-info $ kubectl获取节点 $ kubectl config当前上下文 […]

蒸气3系列III-测试

在上一篇文章中,我们实现了两种验证用户身份的方法:HTTP基本身份验证和承载令牌授权。 因此,我们的应用程序仅接受来自经过身份验证的用户的请求。 但是,即使我们的应用程序很简单,我们也应该为端点编写一些单元测试。 测试是软件开发的重要组成部分,编写单元测试使我们能够快速开发和发展应用程序。 为了快速开发新功能,我们希望确保现有功能不会中断,并且拥有完善的测试套件可让我们验证更改代码库时一切仍然正常。 在本文中,我将演示如何为CRUD端点编写单元测试,以及如何在具有Docker的Linux机器上运行测试。 请注意,本文将基于先前的实现。 在Swift中编写应用程序的好处之一是,我们能够使用可爱的Xcode运行测试。 但是,为了使用Xcode运行测试,我们必须事先生成测试目标。 请打开Package.swift并将以下行替换为.target(name: “Run”, dependencies: [“App”]) 。 让我们开始编写Application的辅助方法。 请打开Application+Testable.swift并添加以下代码。 现在,我们可以运行测试用例了,它应该通过了! 然后,我们可以为用于检索User模型的端点编写测试用例。 在UserTests.swift内部,将以下函数追加到testUserCanBeSaved函数下方。 这是整个项目。 让我们回顾一下这个测试过程。 首先,我们生成新的测试目标和相应的文件。 此外,我们编写了Application和User模型的辅助方法,以使我们的测试用例简明易懂。 其次,我们使用辅助方法编写每个端点的测试用例,并使用Xcode运行测试。 最后,我们使用Docker在Linux环境上运行测试用例。 测试是软件开发的重要组成部分,并且编写单元测试并使其尽可能自动化是有益的。