From ddc043da2abeb9d5490fab74e181addfdbf62487 Mon Sep 17 00:00:00 2001 From: Michael Bianco Date: Fri, 18 Aug 2023 08:59:37 -0600 Subject: [PATCH] ci: automatically build and publish package --- .github/workflows/build-and-release.yml | 72 +++++++++++++++++++++++++ .tool-versions | 1 + 2 files changed, 73 insertions(+) create mode 100644 .github/workflows/build-and-release.yml create mode 100644 .tool-versions diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml new file mode 100644 index 0000000..0e4bec5 --- /dev/null +++ b/.github/workflows/build-and-release.yml @@ -0,0 +1,72 @@ +# .github/workflows/build_and_publish.yml + +name: Build and Publish to PyPI +on: + push: + branches: + - master + +# by default, permissions are read-only, read + write is required for git pushes +permissions: + contents: write + +jobs: + build-and-publish: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: ASDF Parse + uses: kota65535/github-asdf-parse-action@v1.1.0 + id: versions + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "${{ steps.versions.outputs.python }}" + + - name: Install Poetry + uses: Gr1N/setup-poetry@v8 + with: + poetry-version: "${{ steps.versions.outputs.poetry }}" + + - name: Install dependencies + run: | + poetry install + + - name: Make sure it runs + run: | + poetry run gmail-draft-creator --help + + - name: Conventional Changelog Action + id: changelog + uses: TriPSs/conventional-changelog-action@v3 + with: + github-token: ${{ secrets.github_token }} + version-file: "./pyproject.toml" + version-path: "tool.poetry.version" + fallback-version: "1.0.0" + output-file: "CHANGELOG.md" + + # NOTE must run after versioning otherwise the right version won't be pushed + - name: Build distribution package + if: ${{ steps.changelog.outputs.skipped == 'false' }} + run: | + poetry build + + - name: Publish to PyPI + if: ${{ steps.changelog.outputs.skipped == 'false' }} + run: | + # `gh secret set PYPI_API_TOKEN --app actions --body $PYPI_API_TOKEN` + poetry publish -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} + + - name: Github Release + if: ${{ steps.changelog.outputs.skipped == 'false' }} + uses: softprops/action-gh-release@v1 + with: + # output options: https://github.com/TriPSs/conventional-changelog-action#outputs + body: ${{ steps.changelog.outputs.clean_changelog }} + tag_name: ${{ steps.changelog.outputs.tag }} \ No newline at end of file diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..c10ee4e --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +python 3.11.4