Ok, pesquisei tudo isso e não consigo encontrar uma resposta definitiva.
Eu quero saber como o executor do docker gitlab-runner define os volumes para a imagem. Eu vejo da segunda URL que postei você pode colocar o diretório no host a ser usado pela imagem, da mesma forma que você faria com a opção -v no docker run, no entanto, é um caminho absoluto que não pode funcionar se executando trabalhos paralelos, pois o diretório será alterado. No entanto, não consigo encontrar se posso usar $ PWD para o diretório de compilação ou se isso funcionará, pois o arquivo config.toml está em um local diferente. A documentação do que eu li não especifica como isso funcionaria, ou se poderia funcionar. Eu estou tentando achar algumas respostas antes de eu queimar horas durante o próximo sprint que tenta conseguir algo trabalhar que pode ou não trabalhar. Então, esperando por algum insight.
Então, minha pergunta é: alguém já se deparou com esse problema antes e, em caso afirmativo, como você o configurou para que o diretório de criação seja o diretório sendo passado para a imagem do docker? Da mesma forma que você faria se fosse executado o docker build com a opção '-v' ou o docker usando 'volume:'.
O motivo pelo qual eu quero executar as imagens dessa maneira e não o executor de shell, que é o que estou fazendo atualmente. É porque se você cancelar uma construção, você tem que entrar e manualmente matar as imagens no servidor do corredor. Como você pode imaginar, isso pode ser chato e demorado se houver várias compilações em andamento.
Eu também gostaria de evitar a criação de uma imagem de docker personalizada, porque eu não quero colocar o repositório git na imagem do docker. Eu só quero fazer imagens docker adicionais, que são reutilizáveis em repositórios de CI / CD, então não quero adicionar isso como um comando em um shell script que será copiado para a imagem e, portanto, tornar a imagem não reutilizável.
Se o acima não for possível, existe uma maneira de "exportar" o diretório como uma variável para a imagem do docker? Eu não acho que existe desde docker tem que passar o volume para a imagem na inicialização.
Eu também não quero ter que construir a imagem do docker toda vez que eu executar um teste no CI / CD, pois isso pode ser demorado e caro. Eu prefiro passar o volume e executar os comandos necessários para fazer o teste.
O comando se estiver executando no script de shell:
$ docker run -d -p 80:80 --name meu-apache-php-app -v "$ PWD": / var / www / html php: 7.0-apache
Espero que este seja o fórum certo para esta pergunta, não tenha certeza se isso se enquadra em stackoverflow ou serverfault.
Após uma pesquisa mais aprofundada, parece que o executor realmente executa os comandos git no contêiner docker listado como a imagem e vincula os serviços a ele. No entanto, super confuso porque eles realmente não soletram essa etapa, então eu ainda não sei se está executando os comandos git no diretório de compilação para o host ou o contêiner, se é o contêiner, então eu preciso atualizar o arquivo docker.
Referências
:
link
link