diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index 224f824..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: Build - -on: - - push - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ['3.8', '3.9', '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 }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install tox tox-gh-actions - - name: Test with tox - run: tox - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 - if: ${{ hashFiles('coverage-py312.xml') != '' }} - with: - files: coverage-py312.xml - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 0000000..43e3f2e --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,131 @@ +name: Build + +on: + - push + - pull_request + +env: + publish-python-version: 3.12 + +jobs: + markdown_lint: + name: Markdown Lint + runs-on: ubuntu-latest + steps: + - uses: DavidAnson/markdownlint-cli2-action@v16 + with: + globs: "**/*.md" + + lint_test_build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + allow-prereleases: true + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade build + python -m pip install --upgrade tox tox-gh-actions + - name: Test with tox + run: tox + - name: Build package + run: python -m build + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions-${{ matrix.python-version }} + path: dist/ + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + if: ${{ hashFiles('coverage-py312.xml') != '' }} + with: + files: coverage-py312.xml + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + publish-to-pypi: + name: Publish to PyPI + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + needs: + - markdown_lint + - lint_test_build + environment: + name: pypi + url: https://pypi.org/p/python-didl-lite + permissions: + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions-${{ env.publish-python-version }} + path: dist/ + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + + github-release: + needs: + - publish-to-pypi + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions-${{ env.publish-python-version }} + path: dist/ + - name: Sign the dists with Sigstore + uses: sigstore/gh-action-sigstore-python@v2.1.1 + with: + inputs: >- + ./dist/*.tar.gz + ./dist/*.whl + - name: Create GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release create + '${{ github.ref_name }}' + --repo '${{ github.repository }}' + --notes "" + - name: Upload artifact signatures to GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release upload + '${{ github.ref_name }}' dist/** + --repo '${{ github.repository }}' + + publish-to-testpypi: + name: Publish to TestPyPI + runs-on: ubuntu-latest + if: github.repository == 'StevenLooman/python-didl-lite' + needs: + - markdown_lint + - lint_test_build + environment: + name: testpypi + url: https://test.pypi.org/p/python-didl-lite + permissions: + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions-${{ env.publish-python-version }} + path: dist/ + - name: Publish to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + continue-on-error: true