-
Notifications
You must be signed in to change notification settings - Fork 36
129 lines (109 loc) · 4.23 KB
/
packaging.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Packaging
on:
schedule:
# At 12:00, on day 10 of the month, every 4 months
# Giving 10 days for paws regen to be approved
- cron: "0 12 10 */4 *"
workflow_dispatch:
inputs:
text_to_print:
description: "Manual re-build"
jobs:
binaries:
runs-on: ${{ matrix.config.runner }}
strategy:
fail-fast: false
matrix:
config:
- {
r_version: "release",
os: macOS,
version: cpu-intel,
runner: macOS-latest,
}
- { r_version: "release", os: ubuntu, runner: ubuntu-latest }
- { r_version: "release", os: windows, runner: windows-latest }
- {
r_version: "oldrel-1",
os: macOS,
version: cpu-intel,
runner: macOS-latest,
}
- { r_version: "oldrel-1", os: windows, runner: windows-latest }
include:
- config: { os: ubuntu }
type: "source"
r_install_tar: "tar"
- config: { os: windows }
type: "win.binary"
r_install_tar: ""
- config: { os: macOS }
type: "mac.binary"
r_install_tar: ""
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
R_INSTALL_TAR: ${{ matrix.r_install_tar }}
outputs:
pkg_version: ${{ steps.build.outputs.pkg_version }}
steps:
- uses: actions/checkout@v3
- name: Install R
uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r_version }}
- uses: r-lib/actions/setup-pandoc@v2
with:
pandoc-version: "2.17.1"
- name: Install system dependencies macOS
if: runner.os == 'macOS'
run: |
brew install freetype
- name: Install System Dependencies linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev libssl-dev libxml2-dev libgit2-dev
sudo apt-get install -y libharfbuzz-dev libfribidi-dev
sudo apt-get install -y libfontconfig1-dev libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev
- name: Install Paws Dependencies
run: |
install.packages('pkgbuild')
shell: Rscript {0}
- name: Install Paws
run: |
install.packages('paws', repos = c(pawsr = 'https://paws-r.r-universe.dev', CRAN = 'https://cloud.r-project.org'))
shell: Rscript {0}
- name: Build binary package
id: build
run: |
lines <- readLines(file.path("cran", "paws", "DESCRIPTION"))
pkgs <- trimws(gsub("\\([^)]*\\).*", "", lines[grepl("paws\\.[a-z\\.]", lines, perl = T)]))
pkgs <- pkgs[pkgs != "paws.common"]
pkgs <- file.path("cran", c("paws", pkgs))
dest_path <- contrib.url("../binaries", type="binary")
dir.create(dest_path, recursive = TRUE)
for (pkg in pkgs) {
binary_path <- pkgbuild::build(path = pkg, binary = TRUE, dest_path=dest_path)
tools::write_PACKAGES(dest_path, type = "${{ matrix.type }}", addFiles = TRUE)
}
paws_version <- gsub("Version:[ ]+", "", readLines("cran/paws/DESCRIPTION", n = 3)[3])
cat("pkg_version=", paws_version, "\n", sep="", file = Sys.getenv("GITHUB_OUTPUT"))
shell: Rscript {0}
- name: "upload-file"
run: aws s3 sync "../binaries" "s3://paws-r-builds/packages/${{ steps.build.outputs.pkg_version }}/" --acl public-read --quiet
latest-binaries:
runs-on: ubuntu-latest
needs: binaries
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
steps:
- name: Update Latest Binaries
run: |
aws s3 rm s3://paws-r-builds/packages/latest/ --recursive --quiet
aws s3 cp s3://paws-r-builds/packages/${{ needs.binaries.outputs.pkg_version }}/ s3://paws-r-builds/packages/latest/ --acl public-read --recursive