Home

CI

setup-rez

Github Action to setup rez package system.

Usage

# Ensure there is a python interpreter first to install rez!
- uses: actions/setup-python@v1
  with:
    python-version: "${{ matrix.python }}"

- uses: j0yu/setup-rez@v1
  # ALL below inputs are optional, these values are the default ones
  with:
    # GitHub repository to install rez from.
    source: 'nerdvegas/rez'

    # Git tag/branch/commit to use.
    ref: 'master'

    # Create all default "rez config packages_path".
    makePackagesPaths: true

    # Comma separated packages to rez bind, e.g. "pip, python, os".
    # To disable, just pass in an empty string "bind: ''"
    # See "rez bind --list".
    # Will force the creation of "rez config local_packages_path"
    binds: "os, python"

Example

Make sure you run actions/setup-python before using j0yu/setup-rez

name: CI
on: [push]

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v1
        with:
          python-version: 2.7

      # Using custom rez repository and version
      - uses: j0yu/setup-rez@v1
        with:
          source: "mottosso/bleeding-rez"
          ref: "2.33.0"
      
      # Check if rez is on PATH, check configs and rez bind packages
      - run: rez --version
      - run: rez config local_packages_path
      - run: rez config release_packages_path
      - run: rez config packages_path
      - run: rez view os
      - run: rez view python

      # If our repository has a package.py, let's try test build/installing it
      - uses: actions/checkout@v2
      - run: rez build --install

How it works

Everything is done in the run function in index.js:

  1. Get cached install for the source and ref input combination

  2. If there is no installs/tools cache install rez:

    1. Downloads and extracts from https://github.com/${source}/archive/${ref}.tar.gz

    2. If install.py exists, install via python install.py DEST

      else, if setup.py exists, install via pip install --target DEST SRC

    3. Store required environment variable paths to append in a setup.json

  3. Load and append environment variables paths from setup.json

    Typically PATH for rez command, PYTHONPATH if used pip install --target.

  4. Create any rez config package_paths folders if required.

  5. Create any rez bind PKG... packages if required.

Notes on install style availability:

Rez (1st) install.py (2nd) pip install
nerdvegas/rez Always 2.33.0+
mottosso/bleeding-rez NEVER Always

Developing

Clone this repository down and modify:

at the humble beginnings...

I didn't want to have npm installed, so here's the Docker contained way I worked on CentOS-7. See Creating a JavaScript action.

  1. Clone this repository.

  2. cd into the repository.

  3. Edit the action.yml

  4. Setup npm package using Docker container.

    alias npm="docker run --rm -it -v "$(pwd):$(pwd)" --user "$(id -u):$(id -g)" -w "$(pwd)" node:12 npm"
    npm init -y
    npm install @actions/core --save
    npm install @actions/exec --save
    npm install @actions/io --save
    npm install @actions/tool-cache --save
    
  5. Edit the index.js

  6. Add paths required, then push:

    git add --force action.yml index.js node_modules/* package.json package-lock.json README.md
    git commit
    git push