From f6c2940e602db84933879842f65fc998515def79 Mon Sep 17 00:00:00 2001 From: Jothi Prakash Date: Mon, 18 Nov 2024 10:11:39 +0530 Subject: [PATCH] Setting up github actions for SQLAlachemy v1 (#8) * Modified example.py * workflow dispatch * Added github workflows * Updated publishing to test pypi * Check * Check * Check * Check * Check * Check * Check * Check * Fixed the github actions not working issue * Ignore imports in mypy * Minor fix * Minor fix --- .github/workflows/code-quality-checks.yml | 1 + .github/workflows/dco-check.yml | 25 +++++++++ .github/workflows/publish-test.yml | 62 +++++++++++++++++++++ .github/workflows/publish.yml | 65 +++++++++++++++++++++++ pyproject.toml | 2 + src/databricks/__init__.py | 0 6 files changed, 155 insertions(+) create mode 100644 .github/workflows/dco-check.yml create mode 100644 .github/workflows/publish-test.yml create mode 100644 .github/workflows/publish.yml create mode 100644 src/databricks/__init__.py diff --git a/.github/workflows/code-quality-checks.yml b/.github/workflows/code-quality-checks.yml index 468343d..2f23e0d 100644 --- a/.github/workflows/code-quality-checks.yml +++ b/.github/workflows/code-quality-checks.yml @@ -6,6 +6,7 @@ on: pull_request: branches: - v1/main + workflow_dispatch: jobs: check-linting: runs-on: ubuntu-latest diff --git a/.github/workflows/dco-check.yml b/.github/workflows/dco-check.yml new file mode 100644 index 0000000..dbe9669 --- /dev/null +++ b/.github/workflows/dco-check.yml @@ -0,0 +1,25 @@ +name: DCO Check + +on: [pull_request] + +jobs: + check: + runs-on: ubuntu-latest + steps: + - name: Check for DCO + id: dco-check + uses: tisonkun/actions-dco@v1.1 + - name: Comment about DCO status + uses: actions/github-script@v6 + if: ${{ failure() }} + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `Thanks for your contribution! To satisfy the DCO policy in our \ + [contributing guide](https://github.com/databricks/databricks-sqlalchemy/blob/main/CONTRIBUTING.md) \ + every commit message must include a sign-off message. One or more of your commits is missing this message. \ + You can reword previous commit messages with an interactive rebase (\`git rebase -i main\`).` + }) diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml new file mode 100644 index 0000000..520cfbb --- /dev/null +++ b/.github/workflows/publish-test.yml @@ -0,0 +1,62 @@ +name: Publish to PyPI [Test] +on: [push] +jobs: + test-pypi: + name: Create patch version number and push to test-pypi + runs-on: ubuntu-latest + steps: + #---------------------------------------------- + # check-out repo and set-up python + #---------------------------------------------- + - name: Check out repository + uses: actions/checkout@v2 + - name: Set up python + id: setup-python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + #---------------------------------------------- + # ----- install & configure poetry ----- + #---------------------------------------------- + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + #---------------------------------------------- + # load cached venv if cache exists + #---------------------------------------------- + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v2 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }} + #---------------------------------------------- + # install dependencies if cache does not exist + #---------------------------------------------- + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction --no-root + #---------------------------------------------- + # Get the current version and increment it (test-pypi requires a unique version number) + #---------------------------------------------- + - name: Get next version + uses: reecetech/version-increment@2022.2.4 + id: version + with: + scheme: semver + increment: patch + #---------------------------------------------- + # Tell poetry to update the version number + #---------------------------------------------- + - name: Update pyproject.toml + run: poetry version ${{ steps.version.outputs.major-version }}.${{ steps.version.outputs.minor-version }}.dev$(date +%s) + + - name: Build and publish to pypi + uses: JRubics/poetry-publish@v1.10 + with: + pypi_token: ${{ secrets.SQLALCHEMY_TEST_PYPI_TOKEN }} + repository_name: "testpypi" + repository_url: "https://test.pypi.org/legacy/" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..970229c --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,65 @@ +name: Publish to PyPI [Production] +on: + release: + types: [published] +jobs: + publish: + name: Publish + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/v1/main' + steps: + #---------------------------------------------- + # check-out repo and set-up python + #---------------------------------------------- + - name: Check out repository + uses: actions/checkout@v2 + - name: Set up python + id: setup-python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + #---------------------------------------------- + # ----- install & configure poetry ----- + #---------------------------------------------- + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + #---------------------------------------------- + # load cached venv if cache exists + #---------------------------------------------- + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v2 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }} + #---------------------------------------------- + # install dependencies if cache does not exist + #---------------------------------------------- + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction --no-root + #------------------------------------------------------------------------------------------------ + # Here we use version-increment to fetch the latest tagged version (we won't increment it though) + #------------------------------------------------------------------------------------------------ + - name: Get next version + uses: reecetech/version-increment@2022.2.4 + id: version + with: + scheme: semver + increment: patch + #----------------------------------------------------------------------------- + # Tell poetry to use the `current-version` that was found by the previous step + #----------------------------------------------------------------------------- + - name: Update pyproject.toml + run: poetry version ${{ steps.version.outputs.current-version }} + #---------------------------------------------- + # Attempt push to test-pypi + #---------------------------------------------- + - name: Build and publish to pypi + uses: JRubics/poetry-publish@v1.10 + with: + pypi_token: ${{ secrets.SQLALCHEMY_PROD_PYPI_TOKEN }} diff --git a/pyproject.toml b/pyproject.toml index ab6ec7a..33a3a90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,3 +35,5 @@ build-backend = "poetry.core.masonry.api" [tool.black] exclude = '/(\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|thrift_api)/' +[tool.mypy] +ignore_missing_imports = true diff --git a/src/databricks/__init__.py b/src/databricks/__init__.py new file mode 100644 index 0000000..e69de29