diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index bc9f1a25..de8989de 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,26 +1,50 @@ -name: Build and test +name: Build -on: [push] +on: + push: + branches: [main] jobs: - build: - runs-on: ubuntu-latest + build_wheels: + name: Build wheels on ${{ matrix.os }} + needs: test + runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.10", "3.11"] + os: [ubuntu-20.04, macos-11] steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + + - name: Build wheels + uses: pypa/cibuildwheel@v2.16.5 + # env: + # CIBW_SOME_OPTION: value + # ... with: - python-version: ${{ matrix.python-version }} - cache: "pip" # caching pip dependencies - cache-dependency-path: "**/pyproject.toml" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install .[dev] - - name: Test with pytest - run: | - pytest -m "not plot" + # package-dir: . + # output-dir: wheelhouse + config-file: "{package}/pyproject.toml" + + - uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl + + make_sdist: + name: Make SDist + runs-on: ubuntu-latest + needs: build_wheels + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Optional, use if you use setuptools_scm + submodules: false # Optional, use if you have submodules + + - name: Build SDist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v4 + with: + name: cibw-sdist + path: dist/*.tar.gz diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 7f30ded1..13f6a173 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -4,6 +4,9 @@ on: push: branches: - main + tags: + - "*" + permissions: contents: write jobs: diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml deleted file mode 100644 index cb1841db..00000000 --- a/.github/workflows/lint.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: linting - -on: - pull_request: - push: - branches: [main] - -jobs: - pre-commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 - - uses: pre-commit/action@v3.0.0 diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 00000000..5a673b46 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,26 @@ +name: Publish to PyPI + +on: + push: + tags: + - "v*" + +jobs: + pypi-publish: + name: Upload release to PyPI + if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes + needs: [build_wheels, make_sdist] + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/qseek + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + steps: + - name: Download all the wheels and sdists + uses: actions/download-artifact@v3 + with: + pattern: cibw-* + path: dist/ + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..f2d35294 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,38 @@ +name: Formatting and tests + +on: + pull_request: + push: + branches: + - main + tags: + - "*" + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v3 + - uses: pre-commit/action@v3.0.1 + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" # caching pip dependencies + cache-dependency-path: "**/pyproject.toml" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + - name: Test with pytest + run: | + pytest -m "not plot"