Testing an R package against a Julia package on github actions - works on all OS but fails on windows

Hi to all of you,

I have been working towards continuous integration testing of an algorithm wrapped in an R package against a Julia implementation, which I have also packaged in an R package via JuliaConnectoR.

First, I thought it would be maybe helpful for others to post my cmd-check workflow yaml here - maybe someone else might be interested in testing an R package against Julia code.

This is a standard cmd-check workflow as created by usethis::use_github_actions(), but installs Julia, the required Julia package (WildBootTests.jl) and links R and Julia (the 'JULIA_BINDIR' part).

# Workflow derived from https://github.com/r-lib/actions/tree/master/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
  push:
    branches: [main, master]
  pull_request:
    branches: [main, master]

name: R-CMD-check

jobs:

  R-CMD-check:
    runs-on: ${{ matrix.config.os }}

    name: ${{ matrix.config.os }} (${{ matrix.config.r }})

    strategy:
      fail-fast: false
      matrix:
        config:
          - {os: macOS-latest,   r: 'release'}
          - {os: windows-latest, r: 'release'}
          - {os: ubuntu-latest,   r: 'devel', http-user-agent: 'release'}
          - {os: ubuntu-latest,   r: 'release'}
          - {os: ubuntu-latest,   r: 'oldrel-1'}

    env:
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
      R_KEEP_PKG_SOURCE: yes

    steps:

      - uses: actions/checkout@v2

      - uses: r-lib/actions/setup-pandoc@v1

      - uses: r-lib/actions/setup-r@v1
        with:
          r-version: ${{ matrix.config.r }}
          http-user-agent: ${{ matrix.config.http-user-agent }}
          use-public-rspm: true

      - uses: r-lib/actions/setup-r-dependencies@v1
        with:
          extra-packages: rcmdcheck

      # install julia
      - uses: julia-actions/setup-julia@v1
      # add julia to renviron
      - name: Create and populate .Renviron file
        run: echo JULIA_BINDIR= "${{ env.juliaLocation }}" >> ~/.Renviron
      # install WildBootTests.jl
      - name: install WildBootTests.jl
        run: julia -e 'using Pkg; Pkg.add("WildBootTests")'

      - uses: r-lib/actions/check-r-package@v1

      - name: Show testthat output
        if: always()
        run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
        shell: bash

      - name: Upload check results
        if: failure()
        uses: actions/upload-artifact@main
        with:
          name: ${{ runner.os }}-r${{ matrix.config.r }}-results
          path: check

The code above successfully deploys the cmd check on github actions for all OS except for windows. The part that fails is run: julia -e 'using Pkg; Pkg.add("WildBootTests")', which installs the WildBootTests.jl package via the shell.

Does anyone have an idea why the installation of WildBootTests.jl fails on windows, but not on Mac and Ubuntu?

You can find more information on the workflow here: don't run library(wildboottestjlr) · s3alfisc/fwildclusterboot@5b2e2c9 · GitHub

Thanks for your help!

Solution: the package installs on windows if I modify the custom code part to

      # custom code starts here 
      # install julia
      - uses: julia-actions/setup-julia@v1
      # add julia to renviron
      - name: Create and populate .Renviron file
        run: echo JULIA_BINDIR= "${{ env.juliaLocation }}" >> ~/.Renviron
        shell: bash
      # install WildBootTests.jl
      - name: install WildBootTests.jl
        run: julia -e 'using Pkg; Pkg.add("WildBootTests")'
        shell: bash
      # custom code ends here
1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.