Skip to content

Commit

Permalink
+ Added deployment workflows
Browse files Browse the repository at this point in the history
* Updated readme with new badges and formatting
  • Loading branch information
ImLucasBrown committed Jun 1, 2024
1 parent 210bc04 commit 356ee0b
Show file tree
Hide file tree
Showing 3 changed files with 167 additions and 6 deletions.
64 changes: 64 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Release

on:
push:
branches: [release]
workflow_dispatch:
branches: [release]
workflow_call:
inputs:
QT_DEPENDENCIES:
description: 'Set to true to install Qt dependencies (Linux)'
required: false
default: 'false'
type: string

jobs:
run-tests:
uses: nxt-dev/nxt/.github/workflows/unittests.yml@release
with:
QT_DEPENDENCIES: ${{ inputs.QT_DEPENDENCIES }}
build-and-deploy-pypi:
needs: [run-tests]
runs-on: ubuntu-latest
env:
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Checkout build graph (if needed)
if: github.repository != 'nxt-dev/nxt'
uses: actions/checkout@v4
with:
repository: nxt-dev/nxt
ref: release
path: nxt
sparse-checkout: build


- name: Install Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Ensure PIP
run: python -m ensurepip --upgrade

- name: Install nxt-core (if needed)
if: github.repository != 'nxt-dev/nxt'
run: |
pip install git+https://github.com/nxt-dev/nxt.git@release
- name: Install this package and dependencies
run: |
pip install twine
pip install .
- name: Build package and upload
env:
# Packaging graph expects nxt to be cloned next to nxt_editor
# We hack the file fall backs to trick it into working
NXT_FILE_ROOTS: '../docs/api_docs'
run: |
python -m nxt.cli -vv exec build/packaging.nxt -s /make_and_test_upload
91 changes: 91 additions & 0 deletions .github/workflows/unittests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Unittests

on:
workflow_dispatch:
branches-ignore: [release]
workflow_call:
inputs:
QT_DEPENDENCIES:
description: 'Set to true to install Qt dependencies (Linux)'
required: false
default: 'false'
type: string
pull_request:
branches-ignore: [release]
push:
branches-ignore: [release]

jobs:
test-python:
env:
QT_DEPENDENCIES: ${{ inputs.QT_DEPENDENCIES }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ['3.7', '3.8', '3.9', '3.10']
fail-fast: true
runs-on: ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Determine nxt-core branch to use
run: |
if [ "${{ github.ref_name }}" = "release" ]; then
echo "NXT_CORE_BRANCH=release" >> $GITHUB_ENV
else
echo "NXT_CORE_BRANCH=dev" >> $GITHUB_ENV
fi
shell: bash

- name: Install Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux' && env.QT_DEPENDENCIES == 'true'
run: |
sudo apt-get update
sudo apt-get install -y \
libxkbcommon-x11-0 \
libxrender1 \
libxext6 \
libxcb1 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render0 \
libxcb-render-util0 \
libxcb-shape0 \
libxcb-shm0 \
libxcb-sync1 \
libxcb-xfixes0 \
libxcb-xinerama0 \
libxcb-xkb1 \
libqt5x11extras5 \
xvfb
- name: Ensure PIP
run: python -m ensurepip --upgrade

- name: Install nxt-core
if: github.repository != 'nxt-dev/nxt'
run: |
pip install git+https://github.com/nxt-dev/nxt.git@${{ env.NXT_CORE_BRANCH }}
- name: Install this package
run: pip install .

- name: Run tests with xvfb (Ubuntu + Qt)
if: runner.os == 'Linux' && env.QT_DEPENDENCIES == 'true'
run: |
Xvfb :99 -screen 0 1024x768x24 &
export DISPLAY=:99
python -m nxt.cli test
- name: Run Unittests from CLI
if: env.QT_DEPENDENCIES != 'true'
run: python -m nxt.cli test
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,39 @@
<div align="center">

![Release Status](https://github.com/nxt-dev/nxt/actions/workflows/release.yml/badge.svg?branch=release)
![Dev Status](https://github.com/nxt-dev/nxt/actions/workflows/unittests.yml/badge.svg?branch=dev)
# NXT Python Core

</div>


**nxt** (**/ɛn·ɛks·ti/**) is a general purpose code compositor designed for rigging, scene assembly, and automation. (node execution tree)
[Installation/Usage](#installationusage) | [Docs](https://nxt-dev.github.io/) | [Contributing](CONTRIBUTING.md) | [Licensing](LICENSE)

# Installation/Usage

**This repo is the nxt core, it does not come with a UI. If you're looking for the UI, please see [the nxt editor](https://github.com/nxt-dev/nxt_editor).**
This package is designed for headless execution of graphs in a render farm or other headless environment.
Only clone this repo if you're contributing to the NXT codebase.

<br>

#### Requirements

- Python >= [2.7.*](https://www.python.org/download/releases/2.7) <= [3.7.*](https://www.python.org/download/releases/3.7)
- We strongly recommend using a Python [virtual environment](https://docs.python.org/3.7/tutorial/venv.html)

*[Requirements for contributors](CONTRIBUTING.md#python-environment)*

### NXT Python Core

Our releases are hosted on [PyPi](https://pypi.org/project/nxt-editor/).

**Install:**
`pip install nxt-core`

**Execute Graph:**

```python
import nxt
nxt.execute_graph('path/to/graph.nxt')
Expand All @@ -34,11 +45,6 @@ nxt.execute_graph('path/to/graph.nxt')
<br>

## Special Thanks
[Sunrise Productions](https://sunriseproductions.tv/) | [School of Visual Art and Design](https://www.southern.edu/visualartanddesign/)

---

| Release | Dev |
| :---: | :---: |
| [![Build Status](https://travis-ci.com/nxt-dev/nxt.svg?token=rBRbAJTv2rq1c8WVEwGs&branch=release)](https://travis-ci.com/nxt-dev/nxt) | [![Build Status](https://travis-ci.com/nxt-dev/nxt.svg?token=rBRbAJTv2rq1c8WVEwGs&branch=dev)](https://travis-ci.com/nxt-dev/nxt) |
[Sunrise Productions](https://sunriseproductions.tv/) | [School of Visual Art and Design](https://www.southern.edu/visualartanddesign/)

0 comments on commit 356ee0b

Please sign in to comment.