Browse code

Create build.yml

Mike Jiang authored on 15/11/2020 04:22:11 • GitHub committed on 15/11/2020 04:22:11
Showing 1 changed files

1 1
new file mode 100644
... ...
@@ -0,0 +1,128 @@
1
+# This workflow uses actions that are not certified by GitHub.
2
+# They are provided by a third-party and are governed by
3
+# separate terms of service, privacy policy, and support
4
+# documentation.
5
+#
6
+
7
+name: build
8
+
9
+on:
10
+  push:
11
+    branches: [ release, master ]
12
+  pull_request:
13
+    branches: [ release, master ]
14
+
15
+jobs:
16
+  build:
17
+    runs-on: ${{ matrix.config.os }}
18
+    name: ${{ matrix.config.os }} (${{ matrix.r }})
19
+    strategy:
20
+      fail-fast: false
21
+      matrix:
22
+        r: ['release', 'devel']
23
+        config:
24
+          - {os: windows-latest, suffix: 'zip'}
25
+          - {os: macOS-latest, suffix: 'tgz'}
26
+          - {os: ubuntu-16.04, suffix: 'tar.gz', rspm: "https://packagemanager.rstudio.com/cran/__linux__/xenial/latest"}
27
+        isMaster:
28
+          - ${{ contains(github.ref, 'master') }}
29
+        exclude:
30
+          - isMaster: false
31
+            r: devel
32
+          - isMaster: true
33
+            r: release
34
+    env:
35
+      R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
36
+      RSPM: ${{ matrix.config.rspm }}
37
+    
38
+    steps:
39
+      - uses: actions/checkout@v2
40
+      - name: Set up R ${{ matrix.r }}
41
+        uses: r-lib/actions/setup-r@master
42
+        with:
43
+          r-version: ${{ matrix.r }}
44
+          http-user-agent: ${{ matrix.config.http-user-agent }}
45
+
46
+      - uses: r-lib/actions/setup-pandoc@v1
47
+      
48
+      - name: set token for cytoinstaller(and remotes) to increase github API rate limit
49
+        env:
50
+          SUPER_SECRET: ${{ secrets.CYTOINSTALLER_TOKEN }}
51
+        run: echo "GITHUB_TOKEN=$SUPER_SECRET" >> $GITHUB_ENV
52
+ 
53
+      - name: Query dependencies
54
+        run: |
55
+          install.packages('remotes')
56
+          saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
57
+          writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
58
+        shell: Rscript {0}
59
+        
60
+      - name: Get bioc ver
61
+        run: echo "bioc_ver=$(Rscript -e 'writeLines(as.character(remotes::bioc_version()))')" >> $GITHUB_ENV
62
+        shell: bash
63
+        
64
+      - name: Cache R packages
65
+        if: runner.os != 'Windows'
66
+        uses: actions/cache@v2
67
+        with:
68
+          path: ${{ env.R_LIBS_USER }}
69
+          key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
70
+          restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
71
+
72
+      - name: check bioc ver
73
+        run: echo $bioc_ver
74
+        shell: bash
75
+        
76
+      - name: Install system dependencies
77
+        if: runner.os == 'Linux'
78
+        run: |
79
+          while read -r cmd
80
+          do
81
+            eval sudo $cmd
82
+          done < <(Rscript -e 'writeLines(remotes::system_requirements("ubuntu", "16.04"))')
83
+          sudo apt-get install -y libcurl4-openssl-dev
84
+
85
+      - name: Install dependencies
86
+        run: |
87
+          remotes::install_cran(c("rcmdcheck", "devtools"))
88
+          remotes::install_github("RGLab/cytoinstaller")
89
+          cytoinstaller::cyto_install_deps(dependencies = TRUE)
90
+        shell: Rscript {0}
91
+
92
+      - name: check rate limit
93
+        run: |
94
+          gh::gh("GET /rate_limit")$resources$core$remaining
95
+        shell: Rscript {0}
96
+        
97
+      - name: Check
98
+        env:
99
+          _R_CHECK_CRAN_INCOMING_REMOTE_: false
100
+        run: rcmdcheck::rcmdcheck(args = c("--no-manual"), check_dir = "check")
101
+        shell: Rscript {0}
102
+
103
+      - name: Upload check results
104
+        if: failure()
105
+        uses: actions/upload-artifact@main
106
+        with:
107
+          name: ${{ runner.os }}-r${{ matrix.config.r }}-results
108
+          path: check
109
+          
110
+      - name: build src pkg
111
+        if: runner.os == 'Linux'
112
+        run: devtools::build()
113
+        shell: Rscript {0}
114
+        
115
+      - name: build bin pkg
116
+        if: runner.os != 'Linux'
117
+        run: devtools::build(binary = TRUE)
118
+        shell: Rscript {0}  
119
+        
120
+      - name: Upload Release Asset
121
+        uses: svenstaro/upload-release-action@v2
122
+        with:
123
+          repo_token: ${{ secrets.GITHUB_TOKEN }}
124
+          file: '../*.${{ matrix.config.suffix }}'
125
+          file_glob: true
126
+          tag: bioc_${{ env.bioc_ver}}
127
+          overwrite: true
128
+          body: "This is my release text"