我正在为我的iOS应用程序设置CI,我正面临一些问题。
这是我在哪里找到有关触发器脚本的信息 https://help.apple.com/xcode/mac/1.0/#apdE6540C63-ADB5-4B07-89B7-6223EC40B59C
每个设置都会显示示例值。时间表:选择运行 手动,定期,新提交或触发脚本。
谢谢!
答案 0 :(得分:3)
Apple开发人员网站上提供了Continuous Integration Guide,其中提供了有关如何设置CI版本的详细说明。但是它缺少有关触发器脚本的详细信息。
为此,可以在OSX Server脚本本身中找到最佳文档。 Apple在此使用的术语“触发器脚本”指的是Git中的post-receive挂钩。可以将Git事件挂钩添加到任何Git存储库的.git / hooks子目录中,以执行操作以响应包含它们的Git存储库上的事件。
要查看专门“踢”Xcode服务以运行CI构建的示例post-receive hook,请在托管Xcode构建服务的服务器上创建托管Git存储库。默认情况下,添加到Xcode服务器的Git存储库将自动创建一个post-receive挂钩。在这种情况下,它是一个Ruby脚本POST
到http://localhost/xcs/kick-commit-bots
,repository
和branch
表单字段设置为存储库的URL(因为它在Xcode中配置)服务)和分支拉。
因此,按照Xcode持续集成指南中列出的步骤创建托管存储库,然后在Xcode服务器上查看/Library/Server/Xcode/Repositories/git/<your project>.git/hooks/post-receive
的内容。如果您在其他地方托管您的Git项目(例如BitBucket,GitHub或本地网络上的Linux机箱),您可以使用此文件作为指导,以您选择的脚本语言创建自己的接收后挂钩。
对于那些无法在其构建服务器上创建托管仓库的用户的示例:
#!/usr/bin/env ruby
##
# Copyright (c) 2014 Apple Inc. All Rights Reserved.
#
# IMPORTANT NOTE: This file is licensed only for use on Apple-branded
# computers and is subject to the terms and conditions of the Apple Software
# License Agreement accompanying the package this file is a part of.
# You may not port this file to another platform without Apple's written consent.
#
# IMPORTANT NOTE: This file is licensed only for use with the Wiki Server feature
# of the Apple Software and is subject to the terms and conditions of the Apple
# Software License Agreement accompanying the package this file is part of.
##
# fill in the exact URL to your repository, as entered in your OS X Server configuration
$repository_url = "file:///git/python-lrparser.git"
$repository_mode = "git"
# fill in the hostname of your OS X Server machine; this must be accessible by the server
# on which your repository is hosted; you may use "localhost" for the local machine
#server_host = "server.example.com"
$server_host = "localhost"
##########################################
## DO NOT EDIT BELOW THIS LINE
##########################################
require 'net/http'
def kick(branch)
theURL = URI("http://#{$server_host}/xcs/kick-commit-bots")
if branch.nil?
Net::HTTP.post_form(theURL, 'repository' => $repository_url)
else
Net::HTTP.post_form(theURL, 'repository' => $repository_url, 'branch' => branch)
end
end
if __FILE__ == $0
# determine what branch this is a push to, if possible
branches = []
if $repository_mode == "git"
$stdin.each_line do |line|
oldrev, newrev, ref = line.strip.split
if ref =~ %r{^refs/heads/(.+)$}
branches.push($~[1])
end
end
elsif $repository_mode == "svn" and ARGV.length >= 2
repository = ARGV[0]
revision = ARGV[1]
modifiedDirs = `svnlook dirs-changed -r #{revision} #{repository}`.lines.map { |line| line.chomp }
modifiedDirs.each do |d|
if d =~ %r{branches/([^/]+)}
branches.push($~[1])
end
end
end
# if we have no branch information, just kick generically
puts "Notifying OS X Server..."
if branches.empty?
kick(nil)
else
# otherwise, do a targeted kick for each relevant branch
branches.each do |branch|
kick(branch)
end
end
end
答案 1 :(得分:0)
在bot的方案中,创建一个解析测试结果的后期构建脚本。
测试结果将位于此处:
/Library/Server/Xcode/Data/BotRuns/Latest/output/xcodebuild_result.bundle/Info.plist
验证测试通过该plist后,您可以合并为master。
然后创建一个机器人,只有当有人推动掌握时才会集成。我相信编辑机器人的时间表可以选择轮询回购更改。确保机器人是由当前在主服务器上的Xcode项目创建的。
当Xcode位于您要创建的测试分支上时,需要创建第一个bot。