From 356ee0bac22b46b0d560172b95aae8a4e2e4eb5c Mon Sep 17 00:00:00 2001 From: Lucas Brown <54835354+imlucasbrown@users.noreply.github.com> Date: Sat, 1 Jun 2024 12:55:08 -0500 Subject: [PATCH] + Added deployment workflows * Updated readme with new badges and formatting --- .github/workflows/release.yml | 64 +++++++++++++++++++++++ .github/workflows/unittests.yml | 91 +++++++++++++++++++++++++++++++++ README.md | 18 ++++--- 3 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/unittests.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..692b6c6 --- /dev/null +++ b/.github/workflows/release.yml @@ -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 \ No newline at end of file diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml new file mode 100644 index 0000000..c23ed16 --- /dev/null +++ b/.github/workflows/unittests.yml @@ -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 \ No newline at end of file diff --git a/README.md b/README.md index f5abf05..a443cce 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ +
+ +![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 +
+ + **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. @@ -11,18 +19,21 @@ Only clone this repo if you're contributing to the NXT codebase.
#### 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') @@ -34,11 +45,6 @@ nxt.execute_graph('path/to/graph.nxt')
## 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/)