diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 0000000..e91424f --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,44 @@ +name: Build Pipeline + +on: [ push ] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + # This workflow can be matrixed against multiple Python versions if desired. eg. [3.7, 3.8, 3.9, "3.10"] + python-version: [ 3.8 ] + + steps: + # Get the code from the repository to be linted, packaged, and pushed + - name: Get Repo + uses: actions/checkout@v3 + + # Setup the Python environment + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + # Install the packages for linting and building the package + - name: Prepare Build Environment + run: | + pip install -q flake8 twine wheel nox + + # Build the distributable package as well as the release patch + - name: Build Objects + if: startsWith(github.ref, 'refs/tags') + run: nox -s build + + # Ensure the objects were packaged correctly and there wasn't an issue with + # the compilation or packaging process. + - name: Check Objects + if: startsWith(github.ref, 'refs/tags') + run: twine check dist/* + + # If this commit is the result of a Git tag, push the wheel and tar packages + # to the PyPi registry + - name: Publish to PyPI + if: startsWith(github.ref, 'refs/tags') + run: twine upload --repository-url https://upload.pypi.org/legacy/ -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} --skip-existing --verbose dist/* \ No newline at end of file