Last active
July 29, 2024 12:51
-
-
Save blu3r4y/0e316bacca5a55f37acb3258a5465b1b to your computer and use it in GitHub Desktop.
GitHub action to activate a Poetry environment for subsequent steps
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: setup-poetry | |
on: | |
push: | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Setup Poetry | |
run: | | |
curl -sSL https://install.python-poetry.org | python3 - | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Install dependencies | |
run: poetry install | |
- name: Active environment | |
shell: bash | |
run: | | |
source $(poetry env info --path)/bin/activate | |
echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH | |
echo "PYTHONHOME=" >> $GITHUB_ENV |
Hi @blu3r4y
I'm happy that I can contribute with others readers using your Gist, thanks.
I have a project that uses exactly this script structure, if you are interested in seeing how this works in the real world, here it is...
https://github.com/IvanildoBarauna/api-to-dataframe
Workflow and line is: https://github.com/IvanildoBarauna/api-to-dataframe/blob/main/.github/workflows/CI.yaml#L25-L30
The following project below also has similar needs, but uses another method with python's "venv"
https://github.com/IvanildoBarauna/ETL-awesome-api
Workflow and line: https://github.com/IvanildoBarauna/ETL-awesome-api/blob/main/.github/workflows/CI-CD.yaml#L28-L36
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks @IvanildoBarauna for the suggestion, that is a great trick.
I partially remember that the crucial pieces of my previous Gist were about sourcing to
GITHUB_PATH
andGITHUB_ENV
because without that I had issues when trying to directly call scripts, python packages, and even the poetry binary. I have no system right now to test your script against that, but future readers might.