Skip to content

Add example of publishing PyPI package to Local Python repository #53

Add example of publishing PyPI package to Local Python repository

Add example of publishing PyPI package to Local Python repository #53

name: r-package-manager-demo
on: [push, pull_request]
permissions:
contents: read
jobs:
build:
strategy:
matrix:
r-version: ['3.6.3', '4.1.3', '4.2.2']
os:
- {os: "ubuntu-22.04", distro: "jammy"}
- {os: "ubuntu-20.04", distro: "focal" }
- {os: "windows-latest", distro: "windows"}
package-manager:
- {endpoint: "https://solo.rstudiopm.com", token: "PACKAGEMANAGER_TOKEN_SOLO"}
- {endpoint: "https://s3.rstudiopm.com", token: "PACKAGEMANAGER_TOKEN_S3"}
- {endpoint: "https://cluster.rstudiopm.com", token: "PACKAGEMANAGER_TOKEN_CLUSTER"}
runs-on: ${{ matrix.os.os }}
steps:
- uses: actions/checkout@v3
- name: Set up Pandoc for vignette building
uses: r-lib/actions/setup-pandoc@v2
- name: Set up R ${{ matrix.r-version }}
uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.r-version }}
use-public-rspm: true
- name: Set up R dependencies
uses: r-lib/actions/setup-r-dependencies@v2
with:
working-directory: r-package-manager-demo
- name: Build source package
run: |
source_dir=$(mktemp -d)
(cd $source_dir; R CMD build $OLDPWD/r-package-manager-demo)
echo "SOURCE_FILE=$(ls -d $source_dir/*)" >> $GITHUB_ENV
shell: bash
- name: Build binary package
run: |
binary_dir=$(mktemp -d)
(cd $binary_dir; R CMD INSTALL --build $OLDPWD/r-package-manager-demo)
echo "BINARY_FILE=$(ls -d $binary_dir/*)" >> $GITHUB_ENV
shell: bash
- name: Install RSPM CLI
if: github.ref == 'refs/heads/main'
env:
PACKAGEMANAGER_ADDRESS: ${{ matrix.package-manager.endpoint }}
PACKAGEMANAGER_TOKEN: ${{ secrets[matrix.package-manager.token] }}
run: |
os=$(R -s -e "cat(tolower(Sys.info()['sysname']))")
curl -f -o rspm -H "Authorization: Bearer ${PACKAGEMANAGER_TOKEN}" ${PACKAGEMANAGER_ADDRESS}/__api__/download?os=${os}
chmod +x ./rspm
shell: bash
- name: Upload source package
if: github.ref == 'refs/heads/main'
env:
PACKAGEMANAGER_ADDRESS: ${{ matrix.package-manager.endpoint }}
PACKAGEMANAGER_TOKEN: ${{ secrets[matrix.package-manager.token] }}
run:
./rspm add --source=local-api --path=$SOURCE_FILE || echo 'Already uploaded'
shell: bash
- name: Upload binary package
if: github.ref == 'refs/heads/main'
env:
PACKAGEMANAGER_ADDRESS: ${{ matrix.package-manager.endpoint }}
PACKAGEMANAGER_TOKEN: ${{ secrets[matrix.package-manager.token] }}
run:
./rspm add binary --source=local-api --distribution=${{ matrix.os.distro }} --path=$BINARY_FILE || echo 'Already uploaded'
shell: bash