Variáveis de ambiente
Usando variáveis de ambiente, você pode sobrescrever qualquer opção de configuração disponível.
Você pode usar o gerador interativo de variáveis de ambiente (para Docker):
Ambiente de aplicação para apps (Ansible, Terraform etc.)
O Semaphore pode passar variáveis de ambiente para os processos das aplicações (Ansible, Terraform/OpenTofu, Python, PowerShell etc.). Existem duas opções relacionadas:
env_vars/SEMAPHORE_ENV_VARS: pares chave-valor estáticos que serão definidos para os processos dos apps.forwarded_env_vars/SEMAPHORE_FORWARDED_ENV_VARS: uma lista de nomes de variáveis que o servidor encaminhará a partir do ambiente do seu próprio processo.
Exemplo de arquivo de configuração:
{
"env_vars": {
"HTTP_PROXY": "http://proxy.internal:3128",
"ANSIBLE_STDOUT_CALLBACK": "yaml"
},
"forwarded_env_vars": [
"AWS_ACCESS_KEY_ID",
"AWS_SECRET_ACCESS_KEY",
"GOOGLE_APPLICATION_CREDENTIALS"
]
}
Equivalente com variáveis de ambiente:
export SEMAPHORE_ENV_VARS='{"HTTP_PROXY":"http://proxy.internal:3128","ANSIBLE_STDOUT_CALLBACK":"yaml"}'
export SEMAPHORE_FORWARDED_ENV_VARS='["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","GOOGLE_APPLICATION_CREDENTIALS"]'
Observações:
- O encaminhamento é explícito: somente as variáveis listadas em
forwarded_env_varssão herdadas pelos processos dos apps. - Os segredos devem ser fornecidos de forma segura (por exemplo, via secrets do Docker/Kubernetes) e depois encaminhados usando
forwarded_env_vars. - A mesma lista é usada pelos processos
gitque clonam e atualizam repositórios, portanto tudo o que ogitprecisa do ambiente do host também precisa ser encaminhado.
Executando atrás de um proxy corporativo
O Semaphore não repassa todo o seu ambiente aos processos que inicia. Em particular, as variáveis de proxy só chegam a uma tarefa ou a um clone do git se estiverem listadas em forwarded_env_vars ou definidas em env_vars.
Isso importa principalmente em uma instalação por pacote (systemd). As variáveis de proxy definidas no arquivo de unidade valem para o próprio servidor Semaphore, mas não para o git:
[Service]
Environment="HTTPS_PROXY=http://proxy.internal:3128"
Environment="HTTP_PROXY=http://proxy.internal:3128"
Environment="NO_PROXY=.corp.example.com"
Com a configuração acima e mais nada, clonar um repositório falha com:
fatal: Authentication failed for 'https://git.corp.example.com/team/_git/infra'
O git nunca viu NO_PROXY, então enviou a requisição do host interno pelo proxy externo, que a rejeitou. Encaminhe as três variáveis explicitamente para resolver:
{
"forwarded_env_vars": ["HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY"]
}
Ou, como variável de ambiente:
export SEMAPHORE_FORWARDED_ENV_VARS='["HTTP_PROXY","HTTPS_PROXY","NO_PROXY"]'
Observações:
- Encaminhe
NO_PROXYjunto com as variáveis de proxy. Sem ela, o tráfego para servidores Git internos também é roteado pelo proxy. - Muitas ferramentas leem as grafias em minúsculas (
http_proxy,https_proxy,no_proxy). No Linux e no macOS os nomes de variáveis diferenciam maiúsculas de minúsculas, então liste as duas grafias se o seu ambiente as define em minúsculas. - Pacotes de CA personalizados funcionam do mesmo jeito. Se o seu proxy termina o TLS, encaminhe
GIT_SSL_CAINFO,SSL_CERT_FILEouREQUESTS_CA_BUNDLEconforme necessário, em vez de desativar a verificação de certificados. - Instalações com Docker costumam parecer funcionar sem ajustes, porque as variáveis de proxy são definidas para o contêiner inteiro. Ainda assim, vale encaminhá-las explicitamente, para que a mesma configuração se comporte de forma idêntica nos dois casos.
Configuração do executor do runner
Para implantações de runner, todo o bloco do executor pode ser definido como uma única variável de ambiente JSON, em vez de chaves individuais:
export SEMAPHORE_RUNNER_EXECUTOR='{"type":"docker","docker":{"image":"semaphoreui/job:latest"}}'
Isso é equivalente a definir runner.executor.type e os campos aninhados runner.executor.docker.* no arquivo de configuração. Consulte Opções de configuração para ver todas as configurações do executor do runner.
Variáveis de ambiente secretas em Grupos de Variáveis
Além das variáveis de ambiente globais, você pode definir segredos por projeto em Grupos de Variáveis. As chaves secretas são mascaradas na interface e nos logs. Consulte User Guide → Variable Groups para saber como usar e sobre a integração com o Terraform por meio das variáveis TF_VAR_*.