Skip to content

Commit 5aeac41

Browse files
authored
Update check-bioc.yml
1 parent 381c6e0 commit 5aeac41

File tree

1 file changed

+109
-49
lines changed

1 file changed

+109
-49
lines changed

.github/workflows/check-bioc.yml

Lines changed: 109 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ env:
3939
run_pkgdown: 'true'
4040
has_RUnit: 'false'
4141
cache-version: 'cache-v1'
42+
run_docker: 'false'
4243

4344
jobs:
4445
build-check:
@@ -51,9 +52,11 @@ jobs:
5152
fail-fast: false
5253
matrix:
5354
config:
54-
- { os: ubuntu-latest, r: '4.2', bioc: '3.16', cont: "bioconductor/bioconductor_docker:RELEASE_3_16", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" }
55-
- { os: macOS-latest, r: '4.2', bioc: '3.16'}
56-
- { os: windows-latest, r: '4.2', bioc: '3.16'}
55+
- { os: ubuntu-latest, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:devel", 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
5760
env:
5861
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
5962
RSPM: ${{ matrix.config.rspm }}
@@ -76,14 +79,15 @@ jobs:
7679
## https://github.com/r-lib/actions/blob/master/examples/check-standard.yaml
7780
## If they update their steps, we will also need to update ours.
7881
- name: Checkout Repository
79-
uses: actions/checkout@v2
82+
uses: actions/checkout@v3
8083

8184
## R is already included in the Bioconductor docker images
8285
- name: Setup R from r-lib
8386
if: runner.os != 'Linux'
8487
uses: r-lib/actions/setup-r@v2
8588
with:
8689
r-version: ${{ matrix.config.r }}
90+
http-user-agent: ${{ matrix.config.http-user-agent }}
8791

8892
## pandoc is already included in the Bioconductor docker images
8993
- name: Setup pandoc from r-lib
@@ -96,28 +100,28 @@ jobs:
96100
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
97101
shell: Rscript {0}
98102

99-
- name: Cache R packages
103+
- name: Restore R package cache
100104
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'"
101105
uses: actions/cache@v3
102106
with:
103107
path: ${{ env.R_LIBS_USER }}
104-
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-${{ hashFiles('.github/depends.Rds') }}
105-
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-
108+
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3-${{ hashFiles('.github/depends.Rds') }}
109+
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3-
106110

107111
- name: Cache R packages on Linux
108112
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' "
109113
uses: actions/cache@v3
110114
with:
111115
path: /home/runner/work/_temp/Library
112-
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-${{ hashFiles('.github/depends.Rds') }}
113-
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-
116+
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3-${{ hashFiles('.github/depends.Rds') }}
117+
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3-
114118

115-
- name: Install Linux system dependencies
116-
if: runner.os == 'Linux'
117-
run: |
118-
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 = " "))')
119-
echo $sysreqs
120-
sudo -s eval "$sysreqs"
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"
121125

122126
- name: Install macOS system dependencies
123127
if: matrix.config.os == 'macOS-latest'
@@ -135,10 +139,9 @@ jobs:
135139
136140
## For installing usethis's dependency gert
137141
brew install libgit2
138-
139-
## To fix x11/cairo error with tidyHeatmap/Complexheatmap here https://github.com/stemangiola/tidybulk/runs/1388237421?check_suite_focus=true#step:14:2134
140-
## Suggested here https://stackoverflow.com/questions/63648591/how-to-install-x11-before-testing-with-github-actions-for-macos
141-
brew install --cask xquartz
142+
143+
## Required for tcltk
144+
brew install xquartz --cask
142145
143146
- name: Install Windows system dependencies
144147
if: runner.os == 'Windows'
@@ -154,7 +157,7 @@ jobs:
154157

155158
- name: Set BiocVersion
156159
run: |
157-
BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE)
160+
BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE, force = TRUE)
158161
shell: Rscript {0}
159162

160163
- name: Install dependencies pass 1
@@ -166,22 +169,21 @@ jobs:
166169
## https://github.com/r-lib/remotes/issues/296
167170
## Ideally, all dependencies should get installed in the first pass.
168171
172+
## For running the checks
173+
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****'))
174+
install.packages(c("rcmdcheck", "BiocCheck"), repos = BiocManager::repositories())
175+
169176
## Pass #1 at installing dependencies
170177
message(paste('****', Sys.time(), 'pass number 1 at installing dependencies: local dependencies ****'))
171-
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE)
178+
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = FALSE, upgrade = TRUE)
172179
continue-on-error: true
173180
shell: Rscript {0}
174181

175182
- name: Install dependencies pass 2
176183
run: |
177184
## Pass #2 at installing dependencies
178185
message(paste('****', Sys.time(), 'pass number 2 at installing dependencies: any remaining dependencies ****'))
179-
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE)
180-
181-
## For running the checks
182-
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****'))
183-
remotes::install_cran("rcmdcheck")
184-
BiocManager::install("BiocCheck")
186+
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE, force = TRUE)
185187
shell: Rscript {0}
186188

187189
- name: Install BiocGenerics
@@ -192,15 +194,15 @@ jobs:
192194
shell: Rscript {0}
193195

194196
- name: Install covr
195-
if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux'
197+
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
196198
run: |
197199
remotes::install_cran("covr")
198200
shell: Rscript {0}
199201

200202
- name: Install pkgdown
201-
if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux'
203+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
202204
run: |
203-
remotes::install_cran("pkgdown")
205+
remotes::install_github("r-lib/pkgdown")
204206
shell: Rscript {0}
205207

206208
- name: Session info
@@ -213,10 +215,12 @@ jobs:
213215
- name: Run CMD check
214216
env:
215217
_R_CHECK_CRAN_INCOMING_: false
218+
DISPLAY: 99.0
216219
run: |
220+
options(crayon.enabled = TRUE)
217221
rcmdcheck::rcmdcheck(
218-
args = c("--no-build-vignettes", "--no-manual", "--timings"),
219-
build_args = c("--no-manual", "--no-resave-data"),
222+
args = c("--no-manual", "--no-vignettes", "--timings"),
223+
build_args = c("--no-manual", "--keep-empty-dirs", "--no-resave-data"),
220224
error_on = "warning",
221225
check_dir = "check"
222226
)
@@ -234,45 +238,101 @@ jobs:
234238
shell: Rscript {0}
235239

236240
- name: Run BiocCheck
241+
env:
242+
DISPLAY: 99.0
237243
run: |
238244
BiocCheck::BiocCheck(
239245
dir('check', 'tar.gz$', full.names = TRUE),
240246
`quit-with-status` = TRUE,
241247
`no-check-R-ver` = TRUE,
242-
`no-check-bioc-help` = TRUE,
243-
`no-check-library-calls` = TRUE,
244-
`no-check-coding-practices` = TRUE
248+
`no-check-bioc-help` = TRUE
245249
)
246250
shell: Rscript {0}
247251

248252
- name: Test coverage
249-
if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux'
253+
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
250254
run: |
251255
covr::codecov()
252256
shell: Rscript {0}
253257

254258
- name: Install package
255-
if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux'
259+
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
256260
run: R CMD INSTALL .
257261

258-
- name: Deploy package
259-
if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux'
260-
run: |
261-
## Temporary workaround for https://github.com/actions/checkout/issues/766
262-
git config --global --add safe.directory "$GITHUB_WORKSPACE"
263-
264-
git config --local user.email "[email protected]"
265-
git config --local user.name "GitHub Actions"
266-
Rscript -e "pkgdown::deploy_to_branch(new_process = FALSE)"
267-
shell: bash {0}
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}
268266
## Note that you need to run pkgdown::deploy_to_branch(new_process = FALSE)
269267
## at least one locally before this will work. This creates the gh-pages
270268
## branch (erasing anything you haven't version controlled!) and
271269
## makes the git history recognizable by pkgdown.
272270

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+
273284
- name: Upload check results
274285
if: failure()
275-
uses: actions/upload-artifact@v3
286+
uses: actions/upload-artifact@master
276287
with:
277-
name: ${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-results
288+
name: ${{ runner.os }}-biocversion-devel-r-4.3-results
278289
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

0 commit comments

Comments
 (0)