r hub
play

R-hub Gbor Csrdi csardi.gabor@gmail.com 2 Outline 1. R CMD check - PowerPoint PPT Presentation

1 R-hub Gbor Csrdi csardi.gabor@gmail.com 2 Outline 1. R CMD check as a service Architecture Demo 2. R packages processx revdepcheck 3 R CMD check as a service 4 Package build & check service Web submission


  1. 1 R-hub Gábor Csárdi csardi.gabor@gmail.com

  2. 2 Outline 1. R CMD check as a service • Architecture • Demo 2. R packages • processx • revdepcheck

  3. 3 R CMD check as a service

  4. 4 Package build & check service  Web submission  API, R package client CI via GitHub (in progress)   Multi-platform: Linux, Windows, macOS  Artifacts: binary packages

  5. 5 Architecture

  6. Core services Background services 6 Project DB CRAN package db GitHub CRAN dependency DB Front-end Queue Back-end Jenkins System requirements web app DB R versions DB Linux Docker Linux builders containers Mail server Windows builders Logging service macOS builders Monitoring service in operation Solaris builders testing / coming soon

  7. 7 Demo

  8. 8 R packages

  9. 9 processx • Run and manage system processes in the background, automatic cleanup pr <- process$new(...) pr$is_alive() pr$wait(timeout) pr$kill() pr$get_exit_status() • stdout and stderr are connected to non-blocking connections pr$read_output_lines() pr$read_error_lines() con <- pr$get_output_connection() readChar(con, ...)

  10. 10 processx synchronous wrapper: run() • Timeout • Line callbacks, chunk callbacks • Spinner run(command, args, ...) run(command, args, spinner = TRUE, timeout = secs, ...) run(command, args, stdout_line_callback = fun, ...) run(command, args, stdout_callback = fun, ...)

  11. 11 processx polling • Cross platform Unix-like poll() • Polling a single process • Polling multiple processes pr$poll_io(timeout = 1000) poll(list(pr1, pr2, pr3), timeout = 1000)

  12. 12 processx event loops # Initialise one task for each worker for (i in seq_len(state$options$num_workers)) { task <- schedule_next_task(state) state <- do_task(state, task) } while (1) { state$progress_bar$tick() check_for_timeouts(state) if (are_we_done(state)) break; events <- poll(state) state <- handle_events(state, events) task <- schedule_next_task(state) state <- do_task(state, task) gc() }

  13. 13 revdepcheck • Automated, isolated, reverse dependency checking • Compare previous release to release candidate • Isolated package libraries • Fast installation via crancache • Time limits • Nice UI: quick overview, progress bar with ETA

  14. 14

  15. 15 More R packages

  16. ⭐ Find build-time package dependencies r-hub/builddeps 16 ⭐⭐⭐ � Call R from R r-lib/callr ⭐⭐ Transparent caching or R packages r-lib/crancache ⭐⭐⭐ CRAN package database with API metacran/crandb ⭐ Query CRAN package dependencies r-hub/crandeps ⭐⭐⭐ � Manage CRAN-like repositories r-hub/cranlike ⭐⭐⭐ � CRAN package downloads API metacran/cranlogs ⭐⭐⭐ � Easy and efficient debug logs for R packages gaborcsardi/debugme ⭐⭐⭐ � Manipulate DESCRIPTION files r-lib/desc ⭐ Build R packages in Docker containers r-hub/localbuilder ⭐⭐⭐ � ICMP and HTTP ping gaborcsardi/pingr ⭐⭐ � Execute and control system processes r-lib/processx ⭐⭐⭐ � Capture and compare R CMD check results r-lib/rcmdcheck ⭐⭐ � Install packages from anywhere r-lib/remotes ⭐⭐ Automated, isolated reverse dependency checking r-lib/revdepcheck ⭐⭐ Run R-hub checks from R r-hub/rhub ⭐⭐⭐ � R versions and release dates metacran/rversions ⭐⭐⭐ � Secure sharing of sensitive information in R packages gaborcsardi/secret ⭐⭐⭐ Search CRAN packages metacran/seer ⭐⭐⭐ � A better sessionInfo() r-lib/sessioninfo ⭐ Good looking terminal status bar gaborcsardi/statusbar ⭐⭐ Resolve system requirements r-hub/sysreqs

  17. 17 Ongoing work • Make everyting work better • CI via GitHub • Solaris • Easy (well, easier) deployment

  18. 18 Links • https://builder.r-hub.io • https://github.com/r-hub/rhub • https://github.com/r-lib/processx • https://github.com/r-lib/revdepcheck

Recommend


More recommend