diff --git a/.github/workflows/action-conda-publish.yml b/.github/workflows/action-conda-publish.yml new file mode 100644 index 0000000000..c2aa1e40ee --- /dev/null +++ b/.github/workflows/action-conda-publish.yml @@ -0,0 +1,85 @@ +name: Anaconda Publish + +on: + release: + types: [published] + # use this to test before actual release and publish + push: + branches: + - master + +jobs: + + publish: + name: publish / python-3.8 / ubuntu-latest + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@v2 + - uses: goanpeca/setup-miniconda@v1 + with: + auto-update-conda: true + python-version: "3.8" + miniconda-version: "latest" + channels: conda-forge + - name: Show conda config + shell: bash -l {0} + run: | + conda info + conda list + conda config --show-sources + conda config --show + - name: Python info + shell: bash -l {0} + run: | + which python + python --version + - name: Install build dependencies + shell: bash -l {0} + run: conda install -y conda-build conda-verify ripgrep anaconda-client + - name: Build the conda package + shell: bash -l {0} + run: | + conda config --set anaconda_upload no + export BUILD_FOLDER=/tmp/esmvaltool/_build + mkdir -p $BUILD_FOLDER + conda build package \ + --channel esmvalgroup --channel conda-forge \ + --croot $BUILD_FOLDER \ + - name: Push the package to anaconda cloud + if: startsWith(github.ref, 'refs/tags') + shell: bash -l {0} + run: | + export BUILD_FOLDER=/tmp/esmvaltool/_build + # use --label test before actual release and check all works well + anaconda --token ${{ secrets.ANACONDA_TOKEN }} upload --user esmvalgroup $BUILD_FOLDER/noarch/*.tar.bz2 + verify: + name: verify / python-${{ matrix.python-version }} / ${{ matrix.os }} + if: startsWith(github.ref, 'refs/tags') + strategy: + fail-fast: false + matrix: + os: ['ubuntu-latest'] # may extent to osx in the future + python-version: ["3.6", "3.7", "3.8"] + runs-on: ${{ matrix.os }} + needs: publish + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: "0" + - uses: goanpeca/setup-miniconda@v1 + with: + python-version: ${{ matrix.python-version }} + miniconda-version: "latest" + channels: esmvalgroup,conda-forge + - shell: bash -l {0} + run: conda --version + - shell: bash -l {0} + run: which conda + - shell: bash -l {0} + run: python -V + - shell: bash -l {0} + run: conda install esmvaltool + - shell: bash -l {0} + run: esmvaltool --help + - shell: bash -l {0} + run: esmvaltool version diff --git a/.github/workflows/action-pypi-build-and-deploy.yml b/.github/workflows/action-pypi-build-and-deploy.yml new file mode 100644 index 0000000000..2d56717697 --- /dev/null +++ b/.github/workflows/action-pypi-build-and-deploy.yml @@ -0,0 +1,48 @@ +name: PyPi Build and Deploy 🐍📦 + +on: + release: + types: [published] + # use this for testing + push: + branches: + - master + +jobs: + build-n-publish: + name: Build and publish ESMValTool on PyPi + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Set up Python 3.8 + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Install pep517 + run: >- + python -m + pip install + pep517 + --user + - name: Build a binary wheel and a source tarball + run: >- + python -m + pep517.build + --source + --binary + --out-dir dist/ + . + # Publish on Test PyPi; uncomment to test + # and remember to adjust the triggers above + # - name: Publish distribution 📦 to Test PyPI + # uses: pypa/gh-action-pypi-publish@master + # with: + # password: ${{ secrets.test_pypi_password }} + # repository_url: https://test.pypi.org/legacy/ + + # Publish on PyPi + - name: Publish distribution 📦 to PyPI + if: startsWith(github.ref, 'refs/tags') + uses: pypa/gh-action-pypi-publish@master + with: + password: ${{ secrets.pypi_password }} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..121a39f5f2 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools >= 40.6.0", "wheel"] +build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index bd22c5825d..135d35a5c7 100755 --- a/setup.py +++ b/setup.py @@ -8,7 +8,8 @@ from setuptools import Command, setup -from esmvaltool import __version__ +sys.path.insert(0, os.path.dirname(__file__)) +from esmvaltool import __version__ # noqa: E402 PACKAGES = [ 'esmvaltool',