Commit graph

255 commits

Author SHA1 Message Date
Joe Doss
aa49cb1cfe
Bugfix for #7663 and refactor of container setup (#7747)
* Move from Alpine Linux to Fedora Linux.

This changes the base container image away from Alpine Linux to
Fedora Linux to address some musl libc issues with some of our gems.

It also moved the main file to a Containerfile and symlinks the Dockerfile
to it. This makes our container setup less Docker-centric as Linux users
most likely will be using Podman as their container runtime.

Lastly, it moves the WORKDIR from /usr/src/app to /opt/apps/devto.
The Linux FHS states that /opt is the spot for Optional application
software packages and /usr/src is for kernel source code.

https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

/opt Optional application software packages
/usr/src Source code, e.g., the kernel source code with its header files.

Also, if SELinux becomes a thing in our future, moving this makes it
easier to manage contexts out of /opt rather than /usr/src.

* Adjust the Containerfile a bit to add some missing packages, make it
more generic and move env vars to the docker-compose.

* Move the Dockerfile to a symlink to the Containerfile.

We need to be able to support more than just Docker for a container
runtime. Moving everything to a Containerfile and symlinking the
Dockerfile helps users run runtimes such as Podman.

* Add in new entrypoint files and fix the app path in docker-entrypoint.sh

* Refactor the docker-compose.yml file so it doesn't build the main
application container three times in a row. We can use the same
container for web, webpacker, and sidekiq.

Also make the volume names very explicit on what their contents and add
in SELinux context support with :Z

* Fix ELASTICSEARCH_URL.

* Remove the absolute path on ip binary and add in iproute to Containerfile.

* Symlink the Dockerfile to Containerfile and add in a container-compose.yml file
for usage with podman-compose. We are waiting for this issue to get resolved

https://github.com/containers/libpod/issues/6153

and for podman-compose to mature a bit more. A user using podman-compose can use

podman-compose -f container-compose.yml

to launch the DEV container stack with Podman.

* Update the .gitignore file to reflect the new container volumes.

* Fix the entrypoint script on the Containerfile and clean up a bunch of things.

* Rework the Containerfile to prep it to run as a non-root user. We have to wait
for this issue to get fixed:

https://github.com/containers/libpod/issues/6153

for Linux users and then we can uncomment the USER line so we are running Rails
as a non-root user. :toot:

* This reworks the compose files so each task that is needed to start the app has
a correct wait command with dockerize. It also adds in containers for doing
yarn and bundle things for development. Since we mount the code directory inside
the container we lose our pre-containerized gems and node_modules.

This means users can run:

Linux
podman-compose -f container-compose.yml up

Mac
docker-compose up

and it should correctly build the app stack with containers!

* Clean up old container related things.

* Add in some container pre-reqs and my name to the "Core team" section! :toot:

* Adjust the seed and sidekiq compose entries so they do not use the web entrypoint
and set the REDIS_URL and REDIS_SESSIONS_URL env vars for seed.

Add in some echos to the entrypoint.sh.

Also set docker-compose to use :delegated on mount points to speed things up.

https://docs.docker.com/storage/bind-mounts/#configure-mount-consistency-for-macos

* Just call yarn install --dev on the yarn container.

* Update documentation to support Docker and Podman as Container Engines and
move the page from docker to containers to reflect the fact not all users run
their containers via Docker.

There are dozens of us... DOZENS!

* Set --local on bundle config so it just impacts this Ruby app.

* Renamed bin/docker-setup to bin/container-setup to reflect the fact that that
we can use Podman as a container engine. I also refactored it so it does some
basic pre-flight checks for docker and docker-compose or podman and
podman-compose to make sure users have a container engine installed.

* Set cache_all_platforms true for bundler.

* Bump docker-compose dockerize -timeout to 45min for slower macOS hardware.

* Move to the consolidated app_initializer:setup rake task for bootstrapping the
app.

* Update docs/installation/readme.md
2020-05-28 12:11:51 -05:00
Nick Taylor
0f68c37679
Fixed a typo and broken image in the frontent tests docs. (#8109) 2020-05-28 10:08:16 -04:00
Nick Taylor
58135879c8
Configured jest to use the jest-watch-typeahead watch plugin. (#8093)
* Configured jest to use the jest-watch-typeahead watch plugin.

* Added some documentation in regards to jest watch mode.
2020-05-28 10:09:50 +02:00
Molly Struve
182faa0289
[deploy] Consolidate Setup Tasks to a Single Rake Task (#8065) 2020-05-27 11:59:07 -05:00
Michael Kohl
7f75f99560
[deploy] Rename classified listings (#7910)
* Change models and related files

* Update controllers and specs

* More renaming

* Seek and destroy, I mean search and replace

* Round up the stragglers

* Ground control to Major Travis...

* More fixes

* PR feedback

* Various fixes

* Rename view

* Fix list query builder

* Unify request specs

* Fix some API spec errors

* Fix remaining API specs

* Make spec conform to API

* Fix leftover problems

* Fix JS tests

* Fix column name in select

* Fix API specs

* Fix search specs

* Paging Mr. Travis
2020-05-27 13:35:09 +00:00
Andy Zhao
c42fd3461e
[deploy] Rename positive_reactions_count to public_reactions_count in logic (#7926)
* Rename positive_reactions_count to public_reactions_count

* Add positive reactions count back in so we can remove it

* Use public_category method for reactions

* Add positive_reactions_count in case any old caches rely on it

* Add positive_rxn_count to account for API endpoints

* Remove unused method

* One more spot...

* Add method back in because of caches

* Update specs to match new functionality

* Fix typo

* Remove unused methods
2020-05-26 12:36:28 -04:00
Ridhwana
880cd70d53
chore: update some docs (#8003) 2020-05-21 11:46:57 -04:00
Andy Zhao
0568911ba2
Move netlify.toml to docs folder to prep for multiple TOML files (#7960) 2020-05-19 15:02:17 -04:00
Hashim Lokasher
713a589f55
Fixed Typo in Docs (#7944)
* Fixed typo in gitdocs 

javascript word is written incorrect in Git Docs

* Fixed Typo in Docs
2020-05-19 10:32:27 +02:00
Mac Siri
a763f268e3
Add 403 to API docs (#7861) 2020-05-15 12:16:51 -04:00
Ben Halpern
2daac8a216
Add docs for tallying timeseries metrics (#6146) 2020-05-14 15:32:12 -05:00
Andy Zhao
203e8e1ae7
Add a section about what the admin panel is (#7867) 2020-05-14 15:15:44 -04:00
Dmitry Maksyoma
44d48a5585
Adapt dev env to use remote box (#7742) 2020-05-13 10:21:00 -04:00
Josh Puetz
2abe830377
[deploy] Home Page Feed redesign + top comments (#7579)
* feed cards

* frontend

* preactify

* preactify

* .

* fix

* fixing things and adding dropdown

* whoops.

* whoops 2.

* revert body bg color change

* search snippet

* search snippet

* get rid of featured article

* get rid of featured article...

* cover to its own component

* videos

* videos

* reading time

* small-save-filled asset

* author adjustments

* adjustments

* Author --> Meta

* whoops.

* loader

* logged out state

* .

* dropping what's not needed for now

* better name for cover

* get rid of nav overflow

* bringin comments placeholder back

* bringing comments placeholder back

* publish date

* fix

* date

* .

* save button icon

* ghost button

* lets skip the icon for saving for now

* more buttons

* counting logic

* Display top comments on homepage feed

* Comment list and item components

* Remove 'Top Comments' title

* Remove subscribe button, add reading time

* Update snapshots and tests

* Fix article and follower scrolling

* Added reading time

* (Try) to do flare tags

* Button component from Pawel

* More button styles from Pawel

* Comment count style from Pawel

* Handle empty parens for age on older articles

* Dont show 'more comment' button for more than 2 comments

* cover ratio

* flare tag

* cover fix

* fix buttons

* more button fixes

* tags fix

* responsiveness fix

* reading time  + a bit of responsiveness

* Reading time in more places

* snapshots

* default color for flare tag

* Update CommentsList test snapshot with new styles

* fixing search results

* fixing buttons

* Fix podcast card tests by updating snapshots

* Line clamping for top comments

* Reflect save button state after click before mouseout

* Now the entire feed card is clickable. (#7638)

* Now pointer cursor is only on feed posts. (#7727)

* Revert podcast card styling

* Update test snapshot

* merge

* Fix rspec on feed page

* Reduce complexity of class check for feed card clicking

* PR feedback/fixes

* Fix featured article test and snapshot

* Last minute test tweaks

* clean up crayons

* padding issue + empty div

* Correct merge error

* Fix search results tests

* Test fixes and snapshot updates

* themes

* podcasts colors

Co-authored-by: ludwiczakpawel <ludwiczakpawel@gmail.com>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
2020-05-12 07:57:57 -05:00
rhymes
e6f9841bca
Update Windows 10 installation docs (#7647) 2020-05-01 13:49:44 -04:00
Alex
7149070bca
[deploy] Create FastlyConfig & refactor params safe list (#7630)
* Fastly refactor

- Create FastlyConfig
- Create FastlyConfig::Base
- Create FastlyConfig::Snippets
- Move safe_params to its own VCL file
- Rescue unauthorized errors in development
- Add FastlyConfig errors

* Move active version to method

* Update naming option --> config

* Refactor InvalidConfigsFormat msg to Error class

* Refactor active version logic

* Fix log_to_datadog call

* Move get_active_version logic back into method

* Add some specs ¯\_(ツ)_/¯

* Update Fastly rake task

* Remove old Fastly way

* Update docs for Fastly

* Move snippets to config/ & remove old config

* Change update_config to upsert_config

* Change error type to SubclassResponsibility

* Refactor get_updated_files with filter_map

* Refactor update

* Cleanup update_config --> upsert_config

* Fix updater specs
2020-05-01 11:23:48 -04:00
Molly Struve
74e75b4067
[deploy] Rate Limit Organization Creation (#7595) 2020-04-30 10:55:37 -05:00
Mac Siri
b7a29c7144
Make DATABASE_URL_TEST optional (#7604)
* Make DATABASE_URL_TEST optional

* Add documentation

* Update wording
2020-04-30 11:19:16 +02:00
Mac Siri
2ea320a245
Support docker-selenium (#7583)
* Support use of selenium-docker

* Apply suggestion

* Add documentation
2020-04-30 11:07:45 +02:00
Molly Struve
4c779be2ed
[deploy] Remove ALL Algolia Code (#7577) 2020-04-29 10:11:57 -05:00
Ridhwana
0373965435
Implement sentence construction changes on PR template (#7588)
* chore: update PR template

* chore: change language

* chore: revert change after triggering build
2020-04-29 09:39:13 -04:00
rhymes
2d26318cf9
[deploy] Replace (black|white)list with more inclusive language (#7459)
* Replace isBlacklisted

* Update fastly.rake task

* More renames

* Rename Faslty config file

* More changes

* Replace isForbiddenFromPreloading with isNotPreloadable

* Skip problematic test

* Re-enable
2020-04-27 18:00:12 +02:00
rhymes
0186fd9aee
Add Retry-After for API rate limit errors and document limits in API spec (#7444)
* Add correct rate limit exception to Articles::Updater

* Send Retry-After with HTTP 429 back to the client

* Update API specs for error 429

* Test build

* Fix spec

* Add retry after to ImageUploadsController and fix specs

* Generalize a bit
2020-04-24 17:35:28 +02:00
Maja Komel
4499e5eb6e
[deploy] Add Wikipedia liquid tag (#7193) 2020-04-22 17:54:56 +02:00
Alex
397734b29c
Generalize Fastly rake task (#7349)
* Generalize Fastly rake task

- Update Rubocop to disable DescribeClass on rake task specs

* Change default Fastly ENV vars to ""

* Move snippet name to ENV

* Update ENV to FASTLY_WHITELIST_PARAMS_SNIPPET_NAME

* Add FASTLY_WHITELIST_PARAMS_SNIPPET_NAME to the docs

* Update docs

* Quick refactor
2020-04-22 11:49:54 -04:00
Alex
cc6249beff
[deploy] Update whitelisted params on Fastly on deployments (#7279)
* Add Fastly whitelisted params

* Create FastlyVCL::WhitelistedParams.update service

* Add specs

* Create rake task to call new service

* Add rake task to setup script

* Add documentatoin

* Move sort inside params_to_array method

* Rename VCL_REGEX to VCL_DELIMITER

* Add PR URL to docs

* Move snippet name to SNIPPET_NAME constant

* Refactor setting content

* Rename params_to_array to params_to_sorted_array

* Change guard and log success on update

- Return early if params are equal
- Log success message to Rails.logger on update
- Log params diff to Datadog

* Return true explicitly

* Move rake task execution from to release-tasks

* Remove unnecessary environment guard in task

* Remove duplicate code param

* Refactor string from build_content

* Remove reliance on sort

* Reorder logging to implicitly return true

* Update docs to reference release-script.sh

* Update docs

* Update whitelisted params

* Fix params_updated? bug and add more specs

* Remove duplicate param...oopsie!
2020-04-16 15:11:57 -04:00
rhymes
34848a4209
Upgrade Rubocop to 0.81 (#7219)
* Upgrade rubocop to 0.81.0

* Reordered rubocop file and updated it

* Regenerate todo

* Correct some things

* Fix specs
2020-04-11 10:10:04 +02:00
Fernando Valverde
49e3ca6f18
Adds Pusher Beams docs for Android PN (#7121)
* Adds Pusher Beams docs for Android PN [skip ci]

* Trigger CI
2020-04-07 16:36:37 +02:00
Andy Zhao
3768f34ed0
Change /settings/misc to /settings/ux (#7107)
* Change /settings/misc to /settings/ux

* Update docs ruby version
2020-04-06 14:50:34 -04:00
rhymes
5c17e5c25d
Upgrade Ruby to 2.7.1 (#7097) [deploy]
* Upgrade Ruby to 2.7.1

* Use explicit version in Dockerfile

* Fix docs Gemfile
2020-04-06 18:21:50 +02:00
rhymes
6bede2a92b
Upgrade to Ruby 2.7.0 (#5281) [deploy]
* Upgrade to Ruby 2.7.0

* Upgrade Travis's Ruby as well

* Fix conflict

* Silence all Ruby 2.7 deprecation warnings in dev mode

* Silence dev and test unless CI
2020-04-03 17:36:19 +02:00
rhymes
abca674c15
Remove mutationobserver-shim (#7041) 2020-04-02 15:53:06 -04:00
Arit Amana
01465efcb2
Make slight updates to the Technical Docs (#7011) 2020-04-01 19:26:52 -04:00
rhymes
cca97df218
Add rel noopener, noreferrer, nofollow to docs header links (#6944) 2020-04-01 10:15:58 +07:00
briwa
604e76dd88
refactor(docker-setup): use bash instead of ruby (#6935)
* refactor(docker-setup): use bash instead of ruby

* refactor: use a proper header

* refactor: bash -> sh
2020-03-30 10:13:52 +02:00
briwa
09f0773c18
refactor(docker): move redis env config to docker (#6936)
instead of in config/application.yml
2020-03-30 10:48:38 +07:00
Keith Maxwell
6c302f712a
Add missing } to updateArticle code sample (#6924)
Before this change the example curl command returns 400 bad request with an appropriate API key and article ID.

After this change the example curl command does not return error 400 bad request.
2020-03-29 08:35:05 +02:00
Michael Kohl
9b12080478
A docker_setup script (#6827) 2020-03-27 18:48:32 -04:00
Andy Zhao
6acd1a62aa
Use subdomain env var for Netlify deploys (#6839)
* Use new ENV var since URL is taken

* Use subdomain not domain for error msg
2020-03-25 12:34:48 -04:00
Mac Siri
c67a449ec8
Create Approvals test doc (#6821)
* Create Approvals test doc

* Apply suggestions from code review

Co-Authored-By: Ridhwana <Ridhwana.Khan16@gmail.com>

* Update wording

Co-authored-by: Ridhwana <Ridhwana.Khan16@gmail.com>
2020-03-24 18:50:02 -04:00
Michael Kohl
8b5e66ca0e
Docker fixes (#6803)
* Try out parallel Travis builds

* Add more Bundler options

* Appease the spec gods

I don't think we actually need Timecop.freeze in this spec

* Try inlining factories

* Make sure the time has actually changed

* Add CodeClimate coverage for parallel build

* Explicitly list jobs, don't rely on matrix expansion

* Merge master and move storybook to after_script

* Add missing environment variable

* Remove old cc-test-reporter config

* Move yarn build-storybook back to script, remove conditional coverage upload

* Update yarn constraint and Docker docs

Co-authored-by: rhymes <rhymesete@gmail.com>
2020-03-24 13:15:04 -04:00
Nick Taylor
ccf7e6e5bf
Upgrade to webpacker/webpack 4 and Babel 7 (#6664)
Upgraded to webpacker 4/webpack 4 and Babel 7
2020-03-17 08:20:36 -04:00
rhymes
efb0a7af56
API docs: cleanup parameters (#6625)
* Add ranges and defaults for numeric params

* Refactor page and per_page params with common schema

* Group common id parameters
2020-03-16 11:42:54 +01:00
rhymes
1428013ebd
API: add users and videos docs (#6611) [deploy]
* Fix IDs size

* Document /api/users/{id}

* Document /users/me

* Add videos API docs
2020-03-13 09:12:09 +01:00
rhymes
13ebedbc6d
Disable CORS logging by default in development (#6592)
* Disable CORS logging by default in development

* Fix typos
2020-03-11 15:30:18 -04:00
Mac Siri
5a9cf514d1
Remove redundant yarn step for Docker (#6572) 2020-03-11 11:56:31 -04:00
rhymes
2d008c58f0
Added docs for tags API (#6583)
* Add API Tags documentation

* Add comment for vendor extensions

* Fix typo

* Remove comment
2020-03-11 16:32:25 +01:00
rhymes
29497ad515
API: add docs for podcast episodes endpoint (#6555)
* Add docs to /api/podcast_episodes

* Bump version

* Fix with the correct slug
2020-03-11 15:46:56 +01:00
rhymes
01e4a0b0f1
API: add docs for /followers/users and remove organizations endpoint (#6551)
* Use api-key for api tests

* Remove /api/followers/organizations endpoint

* Add more tests

* Add documentation for /api/followers/users
2020-03-11 10:56:43 +01:00
rhymes
235367e073
Make bin/setup predictable and repeatable and remove bin/update (#6566)
* Make bin/setup predictable and remove bin/update

* System not puts

* Give priority to ENV DATABASE_URL
2020-03-10 15:46:23 +01:00