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

adding prod and dev requirements for the backend #476

Merged
merged 6 commits into from
Oct 24, 2023

Conversation

to-sta
Copy link
Collaborator

@to-sta to-sta commented Oct 18, 2023

Contributor checklist


Description

In this PR, I seperated development requirements and production requirements for the backend with pip-tools. I adjusted the backend workflow/dockerfile to use the development requirements (requirements-dev.txt).

General setup for this, min. requirements are in requirements.in and additional req. for the develpment are in requirements-dev.in. They are compiled to requirements.txt and requiements-dev.txt (including referenced packages).

For example the djangorestframework is part of the requirements.in file and when compiled will reference necessary packages via comment in the requirements.txt file.

pytz==2023.3.post1
    # via djangorestframework

I have tested to run docker-compose up --build with both requirements.

Before we consider merging this, we should update the readme and/or contrib. guide 😄. Mention how to use pip-tools, pip-compile and pip-sync.

Related issue

@github-actions
Copy link
Contributor

github-actions bot commented Oct 18, 2023

Thank you for the pull request!

The activist team will do our best to address your contribution as soon as we can. The following is a checklist for maintainers to make sure this process goes as well as possible. Feel free to address the points below yourself in further commits if you realize that actions are needed :)

If you're not already a member of our public Matrix community, please consider joining! We'd suggest using Element as your Matrix client, and definitely join the General and Development rooms once you're in. It'd be great to have you!

Maintainer checklist

  • The commit messages for the remote branch should be checked to make sure the contributor's email is set up correctly so that they receive credit for their contribution

    • The contributor's name and icon in remote commits should be the same as what appears in the PR
    • If there's a mismatch, the contributor needs to make sure that the email they use for GitHub matches what they have for git config user.email in their local activist repo
  • The TypeScript and formatting workflows within the PR checks do not indicate new errors in the files changed

  • The CHANGELOG has been updated with a description of the changes for the upcoming release (if necessary)

@netlify
Copy link

netlify bot commented Oct 18, 2023

Deploy Preview for activist-org canceled.

Name Link
🔨 Latest commit 2d76e7a
🔍 Latest deploy log https://app.netlify.com/sites/activist-org/deploys/6537ac5bfcee76000856ca3b

@andrewtavis andrewtavis self-requested a review October 18, 2023 14:39
@andrewtavis andrewtavis added the hacktoberfest-accepted Accepted as a part of Hacktoberfest label Oct 18, 2023
@andrewtavis
Copy link
Member

Let's discuss this in the dev sync, @to-sta, and then we can finalize the readme/contributing guide :) Feel free to send along an idea of what the changes to those should be though!

@to-sta
Copy link
Collaborator Author

to-sta commented Oct 21, 2023

@andrewtavis made a description here about the seperation of production and development. I am not sure where to place it in the contrib. guide. It's relevant when we need to switch between prod and dev and for installing new packages or testing.

In our backend development, we maintain a clean and efficient environment by separating production and development requirements. This is achieved using pip-tools, a set of command line tools designed to keep our pip-based packages fresh, even when we’ve pinned them.

We create two different requirement files: requirements.in for production and requirements-dev.in for development. The production requirements contain the packages that our project needs to run, while the development requirements include additional packages necessary for testing, linting, and other backend development processes.

To compile these .in files into .txt files that pip can understand, we use the pip-compile command from pip-tools. This creates requirements.txt and requirements-dev.txt, which are used to install packages in their respective environments.

To transition between the production and development environments, you can simply use the following commands:

For the production environment:

pip-sync requirements.txt

For the development environment:

pip-sync dev-requirements.txt

Let me know what you think?

@andrewtavis
Copy link
Member

Can you fix the merge conflict here @to-sta and I'll merge it in? :)

@to-sta
Copy link
Collaborator Author

to-sta commented Oct 24, 2023

Merge conflict is resolved and I also added django-cors-headers to the requirements.in and requirements.txt file. That was still missing. The mypy step in the ci_backend check discovered the missing package 😃

Copy link
Member

@andrewtavis andrewtavis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for this, @to-sta! I keep on saying that the dev setup is getting so good and then it keeps getting better! 😊🚀

@andrewtavis andrewtavis merged commit be55387 into activist-org:main Oct 24, 2023
6 checks passed
@to-sta to-sta deleted the sepDevProd branch April 21, 2024 10:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hacktoberfest-accepted Accepted as a part of Hacktoberfest
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants