From 8926a7828861a2cb8f0a9373062d242bf63d80be Mon Sep 17 00:00:00 2001 From: Hong Ooi Date: Thu, 8 Oct 2020 20:38:46 +1100 Subject: [PATCH] Switch to Github Actions (#32) --- .Rbuildignore | 2 +- .github/workflows/check-standard.yaml | 106 ++++++++++++++++++++++++++ DESCRIPTION | 2 +- README.md | 2 +- azure-pipelines.yml | 54 ------------- 5 files changed, 109 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/check-standard.yaml delete mode 100644 azure-pipelines.yml diff --git a/.Rbuildignore b/.Rbuildignore index 3cf22fa..51404c7 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -8,4 +8,4 @@ CONTRIBUTING.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..3d6fc1c --- /dev/null +++ b/.github/workflows/check-standard.yaml @@ -0,0 +1,106 @@ +# 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 + + - name: Copy to Cloudyr + if: runner.os == 'Linux' && github.ref == 'refs/heads/master' + env: + token: "${{ secrets.ghPat }}" + run: | + export CLOUDYR_REPO=$(echo $(github.repository.name) | sed "s/Azure/cloudyr/") + git push --prune https://$token@github.com/$CLOUDYR_REPO +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@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 d2b3ec8..91a1107 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AzureAuth Title: Authentication Services for Azure Active Directory -Version: 1.2.4 +Version: 1.2.4.9000 Authors@R: c( person("Hong", "Ooi", , "hongooi@microsoft.com", role = c("aut", "cre")), person("httr development team", role="ctb", comment="Original OAuth listener code"), diff --git a/README.md b/README.md index a3feb43..b5082ed 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CRAN](https://www.r-pkg.org/badges/version/AzureAuth)](https://cran.r-project.org/package=AzureAuth) ![Downloads](https://cranlogs.r-pkg.org/badges/AzureAuth) -Build Status +![R-CMD-check](https://github.com/Azure/AzureAuth/workflows/R-CMD-check/badge.svg) AzureAuth provides [Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/) (AAD) authentication functionality for R users of Microsoft's Azure cloud. Use this package to obtain OAuth 2.0 tokens for Azure services including Azure Resource Manager, Azure Storage and others. Both AAD v1.0 and v2.0 are supported. 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'))