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

feat: Support poetry_version input to specify Poetry tool version #197

Merged
merged 1 commit into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all 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
10 changes: 8 additions & 2 deletions .github/workflows/sdk-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ on:
required: false
type: string
default: "5.x"
poetry_version:
description: "The version of poetry to use"
required: false
type: string
target:
description: "The specific target to publish"
required: false
Expand Down Expand Up @@ -154,11 +158,13 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
python-version: "3.9"
- name: Install poetry
run: |
curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.8.3 python3 -
curl -sSL https://install.python-poetry.org | python3 -
poetry --version
env:
POETRY_VERSION: ${{ inputs.poetry_version }}
- name: Check for publish.sh
id: check-publish
run: |
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/workflow-executor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ on:
description: "Version of pnpm to install. Not recommended for use without consulting Speakeasy support."
required: false
type: string
poetry_version:
description: "Version of poetry to install. Not recommended for use without consulting Speakeasy support."
required: false
type: string
secrets:
github_access_token:
description: A GitHub access token with write access to the repo
Expand Down Expand Up @@ -208,6 +212,7 @@ jobs:
set_version: ${{ inputs.set_version }}
cli_environment_variables: ${{ inputs.environment }}
pnpm_version: ${{ inputs.pnpm_version }}
poetry_version: ${{ inputs.poetry_version }}
- uses: ravsamhq/notify-slack-action@v2
if: ${{ steps.check-label.outputs.short_circuit_label_trigger != 'true' && env.SLACK_WEBHOOK_URL != '' }}
with:
Expand Down Expand Up @@ -257,11 +262,13 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
python-version: "3.9"
- name: Install poetry
run: |
curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.8.3 python3 -
curl -sSL https://install.python-poetry.org | python3 -
poetry --version
env:
POETRY_VERSION: ${{ inputs.poetry_version }}
- name: Check for publish.sh
id: check-publish
run: |
Expand Down
6 changes: 1 addition & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,7 @@ RUN apk add git
RUN apk add --update --no-cache nodejs npm

### Install Python
RUN apk add --update --no-cache python3 py3-pip python3-dev

### Install Poetry and validate
RUN apk add --update --no-cache poetry
RUN poetry --version
RUN apk add --update --no-cache python3 py3-pip python3-dev pipx

### Install Java
RUN apk add --update --no-cache openjdk11 gradle
Expand Down
4 changes: 4 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ inputs:
pnpm_version:
description: "Version of pnpm to install. Not recommended for use without consulting Speakeasy support."
required: false
poetry_version:
description: "Version of poetry to install. Not recommended for use without consulting Speakeasy support."
required: false
outputs:
publish_python:
description: "Whether the Python SDK will be published to PyPi"
Expand Down Expand Up @@ -199,3 +202,4 @@ runs:
- ${{ inputs.set_version }}
- ${{ inputs.cli_environment_variables }}
- ${{ inputs.pnpm_version }}
- ${{ inputs.poetry_version }}
22 changes: 22 additions & 0 deletions internal/actions/setup_environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ import (
// publishing, then an input (pnpm_version in this case) should be set to a
// non-empty value and this logic will install the dependency.
func SetupEnvironment() error {
if err := installPoetry(); err != nil {
return err
}

if pnpmVersion := environment.GetPnpmVersion(); pnpmVersion != "" {
pnpmPackageSpec := "pnpm@" + pnpmVersion
cmd := exec.Command("npm", "install", "-g", pnpmPackageSpec)
Expand All @@ -24,3 +28,21 @@ func SetupEnvironment() error {

return nil
}

// Installs poetry using pipx. If the INPUT_POETRY_VERSION environment variable
// is set, it will install that version.
func installPoetry() error {
poetrySpec := "poetry"

if poetryVersion := environment.GetPoetryVersion(); poetryVersion != "" {
poetrySpec = "poetry==" + poetryVersion
}

cmd := exec.Command("pipx", "install", poetrySpec)

if err := cmd.Run(); err != nil {
return fmt.Errorf("error installing poetry: %w", err)
}

return nil
}
4 changes: 4 additions & 0 deletions internal/environment/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,10 @@ func GetOpenAPIDocAuthToken() string {
return os.Getenv("INPUT_OPENAPI_DOC_AUTH_TOKEN")
}

func GetPoetryVersion() string {
return os.Getenv("INPUT_POETRY_VERSION")
}

func GetPnpmVersion() string {
return os.Getenv("INPUT_PNPM_VERSION")
}
Expand Down
Loading