0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-25 11:17:50 +01:00
Commit Graph

30 Commits

Author SHA1 Message Date
Frank Hamand
3ef42ddd38
feat: Add docker image that uses nginx unit instead of gunicorn (#17573)
* Add docker image that uses nginx unit instead of gunicorn

🦄🔫

* Add unit build to CI

* Fix duplicate id

* try 3.11

* Only build for amd64

need python3.11 for unit image on arm
2023-09-21 16:50:19 +01:00
Marius Andra
4b44cba6fe
feat(hogql): local evaluation (HogVM part 2) (#16275) 2023-06-28 17:23:22 +02:00
Michael Matloka
adacf8ffb4
test(frontend): Automatically test Storybook stories with snapshots (#13839) 2023-01-27 15:51:35 +01:00
Thomas Obermüller
4a30e78b22
chore: use pnpm to manage dependencies (closes #12635) (#13190)
* chore: use pnpm to manage dependencies

* Fix CI errors

* Don't report Docker image size for external PRs

* Fix pnpm-lock.yaml formatting

* Fix module versions

* Ignore pnpm-lock.yaml

* Upgrade Cypress action for pnpm support

* Set up node and pnpm before Cypress

* Fix typescript issues

* Include patches directory in Dockerfile

* Fix Jest tests in CI

* Update lockfile

* Update lockfile

* Clean up Dockerfile

* Update pnpm-lock.yaml to reflect current package.json files

* remove yarn-error.log from .gitignore

* formatting

* update data exploration readme

* type jest.config.ts

* fix @react-hook issues for jest

* fix react-syntax-highlighter issues for jest

* fix jest issues from query-selector-shadow-dom

* fix transform ignore patterns and undo previous fixes

* add missing storybook peer dependencies

* fix nullish coalescing operator for storybook

* reorder storybook plugins

* update editor-update-tsd warning to new npm script

* use legacy ssl for chromatic / node 18 compatibility

* use pnpm for visual regression testing workflow

* use node 16 for chromatic

* add @babel/plugin-proposal-nullish-coalescing-operator as direct dependency

* try fix for plugin-server

* cleanup

* fix comment and warning

* update more comments

* update playwright dockerfile

* update plugin source types

* conditional image size reporting

* revert react-native instructions

* less restrictive pnpm verions

* use ref component name in line with style guide

Co-authored-by: Jacob Gillespie <jacobwgillespie@gmail.com>
2022-12-12 10:28:06 +01:00
Thomas Obermüller
ad1303a0fb
test(e2e-vrt): add playwright visual regression testing for storybook (#13065) 2022-12-07 11:40:56 +01:00
James Greenhill
8e5d1da3aa
feat: Add GeoIP2 capability to Django app (for feature flags) (#10890)
* feat: add libmaxminddb0 as dependency. C library will speed things up significantly

* pin libmaxminddb to 1.5 for whats available from APK

* get geolite2 db during build

* add settings for geoip2 django contrib library

* black formatting

* consistently use share director

* isort fixes

* remove GeoLite2-City.mmdb from git and add script to ./bin/start to download it if file does not exist

* remove GeoLite2-City.mmdb from git

* add doc for share directory expaining why it exists

* relative path for curl in build

* shared vs share consistency

* Update snapshots

* brotli decompress

* ..everywhere

Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
Co-authored-by: neilkakkar <neilkakkar@users.noreply.github.com>
2022-07-25 17:20:11 -07:00
Marius Andra
433063c50e
chore(frontend): add new folder to !dockerignore (#10255) 2022-06-10 17:19:52 +00:00
Guido Iaquinti
e8757283ae
chore(docker): cleanup plugin-server config (#9949) 2022-05-24 17:07:33 +02:00
Harry Waye
8dad49d75f
chore(codespaces): use Dockerfile not docker-compose (#9659)
* dev(codespaces): use Dockerfile not docker-compose

I wasn't so confident around the updating of the docker-compose file to
include minio, and the workflow around it. I'd rather just drop into
something with docker-in-docker and run docker-compose myself.

Also finally added some extensions I'm using so I don't need to enable
them all the time.

TODO: update docker-compose file to work with docker-in-docker. At the
moment I don't think the networking will be correct.

* Merge remote-tracking branch 'origin/master' into hackaton_session_rec

* add new line

* remove yarn install, it will be overwritten by the codespaces mount

* revert compose formatting

* format with prettier
2022-05-05 14:05:56 +00:00
Yakko Majuri
963c62aaf1
Use monorepo plugin server (#6784)
* use plugin-server in same repo

* remove plugins dir

* update docker files

* clean up docker files:

* visual separation

* run plugin server test stack

* build and push test image

* revert push image

* fix default yarn start

* another fix

* fix some more

* add plugin-server-prod script

* make executable

* update scripts:

* revert prod script

* fixes

* fix tests

* clean

* move build to docker

* build plugin-server in prod dockerfile

* use different entrypoint for e2e test

* fix bugs with ts-node-dev

* restore yarn.lock

* lost a few changes in the rebase

* fix dockerfile

Co-authored-by: James Greenhill <fuziontech@gmail.com>
2021-11-13 11:52:00 -08:00
Marius Andra
b5a02e2ca7
Bundle our frontend via esbuild (#6758)
* esbuild package

* almost get esbuild working

* fix react-virtualized imports

* add splitting

* fix funny import reorder bug

* fix squeakAudio referring to itself

* write index.html file

* fix some bad imports

* update antd paths

* remove raw-loader usage, it didn't work anyway

* refactor and copy public

* build app and toolbar

* get toolbar working, but without styles

* make toolbar and its styles work

* shared dashboards

* clean frontend build before rebuilding

* add watch mode

* reorder tasks

* revert js url

* incremental builds of app with debounced chokidar watching

* common build/watch script

* improve logs

* watch during firrst build

* fix toolbar url

* fix wrongly exported scene

* create sceneProxyLogic to untangle sceneLogic from all bundles

* disconnect sceneLogic and refactor setPageTitle

* live reloading server

* rename utils file

* only wait for /static

* fix encoding

* simplify

* add missing dayjs plugins

* fix pathless logics

* simplify options

* add jsx for webapck

* slight delay to catch changes

* a type is a type

* fix build

* esbuild in start

* funnelLogic path

* include all files with a "." (so .mjs, etc) in /frontend/ to docker

* rename to "utils.mjs", make "build.mjs" executable

* improve erroring

* revert some needless changes

* more reverts

* change some scripts

* remove setuff

* clarify function

* make "--host 0.0.0.0" work

* fix import order issue in webpack

* remove webpack css inlining for toolbar to simplify config

* make toolbar with external styles work in storybook

* move live server injection into django

* fix undefined bug

* simplify setup to work with injection directly in http://localhost:8000 (no proxying needed on :8234)

* add comments

* Fix `fse` usage

I was getting this otherwise:

$ node frontend/build.mjs
file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46
    fse.copySync(srcDir, destDir, { overwrite: true }, function (err) {
        ^

TypeError: fse.copySync is not a function
    at copyPublicFolder (file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46:9)
    at file:///Users/twixes/Developer/posthog/frontend/build.mjs:5:1
    at ModuleJob.run (internal/modules/esm/module_job.js:146:23)
    at async Loader.import (internal/modules/esm/loader.js:165:24)
    at async Object.loadESM (internal/process/esm_loader.js:68:5)

* Mock `process` for VFile used by ReactMarkdown

I was getting this otherwise:

core.js:55 Uncaught ReferenceError: process is not defined
    at new VFile (core.js:55)
    at VFile (core.js:49)
    at Function.parse (index.js:273)
    at ReactMarkdown2 (react-markdown.js:42)
    at renderWithHooks (react-dom.development.js:14803)
    at mountIndeterminateComponent (react-dom.development.js:17482)
    at beginWork (react-dom.development.js:18596)
    at HTMLUnknownElement.callCallback2 (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)

* Mock `process.env` for VFile used by ReactMarkdown

I was getting this otherwise:

platform.ts:73 Uncaught TypeError: Cannot read properties of undefined (reading 'ENABLE_VSCODE_BROWSER_CODE_LOADING')
    at platform.ts:73
    at platform.ts:79
    at Function.r._invokeFactory (loader.js:1118)
    at r.complete (loader.js:1128)
    at r._onModuleComplete (loader.js:1754)
    at r._resolve (loader.js:1714)
    at r.defineModule (loader.js:1357)
    at _ (loader.js:1804)
    at numbers.ts:10
    at fake:1

* pass the heavy appScenes to sceneLogic through props via App.tsx

* remove sceneProxyLogic

* remove exported variables

* fix sceneLogic test

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-11-03 09:50:24 +01:00
Tim Glaser
1f7cfb0b7f
Add ee to docker ignore (#2422) 2020-11-17 23:00:42 +01:00
Michael Matloka
b7b9e8caf3
Remove some seemingly unused requirements and use pip-compile (#2192)
* Remove some seemingly unused requirements

* Remove a few more

* Bring back dependencies of other requirements

* pip-compile prod requirements

* Sync with master updates

* Fix grep

* Revert "Fix grep"

This reverts commit 2e6538cad4.

* Fix grep but using cut

* Clean up and regenerate requirements

* Simplify requirements-dev

* Fix fakeredis import in production

* Black
2020-11-10 10:17:48 +01:00
Marius Andra
fce86ef46d
Plugin v8 (#1946)
* plugin progress

* blah

* add posthog config for plugins

* test gitignore

* new functionality for plugins

* support local plugin paths

* also ignore symlinks

* add positional argument

* fixes

* small fixes

* config polish

* config passed to posthog plugin

* ooooooops

* symlink fix

* cleanse dir before loading

* add cache to plugins

* pickle the goods

* unlink symlink

* pass full config

* unlink even if link points to nothing

* fix fix

* return none if value is empty

* plugin model

* plugins scene

* add config schema to plugins

* install plugins

* save descriptions

* show descriptions

* edit plugin

* save plugin config

* plugin modal

* uninstall plugins

* UX cleanup

* add "required" to plugin config

* open plugin modal after install

* split to subcomponents

* install custom plugins

* rework backend for model plugins

* Plugins on models

* simple reload pubsub

* fix apps not installed

* fix master/main issue

* fix reload command

* use the github api to get the default branch

* init plugins only if not running migrate/makemigrations

* store plugins zip archives in postgres

* tag plugins to specific versions

* save plugins in pluginConfig

* update pluginConfigs instead of adding new rows, remove from redux on uninstall

* remove debug

* run plugins from db by team

* reload when deleting

* remove debug

* smarter handling of dynamic plugins, support local plugins again

* improve typings, add some nicer warnings

* yarn lock file after merge

* squash migrations and add "locked" field to plugins

* error if folder not found in zip

* unregister plugins

* skip plugin init in test mode

* basic plugin test

* avoid mutating the same prop hash

* add pip tools to requirements.txt

* fix mypy, fix manage.py script error

* avoid plugins with mypy

* mypy fix

* abstract redis into plugin and add team_id to reload

* refactor and start work on syncing with posthog.json

* start testing plugin loading from json

* test plugin deletion

* test for syncing plugins from config

* complete and then test local json plugin sync

* test converting back and forward between an local and http path

* remove global plugin config from plugins array in posthog.json

* rename configSchema --> config_schema

* fix migration after merge

* rename from_cli to from_json

* mypy

* import pip after plugin loaded

* show error details

* raise exceptions visible to the frontend

* sync plugins on load

* access control to updating plugins from the web

* access control

* remove posthog.json from git

* test config schema from json

* if you can install via the web, you can also configure

* remove separate view access

* title as "Plugins" instead of "Installed Plugins" if we can't install ourselves and don't see the repository

* add self.team to plugin base class

* add instance_init method

* refactor into files

* sync global plugin config from json

* make global plugins work, add test

* global plugins in interface, make them take precedence over local plugins

* add comments to plugin base class

* reload/reset plugins before each test

* add error field to plugins

* add many plugin zips

* add many plugin zips, fix imports

* store errors on plugin object and test them

* fix types

* add null to error

* can be with any team ID in the test

* save problems running plugins in the plugin_config model

* try to create redis connection pool only once

* throw if no redis

* mypy

* get instance inside heartbeat and not top level

* try caching pubsub

* try pip install with -q

* install pip externally

* remove uuid and typing, now in stdlib

* more verbosity

* add pip back

* catch exceptions

* quiet and no input for pip

* check plugin reload every 10sec on new task

* fix type errors

* fix requirements error message

* use repository.json

* only load and reload plugins on workers

* rename task

* support local js plugins via py-mini-racer

* load js plugins from zip files

* extract jsplugin class and convert to syntax that uses global functions instead of initializing a class

* process events via grpc

* process events with the "posthog-plugins" queue to enable plugins

* remove old native python & mini racer plugin code

* default to false

* change env vars

* fix test

* remove grpc tools

* skip plugins in migrate.py scripts

* fix migration

* change output of settings debug banner to STDERR

* start posthog plugin server with worker

* try to fix python 3.7 test

* add fallback for the optional argument

* annoying CI test debug

* try to finally fix python 3.7 test

* here we go again

* move plugins under instance

* move plugins npm start into its own folder

* more console.log debugginf

* and again

* move plugins to separate script

* more prints

* fix test error

* docker config

* small fixes

* dckerfile fix

* reload plugins via pubsub, upgrade version

* plugins that support team setup code

* sync if made changes from config

* move plugins in menu

* require node 14 in heroku for better plugin support (namely ?. support)

* bump node version in dockerfiles

* update node versions for github actions

* update the concurrency for heroku workers

* update the concurrency for heroku workers (add link)

* Fix migrations after merge

* add ignore_result to process_event tasks

* fix: docker-preview run in parallel bug

* change order of commands

* remove separate plugins server conf script

* clarify intent

* revert castaway change

* add context to plugins/sync.py

* change everything to ValidationError

* delegate destroy to super

* no request to repository url if can't install

* make the if cleaner

* add clarifying line

* add clarifying line

* fix url field type

* rename get_redis_instance to get_client, move to posthog.redis

* remove duplicate validation

* flip if around

* simplify api logic

* simplify plugin_config api, fix global_plugin error

* remove unnecessary field rename

* mypy

* Plugins UI (#2090)

* base UI

* more UI

* load plugin image if available

* toggle enabled plugin

* plugin cards for available

* custom plugins

* change plugin configuration to drawer

* asks for confirmation when enabling or disabling a plugin

* loading state

* separation of concerns, leave new styles for separate PR

* general improvements

* remove button when installation is not available

* preemptively avoid merge conflict with #2114

* move papercups widget & hide bottom bar when drawer is open

* allow clicking the entire plugin card

* address all feedback

* move plugins under "project" menu

* Hide "configure" from globally enabled plugins

Co-authored-by: Marius Andra <marius.andra@gmail.com>

* add plugins opt in toggle to project/plugins

* choose pipeline based on team setting

* add "beta"

* plugin opt-in opt-out pages

* adjust install button

* remove tasks that are never called, remove PLUGINS_ENABLED global key

* fix responsive card display

* fix typo and drawer width

* skeleton fixes

* typo

* use "posthog-plugin-server" npm package

* "posthog-plugin-server" doc

* require the plugin server to be online before enabling plugins

* remove a few needeless "?." cases

* add hint for config_schema

* add hint for errors

* show plugin errors

* stop clicks if clicking on error

* show plugin errors

* loading indicators

* reload plugins when opting in/out

* nicer beta tag

* add frontend type

* fix mypy error

* fix test

* disable plugins if MULTI_TENANCY

* upgrade plugin-server version

* save event with plugin error

* upgrade plugin server

* squashed & optimized migrations

* remove unused import

* updates opt-in copy & hides tech details for cloud version

* fix cypress tests

* compare with None

* change plugins url and add redirect

* remove ellipsis

* use code snippet in plugin errors

* change github regex

* fix loading flickering on installing plugins

* add comment to plugin archive

* fix python style

* remove pip-tools (relic from the python plugin era)

* hard pin plugin server version

* remove copying of posthog.json from dev dockerfile (breaks if file doesn't exist, copied later anyway)

* update lockfile

Co-authored-by: James Greenhill <fuziontech@gmail.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2020-11-02 15:08:30 +01:00
Tim Glaser
73f327a13f
Fix dev docker build (#1791) 2020-10-01 16:24:43 +02:00
Marius Andra
f1c90f4283
Whitelist kea-typegen folder in .dockerignore (#1443)
* Whitelist kea-typegen folder in .dockerignore

* Added debug to devdockerfile

* quote style fix

* add .kearc to dockerignore (needed to generate types in yarn build)

* Add tsconfig.json to dockerfile

* add tsconfig and kearc to dockerfiles

* updated docker files to suppress secret key error

* use fake secret key in collectstatic

Co-authored-by: Yakko Majuri <yakko.majuri@gmail.com>
2020-08-17 14:11:46 +02:00
Tim Glaser
13293c6c91
Fix docker builds (#1195)
* Copy correct babel file in docker images

* Add babel to docker ignore
2020-07-13 12:01:17 +02:00
porter-dev
914f0d69d8
Porter Development on Posthog (#1012)
* porter compatibility changes

* fix devServer typo

* quick fix porter

* make backwards compatible

* Update README.md

* button size

* Update README.md

* remove spaces

* remove migration file

* Update README.md

Co-authored-by: Alexander Belanger <abelanger@Alexanders-MacBook-Pro-4.local>
Co-authored-by: Trevor Shim <sungrok.shim@yale.edu>
2020-06-18 13:42:34 +02:00
Marius Andra
14f12846ed
Helm redis (#558)
* ignore copying frontend/dist folder - otherwise whatever you build in docker will get overridden by local build artifacts if any exist in frontend/dist

* support configuring redis with POSTHOG_REDIS_HOST and other vars in addition to REDIS_URL

* remove "the next version" in worker requirement modal

* split beat and celery scripts

* remove chart folder

* celery heartbeat every 10sec, reduce distributed beat lock hold time

* remove dockerfile local link

* add localhost redis url for tests
2020-04-13 16:22:06 +01:00
Marius Andra
036bb504e3 add scripts to docker ignore 2020-04-07 14:50:10 +02:00
Tim Glaser
bcbf85e0aa Fix missing docker-server from dockerignore 2020-04-02 10:37:35 +01:00
Marius Andra
3a943e1c11 install in docker via root package.json and webpack 2020-03-18 13:41:46 +01:00
Tim Glaser
70efaa7b02 Fix dockerignore scss 2020-02-28 16:09:46 -08:00
Tim Glaser
4c689b8ef5 Fix dockerignore 2020-02-28 15:54:47 -08:00
Tim Glaser
7dc01a4781 Fix dockerfile 2020-02-27 16:40:56 -08:00
Michael
1a87d88513 Updates docker ignore to include (not ignore) staticfiles 2020-02-27 17:26:19 -06:00
Tim Glaser
d4ff184e50 Reduce preview docker image size 2020-02-09 15:20:11 -08:00
Tim Glaser
57e40b5c59 Create preview and production dockerfiles and add LICENSE 2020-02-09 13:54:14 -08:00
Tim Glaser
395d79f434 Faster dockerfile, with useful (and prettywelcome message 2020-02-09 12:21:06 -08:00
Tim Glaser
f164148fb4 Preview docker image 2020-02-08 11:06:46 -08:00