Pular para o conteúdo

runnerhut

Respostas

Respostas diretas às perguntas que engenheiros fazem sobre CI.

Faturamento e custo21

Sou cobrado quando um trabalho do GitHub Actions falha?Sim. Você é cobrado pelos minutos consumidos até o ponto de falha, não por um resultado bem-sucedido.As GitHub Actions são gratuitas para código aberto?Sim, em executores padrão hospedados no GitHub para repositórios públicos, sem cobrança de minuto.As GitHub Actions são gratuitas para repositórios privados?Não. Os repositórios privados recebem um subsídio mensal de minutos incluídos por plano e depois cobram por minuto.Pago uma taxa de assento para corredores gerenciados?Em runnerhut, não. A cobrança é feita por minuto de computação, sem cobrança por desenvolvedor.Eu pago pelo tempo na fila?Não. O faturamento começa quando a primeira etapa é executada, e não quando o trabalho é colocado na fila.Devo pagar pelo executor e pelo construtor Docker remoto?Sim, mas o construtor é cobrado apenas pelos segundos em que está construindo ativamente.Como é cobrado um trabalho cancelado?Você paga pelos minutos decorridos antes do cancelamento, arredondados para o incremento de faturamento.Existe um incremento mínimo de faturamento?runnerhut faturas por segundo com um mínimo de um minuto por trabalho.Quanto custam os executores gerenciados de GitHub Actions?runnerhut Os executores Linux x64 custam a partir de US$ 0,004 por minuto, aproximadamente metade do preço de tabela do GitHub para o tamanho equivalente.Qual é o tamanho de corredor mais barato?O menor tamanho que mantém seu trabalho no caminho crítico — geralmente 2 ou 4 vCPU para testes de unidade e lint.Arm64 é mais barato que x64?Sim. Os corredores runnerhut arm64 custam cerca de 20% abaixo do tamanho x64 equivalente.É mais barato correr menos corredores maiores?Somente se sua carga de trabalho realmente for paralela. Caso contrário, você pagará mais por minuto por núcleos ociosos.Posso definir um limite de gastos?Sim. runnerhut suporta limites rígidos de orçamento por organização e por repositório.O que acontece quando os créditos gratuitos acabam?Os trabalhos deixam de ser agendados até você adicionar uma forma de pagamento ou aumentar o limite.Como faço para estimar minha conta do GitHub Actions?Multiplique os minutos mensais por sistema operacional pela taxa por minuto desse sistema operacional e, em seguida, adicione armazenamento para artefatos e cache.Como faço para prever os gastos dos corredores?Aproveite os últimos 90 dias por fluxo de trabalho, aplique o crescimento da taxa de mesclagem e adicione espaço para alterações de matriz.Por que minha conta do GitHub Actions é tão alta?Geralmente uma de quatro coisas: minutos do macOS, explosão de matriz, sem cancelamento de simultaneidade ou executores superdimensionados.Os repositórios públicos pagam pelos executores gerenciados?Em executores padrão hospedados no GitHub, não. Em provedores gerenciados, incluindo runnerhut, sim – mas programas de código aberto estão disponíveis.Quanto custa o armazenamento em cache do Actions?O GitHub inclui 10 GB por repositório gratuitamente e remove além disso. O cache do runnerhut é ilimitado e incluído.Como é cobrado o armazenamento de snapshots?Por gigabyte-mês para o instantâneo retido, separado dos minutos de computação.Posso executar mais trabalhos simultâneos do que meu plano GitHub permite?Sim. A simultaneidade do executor gerenciado é definida pelo seu provedor de executor, não pelos limites de executores hospedados do seu plano GitHub.

Desempenho10

Por que as GitHub Actions são lentas?Mais comumente: vCPU compartilhada, caches frios, disco conectado à rede e tempo de fila antes mesmo de o trabalho começar.Com que rapidez os executores iniciam depois que um trabalho é colocado na fila?Os corredores do runnerhut largam em cerca de três segundos em uma piscina quente.Preciso alterar meu fluxo de trabalho?Não. Mude o rótulo de execução e deixe todo o resto como está.Como escolho o tamanho do corredor?Comece um tamanho acima do seu executor atual, verifique a utilização da CPU e pare quando a curva se achatar.Por que meus trabalhos ficam atrás uns dos outros?Você atingiu um limite de simultaneidade – seja do seu plano, do seu grupo de executores ou de um grupo de simultaneidade no fluxo de trabalho.Por que meus testes Python são executados mais lentamente no CI do que localmente?pytest é serial por padrão e seu laptop tem desempenho de núcleo único mais rápido e um cache de sistema de arquivos quente.Por que a instalação do npm é lenta no CI?node_modules grava dezenas de milhares de arquivos pequenos, e o disco CI conectado à rede lida mal com isso.Por que o daemon Gradle inicia cada execução?Cada trabalho de CI é uma máquina nova, portanto não há daemon para reutilizar — e sem o cache de configuração o Gradle reavalia toda a compilação.Por que meu trabalho mostra uma espera alta de E/S?A carga de trabalho é vinculada ao disco – geralmente instalação de dependência, extração de camada de contêiner ou um banco de dados em um contêiner de serviço.Quantos jobs podem ser executados ao mesmo tempo?Depende do seu plano para executores hospedados no GitHub e da simultaneidade configurada para executores gerenciados.

Cache38

Por que a Cargo reconstrói tudo?Sua chave de cache muda a cada execução ou target/ não é armazenado em cache.Por que a restauração do cache é lenta?O GitHub limita a largura de banda do cache, portanto, um cache de vários gigabytes pode levar alguns minutos para ser restaurado.Como escrevo uma boa chave de cache?Faça hash exatamente dos arquivos que determinam o conteúdo em cache – geralmente o arquivo de bloqueio – e nada mais.O que são chaves de restauração?Os prefixos ordenados são tentados quando a chave de cache exata falha, portanto, uma correspondência parcial ainda pode ser restaurada.Por que meu cache perde todas as execuções?A chave inclui algo que muda a cada execução – geralmente github.sha ou um carimbo de data/hora.Quanto tempo duram os caches?O GitHub despeja caches não utilizados por 7 dias ou antes se o repositório exceder 10 GB.Como faço para limpar um cache?Exclua-o da página de cache de ações do repositório ou por meio da API REST ou gh CLI.Os caches são transportados pelas filiais?Uma ramificação pode ler caches de si mesma e de sua ramificação base, mas não de ramificações não relacionadas.Posso compartilhar um cache entre fluxos de trabalho?Em executores hospedados no GitHub, apenas dentro do mesmo repositório e escopo de ramificação. Os caches runnerhut são compartilhados entre fluxos de trabalho na organização.Qual é o limite de tamanho do cache GitHub Actions?10 GB por repositório, após o qual as entradas usadas menos recentemente serão removidas.Como faço para armazenar em cache node_modules?Armazene em cache ~/.npm digitado em package-lock.json ou restaure node_modules diretamente se sua instalação for determinística.Como faço para armazenar em cache as dependências do pip?Armazene em cache ~/.cache/pip digitado em require.txt ou armazene em cache todo o virtualenv para uma vitória maior.Como faço para armazenar módulos Go em cache?Cache ~/go/pkg/mod e ~/.cache/go-build digitados em go.sum.Como faço para armazenar em cache as dependências do Cargo?Cache ~/.cargo/registry, ~/.cargo/git e target/ digitados em Cargo.lock.Como faço para armazenar em cache as dependências do Maven?Cache ~/.m2/repository digitado em um hash de cada pom.xml.Como faço para armazenar em cache compilações do Gradle?Armazene em cache ~/.gradle/caches e ~/.gradle/wrapper e ative os caches de construção e configuração.Como faço para armazenar em cache as gemas do Bundler?Fornecedor/pacote de cache digitado em Gemfile.lock para que as extensões nativas sejam compiladas uma vez.Como faço para armazenar em cache as dependências do Composer?Cache ~/.composer/cache digitado em compositor.lock.Como faço para armazenar em cache CocoaPods?Cache Pods/ e ~/Library/Caches/CocoaPods digitados em Podfile.lock.Como faço para armazenar em cache as dependências do Swift Package Manager?Cache .build e ~/Library/Caches/org.swift.swiftpm digitados em Package.resolved.Como faço para armazenar Yarn Berry em cache?Cache .yarn/cache e .yarn/install-state.gz digitados em yarn.lock.Como faço para armazenar em cache ambientes UV ou Poesia?Cache ~/.cache/uv ou ~/.cache/pypoetry digitado no arquivo de bloqueio, além do diretório .venv.Como faço para armazenar em cache os navegadores Playwright?Cache ~/.cache/ms-playwright digitado na versão Playwright do seu arquivo de bloqueio.Como faço para armazenar em cache as camadas Docker?Use um construtor remoto que mantenha o cache localmente ou exporte para um registro com cache-to e cache-from.O cache funciona dentro de um trabalho de contêiner?Sim, mas os caminhos dentro do contêiner diferem dos caminhos no host, portanto, as chaves de cache devem fazer referência aos caminhos do contêiner.Os caches funcionam em várias arquiteturas?Não. Os artefatos compilados para x64 não são válidos no arm64, portanto a arquitetura deve fazer parte da chave.Os caches funcionam em executores do Windows?Sim, mas os separadores de caminho e a distinção entre maiúsculas e minúsculas são diferentes, portanto, chaves e caminhos precisam de tratamento específico do Windows.Como mantenho um cache da camada Docker entre solicitações pull?Use um construtor remoto persistente — seu cache não tem como escopo uma ramificação.Posso armazenar em cache uma imagem construída em vez de reconstruí-la?Sim – envie-o para um registro marcado por hash de conteúdo e extraia-o quando as entradas permanecerem inalteradas.Posso manter um banco de dados aquecido entre trabalhos?Não com containers de serviço, que são destruídos com o trabalho. Em vez disso, carregue um dump de esquema pré-migrado.Posso manter o Xcode DerivedData entre as execuções?Sim. Persistir ~/Library/Developer/Xcode/DerivedData — é a maior vitória individual para iOS CI.Os executores de snapshots substituem ações/cache?Eles podem. Um instantâneo restaura todo o estado da máquina, de modo que a etapa de instalação desaparece em vez de ficar mais rápida.O que é transferido em um instantâneo?Todo o sistema de arquivos no momento do snapshot — pacotes instalados, extensões construídas, diretórios de conjunto de ferramentas e cache de páginas quentes.Como invalido um instantâneo?Digite-o no hash do arquivo de bloqueio para que uma alteração de dependência acione automaticamente uma reconstrução.Quanto tempo duram os instantâneos?14 dias por padrão no runnerhut e reconstruído no próximo uso.Posso capturar instantâneos em uma ramificação de recursos?Sim, e os instantâneos de ramificação são isolados uns dos outros.O que são executores de snapshots?Corredores que inicializam a partir de uma imagem do sistema de arquivos capturada após a instalação de suas dependências, portanto, a instalação é totalmente ignorada.Os snapshots funcionam em executores macOS?Sim, e eles são especialmente valiosos porque CocoaPods e DerivedData são lentos para serem reconstruídos.

braço6412

As GitHub Actions podem executar o arm64?Sim. GitHub oferece corredores arm64 em planos pagos, e provedores gerenciados, incluindo runnerhut, oferecem-nos em todos os planos.Posso construir imagens arm64 em um executor x64?Sim, com QEMU – mas é 5–40× mais lento do que construir nativamente.O que muda ao passar de x64 para arm64?Módulos nativos, rodas Python e qualquer assembly x86 precisam de suporte aarch64. A maioria das dependências convencionais agora o possui.Posso executar trabalhos arm64 e x64 no mesmo fluxo de trabalho?Sim. Use uma matriz com um rótulo de corredor diferente por arquitetura.Os executores arm64 suportam buildx?Sim, e no hardware arm64 nativo, o buildx produz imagens arm64 sem emulação.Posso executar compilações ARM de 32 bits em executores arm64?Sim, por meio de compilação cruzada com um conjunto de ferramentas armhf ou com suporte multilib quando disponível.Como executo testes de integração arm64?Execute todo o trabalho em um executor arm64 nativo, incluindo quaisquer contêineres de serviço, que devem ter imagens arm64.Quais tamanhos de corredores arm64 estão disponíveis?runnerhut oferece 2 a 64 executores vCPU arm64 no Ubuntu 22.04 e 24.04.Os executores arm64 usam um diretório de trabalho diferente?Não. Os caminhos correspondem às imagens x64, portanto, os fluxos de trabalho são transferidos sem alterações.Como faço para construir um binário Rust para múltiplos alvos?Use uma matriz com um executor nativo por destino, em vez de compilar tudo em uma máquina.As GitHub Actions podem criar imagens multiarquiteturas?Sim — com QEMU em um executor ou nativamente em executores por arquitetura e mesclados em uma lista de manifestos.O QEMU ou o arm64 nativo são mais rápidos?Nativo, por um fator de 5 a 40 dependendo de quanto o build é compilado.

macOS e iOS15

Os executores GitHub Actions suportam macOS?Sim, os provedores hospedados e gerenciados pelo GitHub oferecem executores macOS em silício da Apple.Posso criar aplicativos iOS sem um executor Mac?O Xcode só funciona no macOS, portanto, uma versão do iOS requer um executor do macOS.O Xcode está pré-instalado em executores macOS?Sim. As imagens runnerhut enviam várias versões do Xcode com ferramentas de linha de comando correspondentes.Como seleciono uma versão do Xcode?Execute sudo xcode-select -s /Applications/Xcode_16.4.app antes das etapas de construção.Quais versões do Xcode estão disponíveis?As imagens do runnerhut macOS 15 carregam o Xcode 16.0, 16.2 e 16.4; As imagens do macOS 14 carregam 15.2 e 15.4.Quais versões do macOS são suportadas?runnerhut oferece imagens macOS 14 e macOS 15 em silício Apple.GitHub Actions oferece suporte ao silício da Apple?Sim. Os executores macOS hospedados e gerenciados pelo GitHub agora são executados em silício da Apple.Quanto disco os executores do macOS possuem?Os executores macOS runnerhut fornecem de 250 GB a 1 TB de NVMe, dependendo do tamanho.Quais tempos de execução do simulador são fornecidos em executores macOS?iOS 17.5 a 18.4, além de tempos de execução watchOS, tvOS e visionOS.Posso usar Docker em executores macOS?Somente através de uma VM Linux, que é lenta. Em vez disso, execute cargas de trabalho Docker em executores Linux.Posso executar executores macOS na UE?Sim. runnerhut opera capacidade macOS em regiões da UE para requisitos de residência de dados.Posso executar compilações Android e iOS em um fluxo de trabalho?Sim – use uma matriz com um executor macOS para iOS e um executor Linux para Android.Como posso acelerar compilações repetidas do Xcode?Persista DerivedData entre execuções e fixe a versão do Xcode.Como executo testes do iOS em paralelo?Fragmente por alvo de teste ou classe de teste em vários simuladores em um grande executor macOS.Como faço para autenticar um aplicativo macOS no CI?Use notarytool com uma chave de API do App Store Connect armazenada como segredo.

Docker17

Como posso reduzir o tempo de extração da imagem?Use um cache pull-through do registro na mesma rede que o executor.Como faço para redefinir o cache do construtor Docker?Execute docker buildx prune no construtor ou recrie a instância do construtor.Os construtores remotos suportam compilações multiplataforma?Sim. runnerhut executa construtores amd64 e arm64 separados e mescla os resultados.Como faço para enviar uma lista de manifestos?Construa cada arquitetura por resumo e combine-as com docker buildx imagetools create.Por que a construção do meu Docker é lenta?Cache de camada fria, cache transferido pela rede ou arm64 construído sob emulação.Por que a compilação Docker fica sem disco?Os executores hospedados no GitHub têm cerca de 14 GB livres, que imagens grandes e seu cache de camada se esgotam rapidamente.Por que uma atualização de imagem base invalida tudo?Cada camada após FROM depende do resumo da imagem base, portanto, uma nova base invalida todas elas.Qual é a diferença entre cache de e cache para?cache-from importa um cache de camada existente; cache-to exporta o cache produzido por esta compilação.Eu preciso do buildx?Para compilações multiplataforma, montagens de cache ou construtores remotos, sim. Para uma construção simples de arco único, não.O que é um construtor Docker remoto?Uma instância persistente do BuildKit à qual seu trabalho está anexado, que mantém o cache da camada em seu próprio disco.Como é cobrado um construtor remoto?Por segundo de tempo de construção ativo, separadamente dos minutos do executor.Dois empregos podem compartilhar um construtor?Sim. Pernas de matriz e fluxos de trabalho separados podem ser anexados ao mesmo construtor e compartilhar seu cache.Como faço para construir e enviar em uma única etapa?Use docker/build-push-action com push: true.Como uso o Docker Bake?Defina destinos em docker-bake.hcl e execute docker buildx bake em uma etapa.Como faço para autenticar em um registro privado?Use docker/login-action com um token ou OIDC para registros em nuvem.Posso executar o Docker Compose?Sim. O Compose v2 está pré-instalado; use docker compose up -d --wait para que as etapas não acelerem a inicialização.Posso usar o Podman em vez do Docker?Sim. Podman está disponível e é amplamente compatível com CLI com Docker.

Segurança19

Os executores de snapshots são seguros para repositórios públicos?Somente se os snapshots forem obtidos de ramificações confiáveis e nunca de solicitações pull de fork.Como faço para gerar um SBOM?Habilite a saída sbom: true do buildx ou execute syft na imagem construída.Como faço para anexar a procedência da construção?Use ações/attest-build-provinance ou proveniência do buildx: atestado verdadeiro.Como passo segredos para uma compilação Docker?Use segredos de construção do BuildKit com --secret, nunca ARG ou ENV.Os executores do GitHub Actions são seguros?Os executores gerenciados e hospedados no GitHub são VMs efêmeras de uso único, que é o modelo de isolamento correto.Os executores armazenam meu código-fonte?Somente durante a duração do trabalho. runnerhut destrói a VM e limpa seu disco quando o trabalho termina.A plataforma do corredor pode ver meus segredos?Os segredos são descriptografados na memória do executor para serem usados, portanto, qualquer plataforma de executor poderia tecnicamente.Como defino as permissões GITHUB_TOKEN?Adicione um bloco de permissões no fluxo de trabalho ou no nível do trabalho e conceda apenas os escopos necessários.Como faço para autenticar na AWS com OIDC?Configure o GitHub como um provedor OIDC no IAM e use aws-actions/configure-aws-credentials com uma função.Os executores gerenciados alteram minhas permissões do GitHub?Não. Os jobs são executados com o mesmo GITHUB_TOKEN e as mesmas permissões dos executores hospedados no GitHub.Posso restringir quais repositórios usam meus executores?Sim, com grupos de executores com escopo para organizações ou repositórios específicos.O runnerhut SOC 2 é compatível?runnerhut mantém SOC 2 Tipo 2, com o relatório disponível sob NDA.Onde meus dados de construção são armazenados?Na região que você selecionar. Computação, cache, logs e métricas são todos fixados na mesma região.Posso manter as construções apenas na UE?Sim. As implantações somente na UE fixam computação, cache, logs e métricas nas regiões da UE.Posso restringir o tráfego de saída?Sim. As políticas de saída negam por padrão e permitem apenas os destinos listados.Como faço para auditar alterações na configuração do executor?O log de auditoria registra ator, carimbo de data/hora, IP de origem e valores antes/depois para cada alteração de configuração.Onde os corredores gerenciados correm fisicamente?Nos data centers do provedor ou em sua própria conta na nuvem em BYOC.O que acontece com os discos executores após um trabalho?No runnerhut eles são apagados criptograficamente e a VM destruída.Os corredores mantêm o estado entre os trabalhos?Corredores efêmeros não. Executores auto-hospedados persistentes sim, o que é um risco de segurança em repositórios públicos.

Traga sua própria nuvem18

Os corredores podem acessar minha rede privada?Sim, por meio de executores BYOC em sua VPC ou de uma rede mesh como Tailscale.Os corredores podem correr na minha própria conta na nuvem?Sim. O BYOC implanta executores em sua conta AWS, GCP ou Azure enquanto o plano de controle permanece gerenciado.O que o runnerhut cria na minha conta na nuvem?Um grupo de escalonamento automático, um bucket de cache, um cache pull-through de registro, uma função IAM com escopo definido e um endpoint VPC.De quais permissões da AWS o BYOC precisa?Permissões para gerenciar seu próprio grupo de escalonamento automático, seu bucket de cache e sua função de instância — nada mais amplo.Posso usar minha própria VPC?Sim. Você fornece a VPC e os IDs de sub-rede e os executores são colocados lá.Os executores BYOC podem alcançar serviços internos?Sim – esse é o principal motivo para usar BYOC. Eles ficam dentro da sua rede com roteamento normal.Os executores BYOC precisam de um gateway NAT?Eles precisam de Internet de saída para extração de imagens e pacotes, o que geralmente significa um gateway NAT.Os executores BYOC podem ser executados em uma sub-rede privada?Sim, e deveriam. O acesso de saída passa por endpoints NAT ou VPC.Posso anexar uma função IAM a um executor BYOC?Sim, por meio de um perfil de instância — para que os trabalhos obtenham credenciais sem nenhum segredo armazenado.O BYOC funciona com IMDSv2?Sim, e o IMDSv2 é aplicado por padrão.Posso executar BYOC em várias regiões?Sim. Implante o módulo por região e rotule os executores por região.O BYOC oferece suporte a imagens personalizadas?Sim. Forneça sua própria AMI ou imagem de máquina com suas ferramentas integradas.O BYOC é compatível com Windows?Sim na AWS e no Azure. O suporte do GCP para Windows é mais limitado.O BYOC oferece suporte a SSD local do GCP?Sim, em famílias de máquinas que o oferecem.Como funciona a cobrança BYOC?Você paga ao seu provedor de nuvem pela computação e rede, e ao runnerhut uma taxa reduzida de plano de controle.Como faço para marcar recursos BYOC?Definir tags de alocação de custos no módulo Terraform; eles se propagam para todos os recursos criados.Como excluo uma pilha BYOC?Drene os corredores e, em seguida, terraforme e destrua o módulo.Posso controlar a saída em executores BYOC?Sim, com grupos de segurança, NACLs e política de saída runnerhut juntos.

Fluxos de trabalho30

Para quantos empregos uma matriz pode se distribuir?O GitHub limita uma única matriz a 256 trabalhos por execução de fluxo de trabalho.Como reproduzo uma falha de CI localmente?Combine a imagem do executor e, em seguida, faça SSH em um executor ativo se a falha aparecer apenas no CI.Posso usar SSH em um corredor?Sim. runnerhut oferece suporte à abertura de uma sessão de depuração em um trabalho em execução com uma chave SSH autorizada.Posso combinar executores hospedados e gerenciados pelo GitHub?Sim. as execuções são por trabalho, portanto, trabalhos diferentes em um fluxo de trabalho podem usar provedores diferentes.Como faço para mudar o corredor?Edite o valor de execução da tarefa. Nada mais precisa mudar.Como executo um trabalho somente quando os arquivos são alterados?Use paths ou paths-ignore no gatilho ou uma ação de detecção de alterações para um controle mais preciso.Como executo um fluxo de trabalho manualmente?Adicione um gatilho workflow_dispatch, opcionalmente com entradas digitadas.Como executo jobs de acordo com uma programação?Use o gatilho de agendamento com sintaxe cron, em UTC.Como cancelo execuções substituídas?Defina um grupo de simultaneidade digitado na referência com cancel-in-progress: true.Como posso limitar um fluxo de trabalho a uma execução de cada vez?Use um nome de grupo de simultaneidade fixo com cancelamento em andamento: falso.O que acontece quando dois fluxos de trabalho compartilham um grupo simultâneo?Eles serializam - o segundo espera ou cancela o primeiro dependendo do cancelamento em andamento.Como defino um tempo limite de trabalho?Adicione minutos de tempo limite ao trabalho. O padrão é seis horas.Como faço para tentar novamente uma etapa com falha?Use uma ação de nova tentativa ou envolva o comando em um loop de nova tentativa do shell.Como posso reutilizar um fluxo de trabalho entre repositórios?Publique um fluxo de trabalho reutilizável e chame-o com workflow_call.Como escrevo uma ação composta?Crie action.yml com runs.using: composto e uma lista de etapas.Como faço para incluir e excluir matrizes?incluir combinações de acréscimos ou extensões; exclude os remove do produto gerado.Como faço para ignorar o CI em um commit?Adicione [skip ci] à mensagem de commit.Como escrevo um resumo do trabalho?Anexe Markdown a $GITHUB_STEP_SUMMARY.Como executo um banco de dados em CI?Declare-o como um contêiner de serviço com verificação de integridade.Como faço para publicar um pacote?Use a publicação confiável do OIDC onde o registro a suportar; caso contrário, um token com escopo definido em um segredo do ambiente.Como compartilho dados entre trabalhos?Faça upload de um artefato em uma tarefa e faça download dele na próxima ou use saídas de tarefa para valores pequenos.Como interrompo implantações lentas de bloqueio de fluxo de trabalho?Divida as verificações necessárias das de consultoria e marque apenas os trabalhos rápidos e confiáveis conforme necessário.Como executo testes de navegador sem cabeça?Use o sinalizador headless para seu runner ou xvfb-run para ferramentas que requerem exibição.Como executo testes de detector de corrida Go?Execute o teste -race. Espere uma execução cerca de 2 a 10 vezes mais lenta e maior uso de memória.Qual é a diferença entre um trabalho e uma etapa?Um trabalho é executado em um executor e contém etapas; as etapas são executadas sequencialmente no mesmo espaço de trabalho.Qual é a diferença entre executores hospedados no GitHub e auto-hospedados?Hospedados no GitHub são gerenciados, efêmeros e cobrados por minuto. Auto-hospedados são seus para operar em seu hardware.Quais sistemas operacionais podem ser executados GitHub Actions?Linux, Windows e macOS, em x64 e arm64 dependendo do provedor.Por quanto tempo os artefatos são mantidos?90 dias por padrão, configuráveis por repositório ou por upload até um dia.Como faço para depurar um trabalho com falha?Habilite o log de depuração de etapas, adicione um resumo do trabalho ou abra uma sessão SSH no executor.Como executo um trabalho apenas em solicitações pull?Use o gatilho pull_request e uma condição if para um controle mais preciso, como pular rascunhos.

Observabilidade19

Como posso ver o custo por fluxo de trabalho?O painel do runnerhut divide os gastos por fluxo de trabalho, trabalho, rótulo e repositório.Como posso ver o rótulo de custo por corredor?Filtre o painel de uso por rótulo para ver minutos e gastos por tipo de corredor.Como faço para detectar um corredor subdimensionado?CPU sustentada perto de 100%, pressão de memória ou atividade de troca durante o trabalho.Como encontro a etapa mais lenta em um fluxo de trabalho?Classifique as etapas por duração na visualização de execução ou use a linha do tempo do runnerhut, que mostra a fila, a configuração e o tempo da etapa separadamente.Como descubro qual fluxo de trabalho ficou mais lento?Compare a duração do p95 por fluxo de trabalho mês após mês no painel de análise.Como posso medir a taxa de acertos do cache?O painel do runnerhut informa a taxa de acertos, o tempo de restauração e o tamanho por chave de cache.Como posso exportar dados do trabalho?Use a API runnerhut ou a API REST GitHub Actions e grave os resultados em CSV.Um agente de IA pode consultar minhas métricas de CI?Sim, através do servidor MCP runnerhut, que expõe builds, durações, falhas e custos como ferramentas.Os agentes de IA podem acionar trabalhos de CI?Sim, através da API ou empurrando ramificações, como qualquer outro ator.Quais métricas a API expõe?Tempo de fila, percentis de duração, taxa de acertos de cache, utilização de CPU e memória e custo por trabalho, rótulo e fluxo de trabalho.Como posso ver o uso de CPU e memória para um trabalho?runnerhut registra a utilização por trabalho automaticamente e mostra-a na página de execução.Posso alertar sobre trabalhos sem memória?Sim. Alerta sobre eliminações de OOM ou sobre utilização de memória ultrapassando um limite.Como faço para produzir um relatório semanal de saúde do IC?Agende um fluxo de trabalho que consulte a API de métricas e publique a duração do p95, a taxa de acertos do cache, a taxa de flake e os gastos.Por que meu trabalho foi encerrado com o código de saída 137?Isso é uma eliminação do OOM – o processo excedeu a memória disponível.Por que meu trabalho ficou sem disco?Os executores hospedados no GitHub têm cerca de 14 GB livres; As camadas Docker e node_modules se esgotam rapidamente.Os corredores têm discos grandes?Os executores hospedados no GitHub têm cerca de 14 GB livres. Os executores runnerhut fornecem de 150 GB a 2 TB de NVMe local.Os grupos de executores limitam a simultaneidade?Eles podem. Um grupo pode ter seu próprio limite de simultaneidade, independentemente do limite da sua conta.Quais limites de taxa da API do GitHub afetam o CI?GITHUB_TOKEN é limitado por repositório por hora; fluxos de trabalho que fazem muitas chamadas de API podem esgotá-lo.Por que meus trabalhos atingem o tempo limite da rede?Geralmente limitação de taxa de registro, gargalo de gateway NAT ou política de saída que elimina silenciosamente o tráfego.