Hey Nuno,

Thanks so much, see below.

Kind regards,
Alan.

name: R GitHub Actions

on:
  push:
    branches:
      - main
      - master
      - dev-am
  pull_request:
    branches:
      - main
      - master

jobs:
  R-CMD-check:
    name: R-CMD-check
    runs-on: ubuntu-latest
    container: almurphy/scfdev:latest
    env:
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
      RGL_USE_NULL: TRUE
    steps:
      - uses: actions/checkout@v2
      - name: Setup R
        uses: r-lib/actions/setup-r@v1
        with:
          install-r: false

      - name: Install dependencies
        run: |
          install.packages(c("remotes", "rcmdcheck"))
          remotes::install_deps(dependencies = TRUE)
        shell: Rscript {0}
      - name: Check
        run: rcmdcheck::rcmdcheck(args = "--no-manual", error_on = "error")
        shell: Rscript {0}

      - name: Get R package version
        run: |
          version=$(grep Version DESCRIPTION | grep -o "[0-9.]\+")
          echo "packageVersion=${version}" >> $GITHUB_ENV
        shell: bash {0}

      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          push: true
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
          repository: almurphy/scfdev
          tag_with_ref: true
          tag_with_sha: true
          tags: ${{ github.repository }}:${{ env.packageVersion }}
________________________________
From: Nuno Agostinho <nunodanielagosti...@gmail.com>
Sent: 03 June 2021 20:15
To: Murphy, Alan E <a.mur...@imperial.ac.uk>
Cc: bioc-devel@r-project.org <bioc-devel@r-project.org>
Subject: Re: [Bioc-devel] Add dockerhub push to github repository

Hey Alan,

is that installing the master branch or the current branch that has been pushed 
to?

It is based on the current branch.

Building image [***/scfdev:combiz/scFlow:0.7.1 ***/scfdev:dev-am 
***/scfdev:sha-658a6af]
invalid argument "***/scfdev:combiz/scFlow:0.7.1" for "-t, --tag" flag: invalid 
reference format

I don't think the problem is the Dockerfile, but the GitHub Actions workflow 
itself (specifically, the issue seems to be related with the tag of the image). 
Could you show me your GitHub Actions workflow file to check what is going on?

Cheers,
Nuno

On 3 Jun 2021, at 20:05, Murphy, Alan E 
<a.mur...@imperial.ac.uk<mailto:a.mur...@imperial.ac.uk>> wrote:

Hey Nuno,

Thank you very much for your comprehensive explanation!

I have a question regarding the `remotes::install_local()` approach in the 
dockerfile, is that installing the master branch or the current branch that has 
been pushed to? I ask as I'm working on 'dev-am' branch and I got the following 
error:

Building image [***/scfdev:combiz/scFlow:0.7.1 ***/scfdev:dev-am 
***/scfdev:sha-658a6af]
invalid argument "***/scfdev:combiz/scFlow:0.7.1" for "-t, --tag" flag: invalid 
reference format
See 'docker build --help'.
Error: Error: exit status 125
Usage:
  github-actions build-push [flags]

Flags:
  -h, --help   help for build-push

exit status 125

Obviously, this may not be down to this but I'm just trying to rule things out 
since this was the only change I made to the dockerfile. The docker file has 
this added following your dockerfile:

## Install scFlow package
# Copy description
WORKDIR scFlow
ADD . .

# Install R package from source
RUN Rscript -e "remotes::install_local()"
RUN rm -rf *

Cheers,
Alan.
________________________________
From: Nuno Agostinho 
<nunodanielagosti...@gmail.com<mailto:nunodanielagosti...@gmail.com>>
Sent: 03 June 2021 11:57
To: Murphy, Alan E <a.mur...@imperial.ac.uk<mailto:a.mur...@imperial.ac.uk>>
Cc: bioc-devel@r-project.org<mailto:bioc-devel@r-project.org> 
<bioc-devel@r-project.org<mailto:bioc-devel@r-project.org>>
Subject: Re: [Bioc-devel] Add dockerhub push to github repository

This email from 
nunodanielagosti...@gmail.com<mailto:nunodanielagosti...@gmail.com> originates 
from outside Imperial. Do not click on links and attachments unless you 
recognise the sender. If you trust the sender, add them to your safe senders 
list<https://spam.ic.ac.uk/SpamConsole/Senders.aspx> to disable email stamping 
for this address.



Hey Alan,

I would like to automatically create a new image and push to dockerhub with 
github actions when I push changes to the github repository. Does anyone have 
an example of this process in their repositories?

Well, I use GitHub actions to build a Docker image and push it to GitHub 
Container Registry, maybe this could help somehow: 
https://github.com/nuno-agostinho/psichomics/blob/master/.github/workflows/docker.yml

I use GitHub releases to release a new package version and, every time I 
release a new version, a new Docker image is built (this image also gets 
automatically tagged with the latest tag). I also build Docker images every 
time I push changes to the dev branch.

Regarding DockerHub, I have DockerHub set up to automatically build Docker 
images every time I push to master (to create the latest tag) and dev branches 
in GitHub, as well as every time I create a new tag (which I do when creating 
new releases). I could put this in the GitHub actions, but I didn't bother yet.

I would ideally like the tag of this dockerhub push to be the R package version 
(from the DESCRIPTION) to differentiate between images, is this possible?

I think you can run some bash script in your GitHub Actions based on your 
DESCRIPTION file. I would have to test but maybe something like:

    - name: Get R package version
      run: |
        version=$(grep Version DESCRIPTION | grep -o "[0-9.]\+")
        echo "packageVersion=${version}" >> $GITHUB_ENV
      shell:
        bash {0}

You can then access this variable in other steps via ${{ env.packageVersion }} 
like so:

    - name: Build and push
      uses: docker/build-push-action@v2
      with:
        push: true
        tags: ${{ github.repository }}:${{ env.packageVersion }}

Is there a way to tell the Dockerfile to install the R package in the current 
repository?

To build the image, I use ADD . . to put the GitHub repository content in the 
Docker image and then install the package using remotes::install_local(), as 
you can see from my Dockerfile: 
https://github.com/nuno-agostinho/psichomics/blob/master/Dockerfile

I hope I was clear and helpful. Please tell me if you need help with anything 
else! :)

Best,
Nuno Agostinho

On 3 Jun 2021, at 07:52, Murphy, Alan E 
<a.mur...@imperial.ac.uk<mailto:a.mur...@imperial.ac.uk>> wrote:

Hi all,

I'm working on developing an R package with the aim to eventually submit to 
Bioconductor. I would like to automatically create a new image and push to 
dockerhub with github actions when I push changes to the github repository. 
Does anyone have an example of this process in their repositories?

Two things to also consider, I would ideally like the tag of this dockerhub 
push to be the R package version (from the DESCRIPTION) to differentiate 
between images, is this possible? Secondly, I currently have the dockerfile 
created but, since my R package repository is private I have been building the 
R package and using the tar.gz file in the dockerfile to install the package 
(rather than using devtools::install_github()). Is there a way to tell the 
Dockerfile to install the R package in the current repository?

Kind regards,
Alan.

Alan Murphy
Bioinformatician
Neurogenomics lab
UK Dementia Research Institute
Imperial College London

[[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org<mailto:Bioc-devel@r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel


        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to