Commit Graph

81 Commits

Author SHA1 Message Date
Tim McCormack
3fdb435be2 build: Fix common-constraints override to prevent doubled comment (#33271)
Sometimes this make target doubles or even triples the comment. I think
this is due to a temporary failure in the wget call, which is then ignored
and an additional comment is added onto the top. If this happens multiple
times in a row, you get multiple additions.

Removing the `|| touch` should fix this, and surface any errors that are
happening.
2023-09-18 16:32:18 +00:00
Tim McCormack
25b18e83cd build: Add missing Celery task decorators, and add CI check for it (#33154) 2023-09-15 20:03:04 +00:00
Awais Qureshi
e94af3c2d3 feat: upgrading django-simple-history without migrations. (#32880)
* feat: upgrading django-history without migrations.

* feat: upgrading django-history==3.1.1.
2023-08-07 18:09:19 +05:00
Usama Sadiq
34f9fc4ae9 fix: include new assets.txt file in make upgrade (#32860)
* fix: include new assets.txt file in make upgrade
* test: update click version to resolve upgrade job failure
* chore: Updating Python Requirements (#32861)
2023-07-27 16:03:07 +05:00
salmannawaz
e4a1039144 Docker multi-arch images push for linux/amd64, linux/arm64 (#32686)
* fix: push docker multi-arch images

---------

Co-authored-by: Salman Nawaz <salman.nawaz@A006-01081.local>
2023-07-27 14:45:07 +05:00
Feanil Patel
74887d7b46 build: Update make upgrade order.
Now that doc.txt depends on base.txt, update the order in which we run
`make upgrade` to generate the docs requirmeents file.
2023-07-17 17:22:21 -04:00
Diana Huang
e28bbe9446 feat: Add migrate Make command. (#32705)
To make edx-platform more consistent with other IDAs and to
help deprecate more of paver, we are adding the ability to
run `make migrate` in a local environment as a replacement
for `paver update_db`.

https://github.com/openedx/devstack/issues/1085
2023-07-12 12:47:23 -04:00
Feanil Patel
8c43868b52 docs: Rename swagger.yaml to lms-openapi.yaml
* Swagger was renamed to OpenAPI at some point so use the new name for
  clarity.

* Prefix with `lms` to make it clear that these are the APIs from the
  LMS and may not all be available in the CMS.
2023-06-29 15:37:10 -04:00
Feanil Patel
26262131ae docs: Remove the api docs sphinx project.
* This project was not being published anywhere.
* The previous commit that adds openapi generation capabilities to the
  `docs/guides` replaces what this was doing.
2023-06-29 15:37:10 -04:00
Kshitij Sobti
cb46eeafbe fix: Switch from echo to prinf for more consistent behaviour
In different environments echo seems to handle escape characters differently.
When generating the common constraints file, on some systems it outputs the
"\n" character as-is. This change switches echo to printf, which is supposed to
be more consistent.
2023-04-28 09:16:09 +05:30
Tim McCormack
b1f8b9339a build: Add upgrade-package Make target and workflow (#32131)
This adds a Make target that should simplify the common task of
upgrading a single dependency. Sometimes people manually edit the pin
files, which we would like to avoid; hopefully this will make it
easier for them to do the right thing.

The GitHub workflow should also make it easier for people on Mac to
recompile requirements in a Linux environment, reducing the number of
times spurious dependency changes show up in the pin files (due to
OS-dependent requirements.)

Also, separate upgrade/downgrade instructions and simplify the latter.
(Min constraints are rare and we usually move beyond them quickly.)
2023-04-27 13:44:47 +00:00
Tim McCormack
b852344fcf build: Deduplicate mismatched pip.txt files that caused build failure (#32081)
There was a `requirements/pip.txt` with old versions, and a newer
`requirements/edx/pip.txt` managed via a `pip.in` file. The old one was
used in most places, but came out of sync with pip-tools.txt, which was
managed properly. Eventually this caused a `pip check` failure due to the
mismatch.

This should resolve at least part of https://github.com/edx/edx-arch-experiments/issues/267

This PR moves pip.in and pip-tools.in and their corresponding pin files
up to the `requirements/` dir, since they should be shared between the edx
and sandbox environments. This also has the effect of upgrading pip to
match the version in the file we've been uselessly upgrading.

Other improvements:

- Remove `-q` option from pip and pip-sync calls, as it was hiding some
  debugging information that would have resolved this sooner.
- Depend on `pre-requirements` from `compile-requirements`, rather than
  from `upgrade`. (The base target is the one that actually needs it.)
  This also lets us remove the explicit `pip install pip-tools` line.
- Install the recompiled pip and pip-tools files right away, not after the
  loop. When we upgrade pip-tools, we want to use the upgraded version,
  not the previous version. This requires moving the pip-tools.txt
  recompilation outside of the loop and into its own explicit line.
- Don't upgrade pip if we're not running `make upgrade` (respect the
  compile options).
- Remove apparently-unneeded `--no-emit-trusted-host --no-emit-index-url`
  options (we don't pass trusted-host or index-url options).
2023-04-17 17:21:48 +00:00
Usama Sadiq
73917a9b46 fix: remove local setuptools override (#31649) 2023-01-25 11:42:26 +05:00
Usama Sadiq
13d4b892f5 fix: remove setuptools constraint (#31647)
* fix: skip global setuptools constraint
2023-01-24 15:43:54 +05:00
Tim McCormack
b8a34f0c57 build: Set Django version for tests more safely; drop support for non-GHA (#31387)
We have a need to lock the version of Django for production and tests, but
also to test on newer versions of Django so that we can get the repo ready
for long-term-support releases.

We've been doing that by extracting the `django==x.y.z` from the
pip-compiled files and moving it to a django.txt that is then co-installed
but can be overridden during tests. The problem is that this can result
in broken packages.

The approach here is to have `make test-requirements` continue to
ensure a consistent set of packages, and then install a different
Django on top of that in the CI script -- and call `pip check` to make
sure that combination isn't broken.

Adding Django 4.0 to the unit-tests.yml matrix will now correctly
result in this error and a failing job:
`django-splash 1.2.1 has requirement Django<4.0, but you have django 4.0.8.`

The other half of this is to change other CI runners to remove their
ability to control the Django version, since it's complicated to make
this work, and we probably only need it in unit-tests.yml. Convert them
to just use `make test-requirements`.

Also:

- Simplify handling of `pip --src` by setting `PIP_SRC` (rather than our
  own `PIP_SRC_DIR`, which pip ignores because `--src-dir` isn't an option
  that it knows). This is needed to allow `make test-requirements` to do
  the pip calls. An alternative would be to set a pip-options env var for
  the make target to use, but `PIP_SRC` already exists.
- Remove outdated modifications to common_constraints
- Add comment explaining why pylint tests need dev-requirements
2022-12-12 21:45:15 +00:00
Muhammad Umar Khan
9c279444df build: add import linter check (#31062)
* build: add import linter check
2022-12-07 12:07:09 +05:00
alangsto
b1c9482371 fix: update docker build command now that image targets have changed (#31404) 2022-12-06 09:38:44 -05:00
Feanil Patel
7b7022ba54 feat: Add a target for ubuntu requirements.
I found this useful because then I can run some basic dev commands
locally instead of needing a full container environment just to run
pylint or other basic dev tasks.

Co-authored-by: Kyle McCormick <kdmc@pm.me>
2022-11-28 14:39:59 -05:00
Usama Sadiq
605a0a66e7 Install pip and pip tools (#31206)
* fix: install pip & pip-tools in make upgrade
* chore: Updating Python Requirements (#31205)

Co-authored-by: edX requirements bot <49161187+edx-requirements-bot@users.noreply.github.com>
2022-11-03 16:28:32 +05:00
Tim McCormack
2edbdcf7f4 build: Clear out stale dependencies when installing requirements (#31080)
We've been seeing some cross-version caching issues in the
edx-platform-runner unit tests, which apparently run on a "dirty"
environment—the virtualenv does not get cleared out between runs,
which probably improves performance but allows installed dependencies
to "leak" between runs. This results in errors between master and older
open-releases but could also prevent us from noticing missing deps.

By using pip-sync in the new CI Make targets (as we already do for
the regular `make requirements` target) we can ensure that any stale
dependencies from runs by other branches (or older versions of the
code) are removed.

Calling `make local-requirements` at the end of each `*-requirements`
target rather than making it a prerequisite is necessary for using sync,
since otherwise the local reqs would be wiped out.

The `requirements` target is also deduplicated into the newer
`dev-requirements` (aliased to it, with both installing private deps now.)

Adding a prerequisite of `pre-requirements` allows us to simplify some
workflow calls slightly. This ends up being the bulk of the commit by
line count. The pip lockfile also wasn't being used in the Makefile, so
I added that to pre-requirements as well.

Also fix leading whitespace issue in Makefile.
2022-10-03 20:26:40 +00:00
UsamaSadiq
897cb3617f refactor!: delete common/lib and related usages 2022-09-22 14:16:34 +05:00
Rebecca Graber
fc3da9185b feat: increase logging level for i18n_tool in pull_translations (#30037) 2022-03-10 14:18:56 -05:00
Kyle McCormick
29ed3d911a build: expose working openedx/lms and openedx/cms docker images (#29549)
This commits prepares edx-platform's experimental Dockerfile
for optional use in devstack. Presently, the image built by this
Dockerfile isn't used anywhere.

Notable changes:
* Drop the openedx/edx-platform image name in favor of
  openedx/lms and openedx/cms.
* Drop the newrelic stages and tags.
* Create openedx/lms-dev and openedx/cms-dev image
  variants which use Django devserver, install dev
  requirements, and specify devstack Django settings.
* Add config files at (lms,cms)/envs/devstack-experimental.yml,
  extracted from the existing edxapp docker image.
* Adds three new scripts, each of which replaces an Ansible
  or Paver-supported function with a pure bash + Django
  management command implementation.
2022-01-10 11:20:10 -05:00
Ned Batchelder
84b5d8dd28 build: keep Makefile comments from appearing while running make (#29669)
These comments are meant for the Makefile maintainers to read, not the
user running make.  We can prefix them with @ to keep make from echoing
them while running.
2021-12-22 15:52:22 -05:00
Usama Sadiq
5a6d056568 build: remove python 3.5 requirement files (#29070) 2021-10-20 15:59:35 +05:00
Soban Javed
8fbee9c23f feat: upgrade Django version to 3.2
Removing samesite cookies package as we dont need this on Django 3.2
2021-10-14 15:43:10 +05:00
Soban Javed
c40fb1e129 refactor: remove pyjwt related temporary solution
As we have upgraded pyjwt in edx-platform and also removed these pins from common constraint files in edx-l;int, so we don't need this anymore.

https://github.com/edx/edx-lint/pull/203
2021-10-14 13:02:22 +05:00
Feanil Patel
73478561a5 Revert "feat: upgrade Django version to 3.2" 2021-10-13 15:09:36 -04:00
Soban Javed
e4379e277e feat: upgrade Django version to 3.2
- Remove django-cookie-samesite as it isn't required on Django 3.2
2021-10-08 14:47:07 +05:00
Awais Qureshi
81bf0f75c9 chore: removing drf-jwt pin and checking tests. (#28516)
* chore: removing drf-jwt pin.
2021-10-05 16:50:14 +05:00
Awais Qureshi
57a033d0ae feat: Don't Use django-cookies-samesite on Django > 3.1 2021-09-22 09:49:03 +05:00
Awais Qureshi
708dbb71ec fix: removing jango-cookies-samesite package for django32. 2021-09-20 19:01:54 +05:00
Soban Javed
56d12bf230 feat!: upgrade pyjwt to version 2.1.0 2021-09-17 16:08:15 +05:00
DawoudSheraz
e986d360c9 refactor: move course location util to common djangoapp instead of xmodule 2021-09-03 12:40:28 +05:00
Dillon Dumesnil
b18f9df299 fix: Transifex fix for local requirements during paver setup
Pull Translations has been broken in edx-platform for a number of months
partially in part because of an import issue with local packages during
paver setup. This solves that problem by running make requirements as part
of the pull_translations make target.

Note: This should not be the default behavior. This is only a patch so the
translation job works again. The paver job being run (i18n_compilejs) does
the same install before it runs so we are doubling up there which is not
great.

PROD-2455
2021-08-12 14:39:06 -04:00
M. Zulqarnain
fb86d4111b BOM-2247 - Upgrade pip-tools (#27861)
* chore: upgrade pip-tools

* replace --no-index with --no-emit-index-url

* upgrade pip

Co-authored-by: edX requirements bot <49161187+edx-requirements-bot@users.noreply.github.com>
2021-06-15 17:02:22 +05:00
Usama Sadiq
b58e27b45e refactor: setup python38 requirements for codejail environments (#27768)
separate shared requirements between platform and sandbox
move python 3.5 constraints in sandbox requirements
2021-06-07 17:50:43 +05:00
Régis Behmo
a131d63608 feat: run mypy as part of testing the codebase
The edx-platform codebase already includes quite a few type annotations, but
they were not regularly checked. This may cause problems, when the annotations
themselves include errors (as we found out in some of the learning_sequences
annotations). So here, we add mypy as a dev requirement and introduce a make
command to run mypy regularly. Mypy runs on a very small portion of the total
edx-platform, as configured in mypy.ini. Our hope is that developers will add
more and more modules to this configuration file, until we can eventually run
mypy on the full code base.

See discussion: https://discuss.openedx.org/t/dev-notes-running-mypy-on-edx-platform/4860
2021-05-27 13:54:37 -04:00
Feanil Patel
16e4aa3c62 chore: Remove decentralized devstack config.
We have decided not to pursue the decentralized devstack design right
now and so we want to cleanup files and task that were built as a part
of the process.

Related Ticket: ARCHBOM-1685
2021-04-09 15:50:03 -04:00
Ned Batchelder
981ecb675e build: private.txt files weren't handled properly
The requirements/edx/private.txt file is for dev's own private package
needs.  There are two installation mechanisms in edx-platform, and
neither handled the file properly:

- `paver install_prereqs` had the wrong file name.  The file was moved
  almost three years ago, and paver wasn't kept up.

- `make requirements` used `private.*` which included private.in, which
  pip-sync balks at.
2021-02-26 22:19:47 -05:00
Régis Behmo
14cb7b6056 Add a make target to compile requirements (without upgrade)
I grew tired of modifying the Makefile to compile requirements without
upgrading them. Also, installing pip-tools should not be part of the
compile-requirements target, so a separate target was created.
2020-10-29 22:59:52 +01:00
Michael Terry
ca75c474e1 Use verbose output when validating new translations
When running "make pull_translations", this will print any
validation errors on the console, rather than stuffing them into
a .prob file.

This helps when looking at failing jenkins log files.
2020-10-20 11:20:34 -04:00
Régis Behmo
a41f2a5ca8 Rename "featuretoggles" docs target to "technical"
We also split the feature toggle and settings docs in different pages.
2020-10-01 16:35:48 +02:00
Kyle McCormick
b24cb48eb0 Decentralized Devstack changes: Add and push Dockerfile; add decentralized devstack settings (#24666)
* Add and push Dockerfile; add decentralized devstack settings

Co-Authored-By: Diana Huang <dkh@edx.org>
Co-Authored-By: Kyle McCormick <kmccormick@edx.org>

* Remove Python requirements hack

Remove the attempted optimization to the installation of Python
package dependencies.  The dependencies in edx-platform change
about three times per day, so this was of dubious value.  And
because npm is run through nodeenv, which is a Python package,
the Python dependencies installation has to happen first.

* ARCHBOM-1439: Changing workdir to /edx/app/edxapp/edx-platform (#24835)

Context: The Dockerfile tries to stay in sych with legacy stuff.
In the ansible we configure the directory structure such that things
relating to the app but not in the codebase,
such as the env file wind up in /edx/app/edxapp/.
And the codebase winds up in /edx/app/edxapp/edx-platform.

I think due to accident, the dockerfile does
/edx/app/edx-platform/edx-platform instead of /edx/app/edxapp/edx-platform.

This commit tries to have Dockerfile more reflect what is currently happening in production

* Update ports for decentralized devstack ARCHBOM-1447 (#24841)

Switch from the LMS ports we've historically used for NGINX to those used for gunicorn, and fix the Studio ports to match the ones we've historically used for its gunicorn service. Also removed some leftover bits of the requirements hack.

Co-authored-by: Adam Blackwell <ablackwell@edx.org>
Co-authored-by: Diana Huang <dkh@edx.org>
Co-authored-by: jinder1s <msingh@edx.org>
Co-authored-by: Jeremy Bowman <jbowman@edx.org>
Co-authored-by: Manjinder Singh <49171515+jinder1s@users.noreply.github.com>
2020-09-03 11:47:08 -04:00
Robert Raposa
2c8105f7ae [BD-21] Generate feature toggle documentation
We introduce a new documentation target, where we use the featuretoggles
Sphinx extension from code-annotations to generate human-readable
documentation of feature toggles in edx-platform. The annotation report
is generated on-the-fly based on the standard feature toggle
configuration file in code-annotations.

In addition, we add new doc.in & doc.txt requirement files that will be
pip-installed by readthedocs to generate the documentation targets.
2020-08-14 19:41:26 +02:00
Cory Lee
148b90358f Add Dockerfile (#23088)
* Add Dockerfile.
* Add gunicorn config files for local development.
* Add .dockerignore file.

Co-authored-by: Joseph Mulloy <jmulloy@edx.org>
Co-authored-by: Fred Smith <derf@edx.org>
Co-authored-by: Adam Blackwell <ablackwell@edx.org>
Co-authored-by: Kyle McCormick <kmccormick@edx.org>
Co-authored-by: Nadeem Shahzad <nshahzad@edx.org>
2020-07-22 17:45:23 -04:00
Jeremy Bowman
47d15ff1a8 Update tested versions of Python and Django (#24006)
Cleaned up a few more things about the testing configuration now that we've deployed Django 2.2 to production:

* Go back to a single version of django-oauth-toolkit, tox doesn't need to vary it anymore
* Go back to PyPI release of django-method-override
* Remove no longer needed dependency on python-oauth2 (we already removed the package it was used by)
* Update prepare_xdist_nodes.sh with new Django requirements file options
2020-05-19 12:19:20 -04:00
Tim McCormack
5bb89d95c5 Revert "Revert "Fix Jenkins virtualenv issue that masked stale dependency" (#23828)" (#23866)
This reverts commit 70600d79d7.
2020-05-01 17:33:38 +00:00
Tim McCormack
70600d79d7 Revert "Fix Jenkins virtualenv issue that masked stale dependency" (#23828)
* Revert "Use pip-sync to make sure that dep cache tarball can go safely stale"

This reverts commit d435f4cd3e.

* Revert "Extract worker setup into own shell script, as much as possible"

This reverts commit 0a079e757c.
2020-04-29 02:15:57 +00:00
Tim McCormack
d435f4cd3e Use pip-sync to make sure that dep cache tarball can go safely stale
This "fixes" egg-links in a really hacky way to compensate for the lack
of a real relocatable virtualenv.
2020-04-28 12:56:31 -04:00