Skip to content

targets

targets #3399

Workflow file for this run

# MIT License
# Copyright (c) 2021 Eli Lilly and Company
# Author: William Michael Landau (will.landau at gmail)
# Edited by Adam Wilson (adamw at buffalo)
# Written with help from public domain (CC0 1.0 Universal) workflow files by Jim Hester:
# * https://github.com/r-lib/actions/blob/master/examples/check-full.yaml
# * https://github.com/r-lib/actions/blob/master/examples/blogdown.yaml
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
on:
push:
branches:
- main
- master
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
schedule:
# - cron: '1 0 * * 0' # runs every Sunday at 00:01
- cron: '0 0 * * *' # runs every day at midnight
# - cron: '0 */6 * * *' # run every 6th hour
name: targets
jobs:
targets:
runs-on: ubuntu-latest
container: adamwilsonlab/emma:latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
RENV_PATHS_ROOT: ~/.local/share/renv
steps:
- uses: actions/checkout@v2
with:
lfs: 'true'
- name: Whitelist directory
run: git config --global --add safe.directory /__w/emma_envdata/emma_envdata
- name: Checkout LFS objects
run: git lfs checkout
continue-on-error: true
# # - name: Install Linux system dependencies
# # if: runner.os == 'Linux'
# # run: |
# # sudo apt-get update
# - name: DECRYPT rgee SECRETS
# run: ./.github/decrypt_secret.sh
# env:
# RGEE_SECRET: ${{ secrets.RGEE_SECRET }}
# continue-on-error: true
# - name: Check git settings
# run:
# git config --get http.postBuffer
# continue-on-error: true
- name: Install R Package Dependencies
run: |-
Rscript -e "questionr::qscan(list.files(pattern='*.R',recursive=T), load = TRUE, detail = FALSE)" # this scans all scripts and installs any needed packages
Rscript -e "remotes::install_github('ROpenSci/bibtex')"
- name: Cache packages
uses: actions/cache@v1
with:
path: ${{ env.RENV_PATHS_ROOT }}
key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
restore-keys: ${{ runner.os }}-renv-
# - name: Restore packages
# shell: Rscript {0}
# run: |
# if (!requireNamespace("renv", quietly = TRUE)) install.packages("renv")
# renv::restore()
- name: Check if previous runs exists
id: runs-exist
run: git ls-remote --exit-code --heads origin targets-runs
continue-on-error: true
- name: Checkout previous run
if: steps.runs-exist.outcome == 'success'
uses: actions/checkout@v2
with:
ref: targets-runs
fetch-depth: 1
path: .targets-runs
lfs: 'true' #attempting to fix issue with target-committed lfs files not being treated as lfs
- name: Restore output files from the previous run
if: steps.runs-exist.outcome == 'success'
run: |
for (dest in scan(".targets-runs/.targets-files", what = character())) {
source <- file.path(".targets-runs", dest)
if (!file.exists(dirname(dest))) dir.create(dirname(dest), recursive = TRUE)
if (file.exists(source)) file.rename(source, dest)
}
shell: Rscript {0}
# - name: Run targets pipeline
# run: |
# Sys.setenv(HOME="/home/rstudio")
# cmdstanr::set_cmdstan_path("/home/rstudio/.cmdstanr/cmdstan-2.28.1")
# cmdstanr::check_cmdstan_toolchain()
# #cmdstanr::install_cmdstan()
# targets::tar_make()
# shell: Rscript {0}
- name: Run targets pt 1
run: |
Sys.setenv(HOME="/home/rstudio")
cmdstanr::set_cmdstan_path("/home/rstudio/.cmdstanr/cmdstan-2.28.1")
cmdstanr::check_cmdstan_toolchain()
#cmdstanr::install_cmdstan()
shell: Rscript {0}
- name: Verify credentials
run: |
./.github/decrypt_secret.sh
ls ~/.config/earthengine
earthengine -h
echo " main dir"
ls
echo "scratch dir"
ls scratch_code
echo "secrets dir"
ls secrets
env:
RGEE_SECRET: ${{ secrets.RGEE_SECRET }}
GD_SECRET: ${{ secrets.GD_SECRET }}
continue-on-error: true
- name: Install custom rgee
run: |
devtools::install_github(repo = "bmaitner/rgee",
ref = "noninteractive_auth")
shell: Rscript {0}
- name: Run targets pt 2
run: |
#targets::tar_destroy(destroy = "all",ask = FALSE) #uncomment to reset
targets::tar_make()
shell: Rscript {0}
- name: Identify files that the targets pipeline produced
run: git ls-files -mo --exclude=renv > .targets-files
- name: Create the runs branch if it does not already exist
if: steps.runs-exist.outcome != 'success'
run: git checkout --orphan targets-runs
- name: Put the worktree in the runs branch if the latter already exists
if: steps.runs-exist.outcome == 'success'
run: |
rm -r .git
mv .targets-runs/.git .
rm -r .targets-runs
- name: update md
run: |
webshot::install_phantomjs()
knitr::knit("README.Rmd")
shell: Rscript {0}
- name: Upload latest run
run: |
git config --local user.name "GitHub Actions"
git config --local user.email "actions@github.com"
rm -r .gitignore .github/workflows
git lfs track _targets/objects/* #use git LFS to track the targets output (larger files)
git lfs track data/raw_data/*
git lfs track data/* #use git LFS to track the data output (larger files)
git lfs track "raw_data/**" #use git LFS to track raw_data output (larger files)
git lfs track "data/**"
git lfs track _targets/metadata/* #track metadata
git lfs track *.tif
git add .gitattributes
git add --all -- ':!renv' ':!*json'
for file in $(git ls-files ':!*.json' -mo --exclude=renv)
do
git add -f $file
done
git commit -am "Run pipeline"
git push origin targets-runs
# Move the loop below up two lines (after git add) to commit large files.
- name: Prepare failure artifact
if: failure()
run: rm -rf .git .github .targets-files .targets-runs
- name: Post failure artifact
if: failure()
uses: actions/upload-artifact@main
with:
name: ${{ runner.os }}-r${{ matrix.config.r }}-results
path: .