diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 1effad9..c16175c 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -1,11 +1,31 @@ -name: ci-cd +name: CI-CD on: release: types: [published] - jobs: - build-and-publish: + build: runs-on: ubuntu-latest + permissions: + contents: read + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install hatch flake8 pytest + pip install . + + publish-test: + needs: build + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' permissions: contents: read steps: @@ -30,11 +50,37 @@ jobs: run: | python -m venv test-env . test-env/bin/activate - pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple etekcity_esf551_ble + pip install --index-url https://test.pypi.org/simple/ etekcity_esf551_ble python -c "from etekcity_esf551_ble import EtekcitySmartFitnessScale, WeightUnit; print(EtekcitySmartFitnessScale, WeightUnit)" - - name: Publish to PyPI + + publish-prod: + needs: [build, publish-test] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build twine + - name: Build package + run: python -m build + - name: Upload to PyPI env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | twine upload dist/* + - name: Upload Release Assets + uses: actions/upload-release-asset@v3 + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./dist/* + asset_name: ${{ github.ref_name }}-package + asset_content_type: application/zip \ No newline at end of file