Sobrecarregar sua experiência em ações do GitHub com tic

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


A “integração contínua” (CI) tornou-se um padrão para o desenvolvimento adequado de software.
É essencial verificar a integridade do software após as alterações, para garantir a funcionalidade adequada.
Além disso, o IC ajuda a detectar problemas introduzidos pelas dependências desde o início, quando executados regularmente (geralmente feitos por meio de execuções programadas de CRON).

Existem vários provedores profissionais (Travis CI, AppVeyor CI, Circle CI etc.) que oferecem serviços de IC ao público.
A maioria dos serviços oferece contingentes de compilação gratuita limitados para projetos de código aberto.
No entanto, não foi fácil para a comunidade R embarcar no trem imediatamente, pois a maioria dos provedores não suportava a língua R nativamente do seu lado.
Portanto, a comunidade R começou a criar suas próprias configurações para automatizar rapidamente a verificação de pacotes R no Travis CI.
De fato, o primeiro commit do funcionário r.rb O script de compilação foi criado em 1 de fevereiro de 2015 por Craig Citro.
Desde então, 21 colaboradores únicos mantiveram essa configuração sob a meta-liderança de Jim Hester e Jeroen Ooms, o que permitiu que milhares de mantenedores de pacotes R entrassem no trem.

No entanto, o Travis CI tem seus limites e, portanto, as pessoas começaram a experimentar outros fornecedores, como Appveyor CI ou Circle CI.
Além de ter que começar do zero, todos os provedores vêm com suas próprias chaves YAML e maneiras de configurar permissões de implantação.

Com o objetivo de simplificar esses processos para os usuários, o pacote tic foi criado.
Seu objetivo (entre outros objetivos) é fornecer uma maneira independente de IC de verificar os pacotes R.
Além dos pacotes, o tic também simplifica a criação de blogs, sites, repositórios de drat e outras coisas relacionadas às atividades de IC.
O tic geral fornece uma linguagem específica de domínio (DSL) para etapas / etapas do IC.

Fornecendo modelos de CI YAML que encaminham suas ações para um script R centralizado (tic.R), a mesma configuração acionará ações idênticas em diferentes sistemas de IC.
O usuário não precisa se preocupar em configurar o arquivo YAML para um provedor específico, mas apenas se familiarizar com a abordagem “macro” do tic.
macros importantes são sequências de etapas para ações populares frequentemente solicitadas por pessoas da comunidade R para projetos relacionados à R.

Além disso, o tic visa simplificar o tedioso processo de configuração de permissões de implantação para um repositório (“implantação” significa que uma execução de IC pode executar um git enviar para o repositório.)
Isso é alcançado por seus pacotes auxiliares, como circle, ghactions ou travis, que executam chamadas de API para os respectivos provedores de IC.

Ações do GitHub – o novo garoto do quarteirão

As ações do GitHub (beta) existem há cerca de um ano.
O lançamento oficial aconteceu em novembro de 2019.
O hype após o lançamento foi enorme: as pessoas esperam produtos adequadamente desenvolvidos do GitHub e ter uma solução de IC integrada sem a sobrecarga de se conectar a um fornecedor terceirizado parecia promissor.

De fato, as ações do GitHub cumpriram essa promessa. Agora é muito mais fácil começar a usar o CI:

  • Nenhuma conta extra precisa ser criada para um serviço de terceiros
  • Nenhuma restrição nas plataformas de construção disponíveis
  • Não há problemas relacionados aos webhooks de terceiros
  • Configurações de IC configuráveis ​​através das configurações do repositório

No entanto, R não estava novamente entre os idiomas com suporte / exemplos nativos; portanto, não foi fácil começar.
Após uma primeira tentativa de Max Held através do pacote ghactions, Jim Hester sentou-se novamente e criou a ação setup-r que instala o R em todas as plataformas disponíveis, com a opção de especificar versões R diferentes.

Embora a ação setup-r GitHub já seja utilizável, ela ainda está nos primeiros dias e amadurecerá com o tempo.
Em tic, usamos r-lib / setup-r como base combinada com r-lib / setup-pandoc e r-lib / setup-tinytex.
Aplicamos algumas alterações opinativas na parte superior, que acreditamos melhorar substancialmente a configuração do IC.
Nas seções a seguir, explicamos essas mudanças para serem o mais transparentes possível.

Armazenamento em cache

Ao testar um pacote, por padrão, r-lib / actions apenas armazena em cache dependências diretas e apenas em corrida bem sucedida.
Isso é feito por meio de ações de ação / cache misturando uma lista de todas as dependências do pacote:

- name: Query dependencies
  run: |
    install.packages('remotes')
    saveRDS(remotes::dev_package_deps(dependencies = TRUE), "depends.Rds", version = 2)
  shell: Rscript {0}

- name: Cache R packages
  if: runner.os != 'Windows'
  uses: actions/[email protected]
  with:
    path: ${{ env.R_LIBS_USER }}
    key: ${{ runner.os }}-r-${{ matrix.config.r }}-${{ hashFiles('depends.Rds') }}
    restore-keys: ${{ runner.os }}-r-${{ matrix.config.r }}-

tic em vez de caches a biblioteca R completa da corrida em cada corrida usando uma versão bifurcada de actions / cache: pat-s / always-upload-cache.

Essas diferenças têm a vantagem de que os pacotes necessários para efeitos colaterais (como criar um site pkgdown ou executar o codecov) também são armazenados em cache.
Como os caches são imutáveis, o tic (precisa) reconstrói o cache diariamente.
Se isso não acontecesse, todos os corredores sempre usariam o primeiro cache para sempre.
Quando os pacotes são atualizados no CRAN, o tic baixa primeiro o cache, mas depois os atualiza antes de prosseguir para o estágio “script”.
Depois de algum tempo, todos os pacotes do cache estavam desatualizados, tornando o cache inútil.
Portanto, o tic recria o cache diariamente.
Os usuários podem alterar essa frequência de tempo ao seu gosto, alterando o código bash usado para gerar os registros de data e hora (dentro do run linha do seguinte bloco de código):

Leia Também  Crie um gráfico de dispersão com ggplot
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
- name: "[Cache] Prepare daily timestamp for cache"
  if: runner.os != 'Windows'
  id: date
  run: echo "::set-output name=date::$(date '+%d-%m')"

- name: "[Cache] Prepare weekly timestamp for cache"
  if: runner.os != 'Windows'
  id: datew
  run: echo "::set-output name=datew::$(date '+%Y-%V')"

A reconstrução do cache ocorre em um CRON agendado, executado diariamente às 3h da manhã.
Como o tic sempre carrega o cache, mesmo que a compilação falhe (o r-lib / actions apenas carrega em uma compilação bem-sucedida), sempre haverá um cache disponível para compilações que começam durante o dia.
Portanto, mesmo que a compilação de um repositório demore alguns minutos para instalar todas as dependências, a primeira confirmação feita todos os dias sempre utilizará um cache existente.

Instalação de dependências

tic usos ccache no macOS e Linux para acelerar as instalações do pacote R.
Essa ferramenta ajuda a acelerar a instalação de pacotes compilados carregando as partes do código C do cache.
tic reconstrói o ccacheuma vez por semana possibilitando que o CRON construa pela manhã possa fazer uso do ccache cria ao reconstruir o cache do pacote R.

cadeia de ferramentas do compilador macOS

O macOS é uma plataforma complicada para R.
O CRAN usa um compilador personalizado para criar os binários para esta plataforma.
Uma razão é que o padrão /usr/bin/clang não suporta openMP.
Para o R 3.6.x atual, libere uma versão customizada do clang7 é usado enquanto para R 4.x clang8 será usado.
O tic reflete exatamente essa configuração nos corredores do macOS-release e macOS-devel, eliminando muitos problemas ao compilar pacotes da fonte e fornecendo a segurança para que a configuração do CRAN seja espelhada em suas compilações.

Ajustes adicionais

  • tic sempre funciona R CMD javareconf para garantir uma instalação funcional do rJava.
  • O tic usa quatro núcleos para instalar dependências, em vez de apenas executar sequencialmente.
  • tic define o env var RGL_USE_NULL para possibilitar a instalação do pacote rgl, se necessário.
  • O tic instala todos os pacotes da fonte no Linux, em vez de usar os binários do pacote R fornecidos pelo RStudio.
    Isso é para imitar o comportamento normal no Linux e garantir uma conexão adequada com as bibliotecas do sistema.
Leia Também  Um exemplo onde a perda quadrada de uma previsão sigmóide não é convexa nos parâmetros

Começando

Se você for acionado agora para experimentar as ações tic e GitHub, aqui está como começar (como alternativa, você também pode executar tic::use_tic() para iniciar um assistente interativo que o guiará pelo processo de instalação):

library("tic")

use_ghactions_deploy() # (optional) setup deployment from builds
use_ghactions_yml() # use deploy = TRUE to deploy from builds
use_tic_r(repo_type = "package", deploy_on = "ghactions") # add tic.R
use_tic_badge("ghactions") # (optional) add a badge to README.md/README.Rmd

Depois disso, confirme .github/workflows/main.yml e tic.R e dê uma olhada no painel “Ações” no repositório do GitHub.
Para um exemplo completo do arquivo YAML resultante, você pode dar uma olhada no nosso repositório de exemplo para pacotes tic.package.

Sumário

O objetivo é simplificar as tarefas relacionadas ao IC para vários projetos de R e agora fornece suporte sobrecarregado para as ações do GitHub.
Ao aprimorar o bom trabalho de r-lib / actions, o tic fornece uma DSL para R para tarefas de IC.

Atualmente, o tic difere de r-lib / actions na maneira como o cache é feito, qual cadeia de ferramentas do compilador é usada para os corredores do macOS, como as dependências do pacote / projeto são instaladas e como a implantação é feita.
As coisas podem mudar no futuro e possivelmente se alinhar mais de perto.
No entanto, como os dois projetos têm objetivos diferentes e são desenvolvidos de forma assíncrona, não há garantia para isso.
Você pode ver o tic como uma versão sobrecarregada do r-lib / actions.

Se você encontrar problemas, dê uma olhada nas vinhetas do tic, especialmente no “FAQ”.
Você também pode abrir um problema no repositório se algo não funcionar como planejado.
O tic continuará melhorando os modelos existentes e sua funcionalidade interna.

Planejamos adicionar um mecanismo de atualização no futuro para simplificar a atualização com as alterações mais recentes do modelo no upstream – fique atento!

Agradecimentos

Gostaríamos de agradecer às seguintes pessoas por suas valiosas contribuições durante o processo de revisão:



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha seu sabor: e-mail, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br