On 3 Jun 2021, at 20:05, Murphy, Alan E <a.murphy at 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 <nunodanielagostinho at gmail.com <mailto:nunodanielagostinho at gmail.com>>
Sent: 03 June 2021 11:57
To: Murphy, Alan E <a.murphy at imperial.ac.uk <mailto:a.murphy at imperial.ac.uk>>
Cc: bioc-devel at r-project.org <mailto:bioc-devel at r-project.org> <bioc-devel at r-project.org <mailto:bioc-devel at r-project.org>>
Subject: Re: [Bioc-devel] Add dockerhub push to github repository
This email from nunodanielagostinho at gmail.com <mailto:nunodanielagostinho at 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 <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 at 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?
On 3 Jun 2021, at 07:52, Murphy, Alan E <a.murphy at imperial.ac.uk <mailto:a.murphy at 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]]