Merge pull request #279 from davidycliao/0.1.7 #695
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: R-ubuntu | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
R-CMD-check: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
r-version: ['4.3.2', '4.2.0', '4.2.1'] | |
fail-fast: false | |
env: | |
R_LIBS_USER: /home/runner/work/_temp/Library | |
TZ: UTC | |
R_CHECK_SYSTEM_CLOCK: FALSE | |
NOT_CRAN: true | |
RSPM: https://packagemanager.posit.co/cran/__linux__/focal/latest | |
RENV_CONFIG_REPOS_OVERRIDE: https://packagemanager.posit.co/cran/__linux__/focal/latest | |
steps: | |
- uses: actions/checkout@v3 | |
# 添加磁盤清理步驟 | |
- name: Free Disk Space | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /usr/local/lib/android | |
sudo rm -rf /opt/ghc | |
sudo rm -rf /opt/hostedtoolcache/CodeQL | |
df -h | |
- name: Cache R dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/R/x86_64-pc-linux-gnu-library/ | |
key: ${{ runner.os }}-r-${{ matrix.r-version }}-${{ hashFiles('**/renv.lock') }} | |
restore-keys: ${{ runner.os }}-r-${{ matrix.r-version }}- | |
- name: Setup R | |
uses: r-lib/actions/setup-r@v2 | |
with: | |
use-public-rspm: true | |
r-version: ${{ matrix.r-version }} | |
# Install Matrix first with version control | |
- name: Install R Matrix package | |
run: | | |
install.packages('remotes') | |
version <- getRversion() | |
tryCatch({ | |
if (version >= "4.3.2") { | |
remotes::install_version("Matrix", version = "1.5-1", repos = "https://cran.r-project.org") | |
} else if (version >= "4.2.0" && version < "4.3.0") { | |
remotes::install_version("Matrix", version = "1.4-1", repos = "https://cran.r-project.org", force = TRUE) | |
} else if (version >= "4.1.0" && version < "4.2.0") { | |
remotes::install_version("Matrix", version = "1.3-4", repos = "https://cran.r-project.org") | |
} | |
message(sprintf("R version: %s, Matrix version: %s", version, packageVersion("Matrix"))) | |
}, error = function(e) { | |
message("Error installing Matrix: ", e$message) | |
if (version < "4.3.0") { | |
message("Attempting fallback installation...") | |
remotes::install_version("Matrix", version = "1.4-1", | |
repos = "https://cran.r-project.org", | |
force = TRUE) | |
} | |
}) | |
shell: Rscript {0} | |
# Verify Matrix installation | |
- name: Verify Matrix Installation | |
run: | | |
tryCatch({ | |
if (!requireNamespace("Matrix", quietly = TRUE)) { | |
message("Matrix package not installed properly") | |
quit(status = 1) | |
} | |
version <- as.character(packageVersion("Matrix")) | |
r_version <- getRversion() | |
message("Current configuration:") | |
message("R version: ", r_version) | |
message("Matrix version: ", version) | |
# 驗證版本相容性 | |
if (r_version >= "4.3.2" && version != "1.5-1") { | |
message("Warning: Unexpected Matrix version for R 4.3.2+") | |
} else if (r_version >= "4.2.0" && r_version < "4.3.0" && version != "1.4-1") { | |
message("Warning: Unexpected Matrix version for R 4.2.x") | |
} else if (r_version >= "4.1.0" && r_version < "4.2.0" && version != "1.3-4") { | |
message("Warning: Unexpected Matrix version for R 4.1.x") | |
} | |
}, error = function(e) { | |
message("Error during Matrix verification: ", e$message) | |
quit(status = 1) | |
}) | |
shell: Rscript {0} | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10.x' | |
- name: Setup pip cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Create and configure venv | |
run: | | |
python -m venv flair_env | |
source flair_env/bin/activate | |
mkdir -p ~/.cache/pip | |
pip install --upgrade pip | |
# 分步安裝以減少內存使用 | |
pip install --no-cache-dir scipy==1.12.0 | |
pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu | |
pip install --no-cache-dir flair | |
pip install --no-cache-dir gensim==4.3.2 | |
deactivate | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends \ | |
libcurl4-openssl-dev \ | |
libssl-dev \ | |
libxml2-dev \ | |
libfontconfig1-dev \ | |
libharfbuzz-dev \ | |
libfribidi-dev \ | |
libfreetype6-dev \ | |
libpng-dev \ | |
libtiff5-dev \ | |
libjpeg-dev | |
- name: Install base R dependencies | |
run: | | |
options(repos = c(CRAN = "https://cloud.r-project.org")) | |
install.packages(c("remotes", "rcmdcheck", "reticulate", "renv", "knitr", | |
"rmarkdown", "lsa", "purrr", "testthat", "ggplot2")) | |
shell: Rscript {0} | |
- name: Restore R environment | |
run: | | |
if (!requireNamespace('renv', quietly = TRUE)) install.packages('renv') | |
options(warn = 2) | |
tryCatch({ | |
renv::restore() | |
}, error = function(e) { | |
message("Error in renv::restore(): ", e$message) | |
install.packages(c("knitr", "rmarkdown", "lsa", "purrr", "ggplot2")) | |
}) | |
shell: Rscript {0} | |
- name: Check R package | |
run: | | |
source flair_env/bin/activate | |
export TMPDIR="/tmp/R-pkg-tmp" | |
mkdir -p $TMPDIR | |
R CMD build . --no-build-vignettes | |
R CMD check *tar.gz --no-build-vignettes --no-manual --no-tests --no-examples || true | |
deactivate | |
shell: bash |