diff --git a/.Rbuildignore b/.Rbuildignore index 9bb255d..3fcce39 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -9,4 +9,4 @@ CONTRIBUTING.md CODE_OF_CONDUCT.md drat.sh ^LICENSE\.md$ -azure-pipelines.yml +^\.github$ diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml new file mode 100644 index 0000000..d2dfb7e --- /dev/null +++ b/.github/workflows/check-standard.yaml @@ -0,0 +1,111 @@ +# For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. +# https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions +on: [push, pull_request] + +name: R-CMD-check + +jobs: + R-CMD-check: + if: github.repository_owner == 'Azure' + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: windows-latest, r: 'release'} + - {os: macOS-latest, r: 'release'} + - {os: ubuntu-20.04, r: 'release', rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest"} + + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + RSPM: ${{ matrix.config.rspm }} + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # required for mirroring, see https://stackoverflow.com/a/64272409/474349 + + - name: Copy to Cloudyr + if: runner.os == 'Linux' && github.ref == 'refs/heads/master' + env: + token: "${{ secrets.ghPat }}" + # git config hack required, see https://stackoverflow.com/q/64270867/474349 + run: | + export CLOUDYR_REPO=$(echo $GITHUB_REPOSITORY | sed "s/Azure/cloudyr/") + git config -l | grep 'http\..*\.extraheader' | cut -d= -f1 | \ + xargs -L1 git config --unset-all + git push --prune https://token:$token@github.com/${CLOUDYR_REPO}.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/* + + - uses: r-lib/actions/setup-r@master + with: + r-version: ${{ matrix.config.r }} + + - uses: r-lib/actions/setup-pandoc@master + + - name: Query dependencies + run: | + install.packages('remotes') + saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) + writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") + shell: Rscript {0} + + - name: Cache R packages + if: runner.os != 'Windows' + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} + restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- + + - name: Install system dependencies + if: runner.os == 'Linux' + run: | + while read -r cmd + do + eval sudo $cmd + done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "20.04"))') + + - name: Install dependencies + run: | + remotes::install_deps(dependencies = TRUE) + remotes::install_cran(c("pkgbuild", "rcmdcheck", "drat")) + shell: Rscript {0} + + - name: Check + env: + _R_CHECK_CRAN_INCOMING_REMOTE_: false + _R_CHECK_FORCE_SUGGESTS_: false + run: | + pkg <- pkgbuild::build() + rcmdcheck::rcmdcheck(pkg, args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") + shell: Rscript {0} + + - name: Upload check results + if: failure() + uses: actions/upload-artifact@main + with: + name: ${{ runner.os }}-r${{ matrix.config.r }}-results + path: check + + - name: Update Cloudyr drat + if: success() && runner.os == 'Linux' && github.ref == 'refs/heads/master' + env: + token: "${{ secrets.ghPat }}" + run: | + cd .. + export PKGBUILD_GZ=$(ls *.gz) + mkdir drat + cd drat + git init + git config user.email "dummy@example.com" + git config user.name "Github Actions" + git remote add upstream "https://token:$token@github.com/cloudyr/cloudyr.github.io.git" + git fetch upstream + git checkout master + Rscript -e "drat::insertPackage('../$PKGBUILD_GZ', repodir='./drat')" + git add --all + git commit -m "add $PKGBUILD_GZ (build $GITHUB_RUN_NUMBER)" + git push diff --git a/DESCRIPTION b/DESCRIPTION index 62ce0b2..756bf4a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: AzureVMmetadata Title: Interface to Azure Virtual Machine Instance Metadata -Version: 1.0.0 +Version: 1.0.1 Authors@R: c( - person("Hong", "Ooi", , "hongooi@microsoft.com", role = c("aut", "cre")), + person("Hong", "Ooi", , "hongooi73@gmail.com", role = c("aut", "cre")), person("Microsoft", role="cph") ) Description: A simple interface to the instance metadata for a virtual machine running in Microsoft's 'Azure' cloud. This provides information about the VM's configuration, such as its processors, memory, networking, storage, and so on. Part of the 'AzureR' family of packages. diff --git a/README.md b/README.md index ba0e65c..15a9291 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CRAN](https://www.r-pkg.org/badges/version/AzureVMmetadata)](https://cran.r-project.org/package=AzureVMmetadata) ![Downloads](https://cranlogs.r-pkg.org/badges/AzureVMmetadata) -[![Build Status](https://asiadatascience.visualstudio.com/AzureR/_apis/build/status/Azure.AzureVMmetadata?branchName=master)](https://asiadatascience.visualstudio.com/AzureR/_build/latest?definitionId=10&branchName=master) +![R-CMD-check](https://github.com/Azure/AzureKeyVault/workflows/R-CMD-check/badge.svg) A simple package to access the [instance metadata service](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service) in an Azure virtual machine. diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 374cdbb..0000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,54 +0,0 @@ -variables: -- group: GH -- name: R_LIBS_USER - value: '$(Agent.BuildDirectory)/R/library' - -pool: - vmImage: 'ubuntu-latest' - -container: $[variables['rockerImage']] - -steps: -- bash: | - export CLOUDYR_REPO=$(echo $(Build.Repository.Name) | sed "s/Azure/cloudyr/") - git push --prune https://$(ghPat)@github.com/$CLOUDYR_REPO +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/* - displayName: 'Copy to Cloudyr' - condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') - -- bash: | - echo "options(repos = '$(cranRepo)')" > ~/.Rprofile - echo ".libPaths(c('$R_LIBS_USER', .libPaths()))" >> ~/.Rprofile - mkdir -p $R_LIBS_USER - displayName: 'Setup R library directory' - -- task: CacheBeta@0 - inputs: - key: ./DESCRIPTION | "$(rockerImage)" | "$(cranRepo)" - path: $(R_LIBS_USER) - displayName: 'Caching packages' - -- bash: | - Rscript -e "pkgs <- c('remotes', 'rcmdcheck', 'drat'); if(length(find.package(pkgs, quiet=TRUE)) != length(pkgs)) install.packages(pkgs)" - Rscript -e "remotes::install_deps(dependencies=TRUE)" - displayName: 'Installing package dependencies' - -- bash: | - Rscript -e "f <- pkgbuild::build(dest_path='$(Build.ArtifactStagingDirectory)'); rcmdcheck::rcmdcheck(f, args='--no-manual', error_on='warning', check_dir='check')" - displayName: 'Checking package' - -- bash: | - export PKGBUILD_GZ=$(ls $(Build.ArtifactStagingDirectory)/*.gz) - mkdir drat - cd drat - git init - git config user.email "dummy@example.com" - git config user.name "Azure Pipelines" - git remote add upstream "https://$(ghPat)@github.com/cloudyr/cloudyr.github.io.git" - git fetch upstream - git checkout master - Rscript -e "drat::insertPackage('$PKGBUILD_GZ', repodir='./drat')" - git add --all - git commit -m "add $PKGBUILD_GZ (build $(Build.BuildId))" - git push - displayName: 'Update Cloudyr drat' - condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))