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

Viewed 56

This is a cross-post from the rstudio forum.

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.

I create a standard cmd-check workflow via usethis::use_github_actions(), but additionally install Julia, the required Julia package (WildBootTests.jl) and link R and Julia (the 'JULIA_BINDIR' part).

The code below successfully deploys the cmd check on github actions for Max and Ubuntu but fails 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: https://github.com/s3alfisc/fwildclusterboot/actions/runs/1583895387

Thanks for your help!

# 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

      # 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
      # install WildBootTests.jl
      - name: install WildBootTests.jl
        run: julia -e 'using Pkg; Pkg.add("WildBootTests")'
      # custom code ends here

      - 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

Update: If I include the line shell: bash under the run: julia -e statements, package installation does not fail on windows.

Hence, the added part needs to look like this:

      # 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
0 Answers
Related