Skip to content

Final try fix img (#238) #84

Final try fix img (#238)

Final try fix img (#238) #84

Workflow file for this run

name: Test Shiny App Startup
on: [push]
jobs:
build:
runs-on: ubuntu-latest
env:
RENV_PATHS_ROOT: ~/.cache/R/renv
steps:
- uses: actions/checkout@v3
- uses: r-lib/actions/setup-r@v2
with:
r-version: 4.2.0
- name: Restore Renv package cache
uses: actions/cache@v3
with:
path: |
${{ env.RENV_PATHS_ROOT }}
./renv/library
key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }}
restore-keys: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev libssl-dev libxml2-dev libsqlite3-dev libglu1-mesa-dev default-jdk libmagick++-dev libharfbuzz-dev libfribidi-dev libfreetype6-dev
sudo apt install curl
- name: Install and activate renv
shell: Rscript {0}
run: |
install.packages("renv")
renv::restore()
# - name: Get R and OS version
# id: get-version
# run: |
# cat("##[set-output name=os-version;]", sessionInfo()$running, "\n", sep = "")
# cat("##[set-output name=r-version;]", R.Version()$version.string, sep = "")
# shell: Rscript {0}
# - name: Setup renv
# uses: r-lib/actions/setup-renv@v2
# - name: Restore packages
# shell: Rscript {0}
# run: |
# renv::restore()
# - name: test specific packages
# run: |
# Rscript -e 'install.packages("Rcpp")'
# Rscript -e 'install.packages("RcppArmadillo")'
# Rscript -e 'install.packages("DESeq2")'
- name: Test if Shiny app starts
timeout-minutes: 2
shell: Rscript {0}
run: |
install.packages('processx')
library(processx)
execute_shiny_app <- function() {
tryCatch(
{
# Start the Shiny app in a separate process
app_process <- process$new(
"Rscript",
c("-e", "shiny::runApp('program/shinyApp', launch.browser = FALSE, port = 3838)"),
stdout = "|", stderr = "|"
)
# Wait for a few seconds to allow the app to start
Sys.sleep(15)
# Check if the process is still running
if (app_process$is_alive()) {
# Terminate the app if it started successfully
app_process$kill()
return("Success")
} else {
# Capture and return the error message if the app failed to start
error_message <- app_process$read_error()
return(paste("Error:", error_message))
}
},
error = function(e) {
return(paste("Error:", e$message))
}
)
}
result <- execute_shiny_app()
# Check if the result is "failure"
if (result == "Success") {
cat("Test passed")
} else {
cat("Test failed: Output is 'failure'\n")
quit(status = 1)
}
- name: Save cache
uses: actions/cache@v3
with:
path: |
~/.local/share/renv
./renv/library
key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }}