diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..54c6663 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: Build CI + +on: [pull_request, push] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Dump GitHub context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - name: Translate Repo Name For Build Tools filename_prefix + id: repo-name + run: | + echo ::set-output name=repo-name::$( + echo ${{ github.repository }} | + awk -F '\/' '{ print tolower($2) }' | + tr '_' '-' + ) + - name: Set up Python 3.6 + uses: actions/setup-python@v1 + with: + python-version: 3.6 + - name: Versions + run: | + python3 --version + - uses: actions/checkout@v1 + with: + submodules: true + - name: Install deps + run: | + sudo apt-get install -y gettext + pip install -r requirements.txt + pip install circuitpython-build-tools Sphinx sphinx-rtd-theme + pip install --force-reinstall pylint==1.9.2 + - name: Library version + run: git describe --dirty --always --tags + - name: PyLint + run: | + pylint $( find . -path './adafruit*.py' ) + ([[ ! -d "examples" ]] || pylint --disable=missing-docstring,invalid-name,bad-whitespace examples/*.py) + - name: Build assets + run: circuitpython-build-bundles --filename_prefix ${{ steps.repo-name.outputs.repo-name }} --library_location . + - name: Build docs + working-directory: docs + run: sphinx-build -E -W -b html . _build/html diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..83fc810 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,70 @@ +name: Release Actions + +on: + release: + types: [published] + +jobs: + upload-release-assets: + runs-on: ubuntu-latest + steps: + - name: Dump GitHub context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - name: Translate Repo Name For Build Tools filename_prefix + id: repo-name + run: | + echo ::set-output name=repo-name::$( + echo ${{ github.repository }} | + awk -F '\/' '{ print tolower($2) }' | + tr '_' '-' + ) + - name: Set up Python 3.6 + uses: actions/setup-python@v1 + with: + python-version: 3.6 + - name: Versions + run: | + python3 --version + - uses: actions/checkout@v1 + with: + submodules: true + - name: Install deps + run: | + sudo apt-get install -y gettext + pip install -r requirements.txt + pip install circuitpython-build-tools Sphinx sphinx-rtd-theme + - name: Build assets + run: circuitpython-build-bundles --filename_prefix ${{ steps.repo-name.outputs.repo-name }} --library_location . + - name: Upload Release Assets + # the 'official' actions version does not yet support dynamically + # supplying asset names to upload. @csexton's version chosen based on + # discussion in the issue below, as its the simplest to implement and + # allows for selecting files with a pattern. + # https://github.com/actions/upload-release-asset/issues/4 + #uses: actions/upload-release-asset@v1.0.1 + uses: csexton/release-asset-action@master + with: + pattern: "bundles/*" + github-token: ${{ secrets.GITHUB_TOKEN }} + + upload-pypi: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.pypi_username }} + TWINE_PASSWORD: ${{ secrets.pypi_password }} + run: | + python setup.py sdist + twine upload dist/* diff --git a/.gitignore b/.gitignore index cc3d3f4..e63dd38 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,4 @@ dist/ _build/ __pycache__ .env -build* bundles diff --git a/.travis.yml b/.travis.yml deleted file mode 100755 index fe3e568..0000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -# This is a common .travis.yml for generating library release zip files for -# CircuitPython library releases using circuitpython-build-tools. -# See https://github.com/adafruit/circuitpython-build-tools for detailed setup -# instructions. - -dist: trusty -sudo: false -language: python -python: -- '3.6' -cache: - pip: true -deploy: -- provider: releases - api_key: "$GITHUB_TOKEN" - file_glob: true - file: "$TRAVIS_BUILD_DIR/bundles/*" - skip_cleanup: true - overwrite: true - on: - tags: true -- provider: pypi - user: adafruit-travis - password: - secure: rt83XuW2Dp8ClebsiVRXLEL0FTS2pJf5POM3R+4S6OCT8nFcb30Ipc0WFMFipNn+tpPPMpSmrscC/on6CBR244BoZyL4Ipbkosz1u9IHOfPSubrii7JlJ7bFrVvg/wYqtYuodED5EIWlrtPNWcfMnMfjOHzlBX/lrjQa6ZLXyNP1HaiBsmCsom/br/SxifHuPWy+KIQZCvv97sFZlzmLk+8mhOUm2y18FDFgQJ4o9qXehuJlrmCoI84RChrHIFG/9G97PmJS0g52B0nidI6YHaBmTsyUvkHSxB4S3xEyFA+chtpWFvu8kXjQA8pCmWYxaqrY6BVHKWt95Deu4DKyd2yRgGIb0oN0VmvRELT45/5MdVXhixu/TLRkUJxoSN0u7G4D2AmGU4TxWswCL+o1mgnulzCYfwaw4wwyEbdZNfwoC6mAM7N+UtDNNfnJepItL6UXgNZk5ZrDNofYeXe452mnHH1Mi3nTi+s3H17f9iopiX1WZZfw5MVBF+c/Wk6btF+dvav1GMjIAIeeycfFOgFWq8roRYF7OnjA1cx0w2j/t6hraj1TO4Xyfj3IObZ+I29jw6c9KAhTQPoHOSWj6DSL5l66XlH+KWArWmZvATiEtwSIzx1pK8+dM9YbmxCj/eQUmwhot1iVGXVrIyCATr48u7E9RcBbj4E2NnNBRgc= - on: - tags: true -install: -- pip install -r requirements.txt -- pip install pylint circuitpython-build-tools Sphinx sphinx-rtd-theme -- pip install --force-reinstall pylint==1.9.2 -script: -- pylint adafruit_bus_device/*.py -- ([[ ! -d "examples" ]] || pylint --disable=missing-docstring,invalid-name examples/*.py) -- circuitpython-build-bundles --filename_prefix adafruit-circuitpython-bus-device - --library_location . -- cd docs && sphinx-build -E -W -b html . _build/html && cd .. diff --git a/README.rst b/README.rst index 551efe8..73269f4 100644 --- a/README.rst +++ b/README.rst @@ -9,8 +9,8 @@ Adafruit CircuitPython BusDevice :target: https://discord.gg/nBQh6qu :alt: Discord -.. image:: https://travis-ci.com/adafruit/Adafruit_CircuitPython_BusDevice.svg?branch=master - :target: https://travis-ci.com/adafruit/Adafruit_CircuitPython_BusDevice +.. image:: https://github.com/adafruit/Adafruit_CircuitPython_BusDevice/workflows/Build%20CI/badge.svg + :target: https://github.com/adafruit/Adafruit_CircuitPython_BusDevice/actions/ :alt: Build Status The ``I2CDevice`` and ``SPIDevice`` helper classes make managing transaction state