diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml new file mode 100644 index 0000000..ba7aa49 --- /dev/null +++ b/.github/workflows/build-and-publish.yml @@ -0,0 +1,61 @@ +name: Build and Publish + +on: + push: + tags: + - 'v*' + branches: + - main + pull_request: + branches: + - main + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.17 + + - name: Set up PDM + uses: pdm-project/setup-pdm@568ddd69406b30de1774ec0044b73ae06e716aa4 # v4.1 + with: + python-version: '3.11' + + - name: Install dependencies + run: | + pdm sync --prod + + - name: Build distributions + run: | + pdm build + + - name: Upload artifact + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4 + with: + name: build-artifacts + path: dist/ + + publish: + runs-on: ubuntu-latest + needs: build + if: github.event_name == 'release' + steps: + - name: Download artifact + uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + with: + name: build-artifacts + + - name: Publish to GitHub Release + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8 + with: + files: | + dist/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Verify Release + run: | + echo "Published release for tag ${{ github.ref }}." \ No newline at end of file