Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial release workflow #40

Merged
merged 7 commits into from
Jan 29, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/actions/setup-python-env/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Setup Python env
description: Install Python & Hatch
inputs:
python-version:
description: 'Version of Python to Install'
required: true
default: '3.9'
runs:
using: "composite"
steps:
- name: "Set up Python ${{ inputs.python-version }}"
uses: actions/setup-python@v4
with:
python-version: "${{ inputs.python-version }}"

- name: Install Hatch
shell: bash
run: |
python -m pip install --user --upgrade pip
python -m pip install hatch
58 changes: 58 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Release

on:
workflow_dispatch:
inputs:
deploy-to:
type: choice
description: Choose where to publish (test/prod)
options:
- PypiProd
- PypiTest
default: PypiTest

permissions: read-all

defaults:
run:
shell: bash

# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }}
cancel-in-progress: true

jobs:

release:
name: PyPI - ${{ inputs.deploy-to }}
runs-on: ubuntu-latest
environment:
name: ${{ inputs.deploy-to }}
url: ${{ vars.PYPI_URL }}
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: "Set up Python & Hatch - 3.11"
uses: ./.github/actions/setup-python-env
with:
python-version: "3.11"

- name: Build artifacts
run: hatch build
shell: bash

- name: Check artifacts
run: hatch run build:check-all
shell: bash
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved

- name: Publish artifacts to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved
with:
repository-url: https://test.pypi.org/legacy/
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ lint:

.PHONY: proto_types
proto_types: ## generates google protobuf python file from types.proto
protoc -I=./dbt/common/events --python_out=./dbt/common/events ./dbt/common/events/types.proto
protoc -I=./dbt_common/events --python_out=./dbt_common/events ./dbt_common/events/types.proto
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved

.PHONY: help
help: ## Show this help message.
Expand Down
97 changes: 47 additions & 50 deletions dbt_common/events/types_pb2.py
MichelleArk marked this conversation as resolved.
Show resolved Hide resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,27 @@ dependencies = [
"types-PyYAML~=6.0",
]

[tool.hatch.envs.build]
detached = true
features = ["build"]

[tool.hatch.envs.build.scripts]
check-all = [
"- check-wheel",
"- check-sdist",
]
check-wheel = [
"twine check dist/*",
"find ./dist/dbt_common-*.whl -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/",
"pip freeze | grep dbt-common",
]
check-sdist = [
"check-wheel-contents dist/*.whl --ignore W007,W008",
"find ./dist/dbt_common-*.gz -maxdepth 1 -type f | xargs python -m pip install --force-reinstall --find-links=dist/",
"pip freeze | grep dbt-common",
]
protobuf = "protoc -I=./dbt_common/events --python_out=./dbt_common/events ./dbt_common/events/types.proto"

[tool.ruff]
line-length = 120
select = [
Expand Down