J'utilise le merveilleux Vol d'essai pour distribuer construit. Une chose que le vol d'essai est un peu pointilleux sur les numéros de build est. Lorsque vous téléchargez une construction, il utilise le numéro de build pour voir si vous téléchargez un remplacement ou une nouvelle construction. Il vous permettra de créer une nouvelle construction, même si vous ne vous souvenez d'incrémenter le numéro de build, mais c'est une étape manuelle supplémentaire, puis vous vous retrouvez avec deux constructions avec le même numéro de build.
Parce que je suis distrait, je voulais automatisé ce processus. Fondamentalement, je voulais incrémenter la version courte chaîne tout moment nous faisons un Archive et incrémenter le bundle construire ID tout moment nous ne une configuration Release construire, mais laisser les numéros de version seul sur les versions Debug.
Malheureusement, plusieurs de nos projets sont celles que nous avons hérité ou repris, donc pas tous les projets utilise la même version système de numérotation. Comment nous 1.0b5 incrément est différent de la façon dont nous incrémenter 1.0.12, ou un simple numéro de build comme le 1058.
La façon dont je m'occupe avec ceci est un script exécuté Phase de construction dans la cible de mon application exécutable qui exécute le script suivant rubis (assurez-vous que vous définissez la "coquille" sur le terrain au /usr/bin/ruby, Et s'assurer que le script est la dernière phase de la construction de l'application). N'hésitez pas à utiliser ce script si vous le souhaitez et de le modifier pour répondre à vos besoins. Si vous l'améliorer, je serais heureux d'intégrer des améliorations de nouveau en lui. Un élément à noter: la façon dont je crée la différence entre archives et d'autres configuration Release construit pourrait être un peu fragile depuis que je suis en s'appuyant sur un schéma de nommage sans-papiers dans une variable d'environnement.
Parce que je suis distrait, je voulais automatisé ce processus. Fondamentalement, je voulais incrémenter la version courte chaîne tout moment nous faisons un Archive et incrémenter le bundle construire ID tout moment nous ne une configuration Release construire, mais laisser les numéros de version seul sur les versions Debug.
Malheureusement, plusieurs de nos projets sont celles que nous avons hérité ou repris, donc pas tous les projets utilise la même version système de numérotation. Comment nous 1.0b5 incrément est différent de la façon dont nous incrémenter 1.0.12, ou un simple numéro de build comme le 1058.
La façon dont je m'occupe avec ceci est un script exécuté Phase de construction dans la cible de mon application exécutable qui exécute le script suivant rubis (assurez-vous que vous définissez la "coquille" sur le terrain au /usr/bin/ruby, Et s'assurer que le script est la dernière phase de la construction de l'application). N'hésitez pas à utiliser ce script si vous le souhaitez et de le modifier pour répondre à vos besoins. Si vous l'améliorer, je serais heureux d'intégrer des améliorations de nouveau en lui. Un élément à noter: la façon dont je crée la différence entre archives et d'autres configuration Release construit pourrait être un peu fragile depuis que je suis en s'appuyant sur un schéma de nommage sans-papiers dans une variable d'environnement.
Note: Je suis conscient de agvtool. Je l'ai évité pour deux raisons. Tout d'abord, je voulais plus de contrôle sur les régimes de numérotation, et la deuxième, j'ai essayé d'utiliser agvtool dans un script de compilation de quelques années en arrière, mais à cette époque, il y avait des problèmes lorsque vous heurté les numéros de version d'un projet qui est actuellement ouverte. Ces questions peuvent avoir été résolu, mais je ne veux pas me battre à nouveau cette bataille.
def get_file_as_string(filename) data = '' f = File.open(filename, "r") f.each_line do |line| data += line end return data end def handle_alpha_beta(old_value, letter, infoplist, start_of_value, end_of_value) parts = old_value.split(letter) version_num = parts[0] alpha_num = parts[1].to_i alpha_num = alpha_num + 1 new_version = version_num.to_s + letter + alpha_num.to_s print "Assigning new version: " + new_version + "\n" new_key = "#{new_version} " part_1 = infoplist[0, start_of_value - '' .length]; part_2 = new_key part_3 = infoplist[end_of_value + "".length, infoplist.length - (end_of_value - start_of_value + (new_key.length - 1))] new_info_plist = part_1 + part_2 + part_3 new_info_plist end def find_and_increment_version_number_with_key(key, infoplist) start_of_key = infoplist.index(key) start_of_value = infoplist.index("" , start_of_key) + "" .length end_of_value = infoplist.index("", start_of_value) old_value = infoplist[start_of_value, end_of_value - start_of_value] print "Old version for " + key + ": " + old_value + "\n" print old_value.class.to_s + "\n" old_value_int = old_value.to_i print old_value_int.class.to_s + "\n" if (old_value.index("a") != nil) # alpha infoplist = handle_alpha_beta(old_value, "a", infoplist, start_of_value, end_of_value) elsif (old_value.index("b") != nil) # beta infoplist = handle_alpha_beta(old_value, "b", infoplist, start_of_value, end_of_value) elsif (old_value.index(".") != nil) # release dot version parts = old_value.split(".") last_part = parts.last.to_i last_part = last_part + 1 parts.delete(parts.last) new_version = "" first = true parts.each do |one_part| if (first) first = false else new_version = new_version + "." end new_version = new_version + one_part end new_version = new_version.to_s + "." + last_part.to_s print "New version: " + new_version.to_s + "\n" new_key = "#{new_version} " infoplist = "#{infoplist[0, start_of_value - '' .length]}#{new_key}#{infoplist[end_of_value + ''.length, infoplist.length - (end_of_value+1)]}" elsif (old_value.to_i != nil) # straight integer build number new_version = old_value.to_i + 1 print "New version: " + new_version.to_s + "\n" new_key = "#{new_version} " part_1 = infoplist[0, start_of_value - '' .length] part_2 = new_key part_3 = infoplist[end_of_value + "".length, infoplist.length - (end_of_value+1)] infoplist = part_1 + part_2 + part_3 end infoplist end config = ENV['CONFIGURATION'].upcase config_build_dir = ENV['CONFIGURATION_BUILD_DIR'] archive_action = false if (config_build_dir.include?("ArchiveIntermediates")) archive_action = true end print "Archive: " + archive_action.to_s + "\n" print config if (config == "RELEASE") print " incrementing build numbers\n" project_dir = ENV['PROJECT_DIR'] infoplist_file = ENV['INFOPLIST_FILE'] plist_filename = "#{project_dir}/#{infoplist_file}" infoplist = get_file_as_string(plist_filename) infoplist = find_and_increment_version_number_with_key("CFBundleVersion", infoplist) if (archive_action) infoplist = find_and_increment_version_number_with_key("CFBundleShortVersionString", infoplist) end File.open(plist_filename, 'w') {|f| f.write(infoplist) } else print " not incrementing build numbers" end
Aucun commentaire:
Enregistrer un commentaire