Pergunta

Estou tentando configurar um bot Xcode com servidor OSX.Depois de configurar o repositório git e criar um bot, executo a integração.Ele falha porque o repositório foi retirado apenas parcialmente.Mais precisamente:Dos 6 submódulos configurados, apenas 3 são inicializados e verificados.

didi@mac:/Library/Server/Xcode/Data/BotRuns/Cache/c5fda8f4-4d25-4d25-c18a-eb0b16a06692/source$ git submodule status
+c6e8420aec4147641fb1ca12d9f1d31bdd804e77 libs/asi-http-request (v1.7-320-gc6e8420)
-ae64a38766b42f236bb94f0e661cddb829f9ac43 libs/kraken
-7da02b323636bbaa0bbbf5b4eb229fcc07b1e14a libs/route-me
 152f9ee5576e710705a49032253d7d5af5366f9c libs/routing (152f9ee)
 347aaf74fe0c6388785095efdbf6397851514b7f libs/rtlabel (1.0-32-g347aaf7)
-562cf6b1c879f03546f5184e012cea15c4f159db libs/skmaps

(- significa não inicializado)

Olhando para o log do bot, parece simplesmente ignorar os submódulos ausentes na parte de inicialização do submódulo:

...
Checking connectivity... done
Submodule 'libs/asi-http-request' (https://github.com/BikeCityGuide/asi-http-request.git) registered for path 'libs/asi-http-request'
Submodule 'libs/routing' (ssh://mac_ci@rooty.bikecityguide.org/var/repos/librouting.git) registered for path 'libs/routing'
Submodule 'libs/rtlabel' (https://github.com/BikeCityGuide/RTLabel.git) registered for path 'libs/rtlabel'
Cloning into 'libs/asi-http-request'...
...

Nenhuma mensagem de erro aqui ou em qualquer outro lugar.Nenhuma menção de, por ex."kraken" (nome de um submódulo ausente) em qualquer lugar dos logs.

Ao fazer check-out manualmente (clone, inicialização do submódulo, atualização do submódulo), todos os submódulos são inicializados.

.gitmodules fica assim:

$ cat .gitmodules 
[submodule "libs/asi-http-request"]
    path = libs/asi-http-request
    url = https://github.com/BikeCityGuide/asi-http-request.git
[submodule "libs/rtlabel"]
    path = libs/rtlabel
    url = https://github.com/BikeCityGuide/RTLabel.git
[submodule "libs/routing"]
    path = libs/routing
    url = ../librouting.git
[submodule "libs/kraken"]
    path = libs/kraken
    url = ../kraken_ios.git
[submodule "libs/route-me"]
    path = libs/route-me
    url = ../route-me.git
[submodule "libs/skmaps"]
    path = libs/skmaps
    url = ../skmaps.git

O repositório base e os 4 repositórios de submódulos referenciados com URL relativa precisam de autenticação ssh.O usuário configurado no servidor OSX tem acesso a todos eles.O log do bot não contém nenhum vestígio de tentativa de extrair os submódulos ausentes.

Posso corrigir manualmente o repositório local, mas gostaria de não ter o mesmo problema novamente com novos projetos e novos submódulos adicionados.

versão git 1.8.4.2

Estou sem ideias.

Foi útil?

Solução

No Xcode 6.1.1 e OS X Server 4.0, parece que eles corrigiram os submódulos com problema de HEAD desanexado, mas ainda existem alguns bugs.Um dos meus projetos tem um de seus submódulos sendo completamente ignorado pelo Xcode Server, portanto o aplicativo falha na construção:

$ git submodule
 8a88bc41c9dc0f57c921d82bc4e7b93e1c4cbf7a InAppStore (heads/master)
 e4203f9f61d2546868c1274da5c7a0c56b87a737 Libraries (heads/master)  <--- IGNORED
 01902f255e6c3d90f0db41cb62dd2934098b98dd MixpanelTracker (heads/master)
 e2bee59accd817d50dff881a42c9e9afe307226f XLFacility (1.4.1-5-ge2bee59)

A solução para mim foi adicionar um gatilho de script de pré-integração como este:

cd "$XCS_SOURCE_DIR/{YOUR_APP_REPO_NAME_WITHOUT_DOT_GIT_SUFFIX}"
git submodule update --init --recursive

Nesse ponto, as coisas estavam crescendo, embora houvesse avisos não fatais sobre o caixa não estar limpo ou algo parecido.Eles desapareceram quando mudei a configuração do bot para definir "Limpeza" como "Sempre".

Outras dicas

No servidor Xcode 9, os submódulos não são inicializados se nenhum dos arquivos dos submódulos for referenciado por um dos projetos Xcode no espaço de trabalho.

Isso pode acontecer, por exemplo, quando você inclui um arquivo de cabeçalho de um submódulo que não faz parte do seu código e, portanto, você o adicionou aos "caminhos de pesquisa de cabeçalhos" (c/c++) em vez de adicioná-lo ao projeto.

Uma possível solução alternativa é adicionar pelo menos um arquivo do submódulo ao projeto Xcode.Pode até ser um Readme.md arquivo.Isso é mais fácil do que verificar submódulos usando um script personalizado porque depende do Xcode Server para armazenar suas credenciais GIT.

Eu entendo é um bug. Eu tive os mesmos problemas e descobri que há um problema com submodulas destacadas. Veja o próximo artigo que mostre como corrigir esse problema (não ajuda no repositório público) http://ikennd.ac/blog/2013/10 / Xcode-bots-Problemas comuns e soluções alternativas /

Espero que isso ajude você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top