Skip to content

Commit 97e4afd

Browse files
authored
Merge pull request #4 from JialinGao111/master
readme, .R, Three tutorials updated
2 parents f622d92 + 723f977 commit 97e4afd

20 files changed

+6329
-616
lines changed

.DS_Store

-6 KB
Binary file not shown.

.github/workflows/check-bioc.yml

Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
## Read more about GitHub actions the features of this GitHub Actions workflow
2+
## at https://lcolladotor.github.io/biocthis/articles/biocthis.html#use_bioc_github_action
3+
##
4+
## For more details, check the biocthis developer notes vignette at
5+
## https://lcolladotor.github.io/biocthis/articles/biocthis_dev_notes.html
6+
##
7+
## You can add this workflow to other packages using:
8+
## > biocthis::use_bioc_github_action()
9+
##
10+
## Using GitHub Actions exposes you to many details about how R packages are
11+
## compiled and installed in several operating system.s
12+
### If you need help, please follow the steps listed at
13+
## https://github.com/r-lib/actions#where-to-find-help
14+
##
15+
## If you found an issue specific to biocthis's GHA workflow, please report it
16+
## with the information that will make it easier for others to help you.
17+
## Thank you!
18+
19+
## Acronyms:
20+
## * GHA: GitHub Action
21+
## * OS: operating system
22+
23+
on:
24+
push:
25+
pull_request:
26+
27+
name: R-CMD-check-bioc
28+
29+
## These environment variables control whether to run GHA code later on that is
30+
## specific to testthat, covr, and pkgdown.
31+
##
32+
## If you need to clear the cache of packages, update the number inside
33+
## cache-version as discussed at https://github.com/r-lib/actions/issues/86.
34+
## Note that you can always run a GHA test without the cache by using the word
35+
## "/nocache" in the commit message.
36+
env:
37+
has_testthat: 'false'
38+
run_covr: 'false'
39+
run_pkgdown: 'false'
40+
has_RUnit: 'false'
41+
cache-version: 'cache-v1'
42+
run_docker: 'false'
43+
44+
jobs:
45+
build-check:
46+
runs-on: ${{ matrix.config.os }}
47+
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
48+
container: ${{ matrix.config.cont }}
49+
## Environment variables unique to this job.
50+
51+
strategy:
52+
fail-fast: false
53+
matrix:
54+
config:
55+
- { os: ubuntu-latest, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:RELEASE_3_18", rspm: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest" }
56+
#- { os: macOS-latest, r: '4.3', bioc: '3.18'}
57+
#- { os: windows-latest, r: '4.3', bioc: '3.18'}
58+
## Check https://github.com/r-lib/actions/tree/master/examples
59+
## for examples using the http-user-agent
60+
env:
61+
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
62+
RSPM: ${{ matrix.config.rspm }}
63+
NOT_CRAN: true
64+
TZ: UTC
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
67+
68+
steps:
69+
70+
## Set the R library to the directory matching the
71+
## R packages cache step further below when running on Docker (Linux).
72+
- name: Set R Library home on Linux
73+
if: runner.os == 'Linux'
74+
run: |
75+
mkdir /__w/_temp/Library
76+
echo ".libPaths('/__w/_temp/Library')" > ~/.Rprofile
77+
78+
## Most of these steps are the same as the ones in
79+
## https://github.com/r-lib/actions/blob/master/examples/check-standard.yaml
80+
## If they update their steps, we will also need to update ours.
81+
- name: Checkout Repository
82+
uses: actions/checkout@v3
83+
84+
## R is already included in the Bioconductor docker images
85+
- name: Setup R from r-lib
86+
if: runner.os != 'Linux'
87+
uses: r-lib/actions/setup-r@v2
88+
with:
89+
r-version: ${{ matrix.config.r }}
90+
http-user-agent: ${{ matrix.config.http-user-agent }}
91+
92+
## pandoc is already included in the Bioconductor docker images
93+
- name: Setup pandoc from r-lib
94+
if: runner.os != 'Linux'
95+
uses: r-lib/actions/setup-pandoc@v2
96+
97+
- name: Query dependencies
98+
run: |
99+
install.packages('remotes')
100+
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
101+
shell: Rscript {0}
102+
103+
- name: Restore R package cache
104+
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'"
105+
uses: actions/cache@v3
106+
with:
107+
path: ${{ env.R_LIBS_USER }}
108+
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_18-r-4.3-${{ hashFiles('.github/depends.Rds') }}
109+
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_18-r-4.3-
110+
111+
- name: Cache R packages on Linux
112+
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' "
113+
uses: actions/cache@v3
114+
with:
115+
path: /home/runner/work/_temp/Library
116+
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_18-r-4.3-${{ hashFiles('.github/depends.Rds') }}
117+
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_18-r-4.3-
118+
119+
# - name: Install Linux system dependencies
120+
# if: runner.os == 'Linux'
121+
# run: |
122+
# sysreqs=$(Rscript -e 'cat("apt-get update -y && apt-get install -y", paste(gsub("apt-get install -y ", "", remotes::system_requirements("ubuntu", "20.04")), collapse = " "))')
123+
# echo $sysreqs
124+
# sudo -s eval "$sysreqs"
125+
126+
- name: Install macOS system dependencies
127+
if: matrix.config.os == 'macOS-latest'
128+
run: |
129+
## Enable installing XML from source if needed
130+
brew install libxml2
131+
echo "XML_CONFIG=/usr/local/opt/libxml2/bin/xml2-config" >> $GITHUB_ENV
132+
133+
## Required to install magick as noted at
134+
## https://github.com/r-lib/usethis/commit/f1f1e0d10c1ebc75fd4c18fa7e2de4551fd9978f#diff-9bfee71065492f63457918efcd912cf2
135+
brew install imagemagick@6
136+
137+
## For textshaping, required by ragg, and required by pkgdown
138+
brew install harfbuzz fribidi
139+
140+
## For installing usethis's dependency gert
141+
brew install libgit2
142+
143+
## Required for tcltk
144+
brew install xquartz --cask
145+
146+
- name: Install Windows system dependencies
147+
if: runner.os == 'Windows'
148+
run: |
149+
## Edit below if you have any Windows system dependencies
150+
shell: Rscript {0}
151+
152+
- name: Install BiocManager
153+
run: |
154+
message(paste('****', Sys.time(), 'installing BiocManager ****'))
155+
remotes::install_cran("BiocManager")
156+
shell: Rscript {0}
157+
158+
- name: Set BiocVersion
159+
run: |
160+
BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE, force = TRUE)
161+
shell: Rscript {0}
162+
163+
- name: Install dependencies pass 1
164+
run: |
165+
## Try installing the package dependencies in steps. First the local
166+
## dependencies, then any remaining dependencies to avoid the
167+
## issues described at
168+
## https://stat.ethz.ch/pipermail/bioc-devel/2020-April/016675.html
169+
## https://github.com/r-lib/remotes/issues/296
170+
## Ideally, all dependencies should get installed in the first pass.
171+
172+
## For running the checks
173+
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****'))
174+
install.packages(c("rcmdcheck", "BiocCheck"), repos = BiocManager::repositories())
175+
176+
## Pass #1 at installing dependencies
177+
message(paste('****', Sys.time(), 'pass number 1 at installing dependencies: local dependencies ****'))
178+
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = FALSE, upgrade = TRUE)
179+
continue-on-error: true
180+
shell: Rscript {0}
181+
182+
- name: Install dependencies pass 2
183+
run: |
184+
## Pass #2 at installing dependencies
185+
message(paste('****', Sys.time(), 'pass number 2 at installing dependencies: any remaining dependencies ****'))
186+
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE, force = TRUE)
187+
shell: Rscript {0}
188+
189+
- name: Install BiocGenerics
190+
if: env.has_RUnit == 'true'
191+
run: |
192+
## Install BiocGenerics
193+
BiocManager::install("BiocGenerics")
194+
shell: Rscript {0}
195+
196+
- name: Install covr
197+
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
198+
run: |
199+
remotes::install_cran("covr")
200+
shell: Rscript {0}
201+
202+
- name: Install pkgdown
203+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
204+
run: |
205+
remotes::install_cran("pkgdown")
206+
shell: Rscript {0}
207+
208+
- name: Session info
209+
run: |
210+
options(width = 100)
211+
pkgs <- installed.packages()[, "Package"]
212+
sessioninfo::session_info(pkgs, include_base = TRUE)
213+
shell: Rscript {0}
214+
215+
- name: Run CMD check
216+
env:
217+
_R_CHECK_CRAN_INCOMING_: false
218+
DISPLAY: 99.0
219+
run: |
220+
options(crayon.enabled = TRUE)
221+
rcmdcheck::rcmdcheck(
222+
args = c("--no-manual", "--no-vignettes", "--timings"),
223+
build_args = c("--no-manual", "--keep-empty-dirs", "--no-resave-data"),
224+
error_on = "warning",
225+
check_dir = "check"
226+
)
227+
shell: Rscript {0}
228+
229+
## Might need an to add this to the if: && runner.os == 'Linux'
230+
- name: Reveal testthat details
231+
if: env.has_testthat == 'true'
232+
run: find . -name testthat.Rout -exec cat '{}' ';'
233+
234+
- name: Run RUnit tests
235+
if: env.has_RUnit == 'true'
236+
run: |
237+
BiocGenerics:::testPackage()
238+
shell: Rscript {0}
239+
240+
- name: Run BiocCheck
241+
env:
242+
DISPLAY: 99.0
243+
run: |
244+
BiocCheck::BiocCheck(
245+
dir('check', 'tar.gz$', full.names = TRUE),
246+
`quit-with-status` = TRUE,
247+
`no-check-R-ver` = TRUE,
248+
`no-check-bioc-help` = TRUE
249+
)
250+
shell: Rscript {0}
251+
252+
- name: Test coverage
253+
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
254+
run: |
255+
covr::codecov(coverage = covr::package_coverage(type = "all"))
256+
shell: Rscript {0}
257+
258+
- name: Install package
259+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
260+
run: R CMD INSTALL .
261+
262+
- name: Build pkgdown site
263+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
264+
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
265+
shell: Rscript {0}
266+
## Note that you need to run pkgdown::deploy_to_branch(new_process = FALSE)
267+
## at least one locally before this will work. This creates the gh-pages
268+
## branch (erasing anything you haven't version controlled!) and
269+
## makes the git history recognizable by pkgdown.
270+
271+
- name: Install deploy dependencies
272+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
273+
run: |
274+
apt-get update && apt-get -y install rsync
275+
276+
- name: Deploy pkgdown site to GitHub pages 🚀
277+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
278+
uses: JamesIves/github-pages-deploy-action@releases/v4
279+
with:
280+
clean: false
281+
branch: gh-pages
282+
folder: docs
283+
284+
- name: Upload check results
285+
if: failure()
286+
uses: actions/upload-artifact@master
287+
with:
288+
name: ${{ runner.os }}-biocversion-RELEASE_3_18-r-4.3-results
289+
path: check
290+
291+
292+
## Code adapted from
293+
## https://github.com/waldronlab/cBioPortalData/blob/e0440a4445f0cc731e426363a76faa22ee5e0f9d/.github/workflows/devel_check_dock.yml#L65-L92
294+
docker-build-and-push:
295+
runs-on: ubuntu-latest
296+
needs: build-check
297+
steps:
298+
- name: Checkout Repository
299+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'"
300+
uses: actions/checkout@v3
301+
302+
- name: Register repo name
303+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'"
304+
id: reg_repo_name
305+
run: |
306+
echo CONT_IMG_NAME=$(echo ${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
307+
308+
- name: Set up QEMU
309+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'"
310+
uses: docker/setup-qemu-action@v2
311+
312+
- name: Set up Docker Buildx
313+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'"
314+
uses: docker/setup-buildx-action@v2
315+
316+
- name: Login to Docker Hub
317+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'"
318+
uses: docker/login-action@v2
319+
with:
320+
username: ${{ secrets.DOCKERHUB_USERNAME }}
321+
password: ${{ secrets.DOCKERHUB_TOKEN }}
322+
## Note that DOCKERHUB_TOKEN is really a token for your dockerhub
323+
## account, not your actual dockerhub account password. You can get it
324+
## from https://hub.docker.com/settings/security.
325+
## Check https://github.com/docker/build-push-action/tree/v4.0.0
326+
## for more details.
327+
## Alternatively, try checking
328+
## https://seandavi.github.io/BuildABiocWorkshop/articles/HOWTO_BUILD_WORKSHOP.html.
329+
330+
- name: Build and Push Docker
331+
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel' && success()"
332+
uses: docker/build-push-action@v4
333+
with:
334+
context: .
335+
push: true
336+
tags: >
337+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:latest,
338+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:devel

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,4 @@ rsconnect/
5050

5151
# auto file from MacOS
5252
.DS_Store
53+
inst/doc

0 commit comments

Comments
 (0)