From afbd9f88aa3984612bf676383bfeb6da1801ad86 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 11 Dec 2019 14:12:20 +0100 Subject: [PATCH 1/7] Example elixir gitlab CI --- .gitlab-ci.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4d4c6a6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,18 @@ +image: elixir:latest + +# Pick zero or more services to be used on all builds. +# Only needed when using a docker container to run your tests in. +# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service +services: + - mysql:latest + - redis:latest + - postgres:latest + +before_script: + - mix local.rebar --force + - mix local.hex --force + - mix deps.get + +mix: + script: + - mix test From d69a72705537b3b53ed496a8454737d12df51831 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 11 Dec 2019 14:22:51 +0100 Subject: [PATCH 2/7] Tweak .gitlab-ci.yml --- .gitlab-ci.yml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d4c6a6..1b55e26 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,18 +1,20 @@ -image: elixir:latest +image: trenpixster/elixir:latest -# Pick zero or more services to be used on all builds. -# Only needed when using a docker container to run your tests in. -# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service services: - - mysql:latest - - redis:latest - postgres:latest +variables: + POSTGRES_DB: test_test + POSTGRES_HOST: postgres + POSTGRES_USER: postgres + POSTGRES_PASSWORD: "postgres" + MIX_ENV: "test" + before_script: - - mix local.rebar --force - - mix local.hex --force + - apt-get update && apt-get -y install postgresql-client - mix deps.get + - mix deps.compile mix: script: - - mix test + - mix test \ No newline at end of file From 887dd71cec9b93afd5a9529a2a1b84b859adeac9 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 11 Dec 2019 14:29:07 +0100 Subject: [PATCH 3/7] Use elixir:latest --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1b55e26..9561734 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: trenpixster/elixir:latest +image: elixir:latest services: - postgres:latest From 87b6e52a0d698d5ec13b092e34899c1c4467af8b Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 11 Dec 2019 14:34:42 +0100 Subject: [PATCH 4/7] Install rebar and hex --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9561734..9dfe5fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,6 +12,8 @@ variables: before_script: - apt-get update && apt-get -y install postgresql-client + - mix local.rebar --force + - mix local.hex --force - mix deps.get - mix deps.compile From 35ed1e6a6ce653632ebd3cd35b013cf68cd77ccd Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Wed, 11 Dec 2019 17:48:45 +0100 Subject: [PATCH 5/7] Fix erlexec dependency --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index 1afaee0..647dc79 100644 --- a/mix.exs +++ b/mix.exs @@ -29,7 +29,7 @@ defmodule Chroxy.MixProject do {:plug_cowboy, "~> 2.0.2"}, {:cowboy, "~> 2.6.3"}, {:jason, "~> 1.1"}, - {:erlexec, "~> 1.10.0"}, + {:erlexec, git: "https://github.com/saleyn/erlexec.git", override: true }, {:exexec, "~> 0.2"}, {:chrome_remote_interface, "~> 0.3.0"}, {:ex_doc, "~> 0.20", only: :dev, runtime: false} diff --git a/mix.lock b/mix.lock index 4dcce30..686b92d 100644 --- a/mix.lock +++ b/mix.lock @@ -4,7 +4,7 @@ "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"}, "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm"}, "earmark": {:hex, :earmark, "1.3.2", "b840562ea3d67795ffbb5bd88940b1bed0ed9fa32834915125ea7d02e35888a5", [:mix], [], "hexpm"}, - "erlexec": {:hex, :erlexec, "1.10.0", "cba7924cf526097d2082ceb0ec34e7db6bca2624b8f3867fb3fa89c4cf25d227", [:rebar3], [], "hexpm"}, + "erlexec": {:git, "https://github.com/saleyn/erlexec.git", "c84cbad85ad1fd5cc4d24118313e90fe907ce886", []}, "ex_doc": {:hex, :ex_doc, "0.20.2", "1bd0dfb0304bade58beb77f20f21ee3558cc3c753743ae0ddbb0fd7ba2912331", [:mix], [{:earmark, "~> 1.3", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.10", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm"}, "exexec": {:hex, :exexec, "0.2.0", "a6ffc48cba3ac9420891b847e4dc7120692fb8c08c9e82220ebddc0bb8d96103", [:mix], [{:erlexec, "~> 1.10", [hex: :erlexec, repo: "hexpm", optional: false]}], "hexpm"}, "hackney": {:hex, :hackney, "1.15.1", "9f8f471c844b8ce395f7b6d8398139e26ddca9ebc171a8b91342ee15a19963f4", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, From 47d03ee3306aecb2252c86efa14522db22923f83 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Thu, 12 Dec 2019 12:20:41 +0100 Subject: [PATCH 6/7] Support for chrome_flags in config --- Dockerfile | 2 +- config/config.exs | 40 ++++++++++++++++++++++++++----------- lib/chroxy/chrome_server.ex | 19 +++--------------- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index a009e1e..7ca6aa0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ RUN apt-get update \ RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ && apt-get update \ - && apt-get install -y google-chrome-stable --no-install-recommends \ + && apt-get install -y git google-chrome-stable --no-install-recommends \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /src/*.deb diff --git a/config/config.exs b/config/config.exs index d8b2801..e18d4c8 100644 --- a/config/config.exs +++ b/config/config.exs @@ -26,25 +26,41 @@ envar = fn name -> end config :logger, - :console, - metadata: [:request_id, :pid, :module], - level: :debug + :console, + metadata: [:request_id, :pid, :module], + level: :debug config :chroxy, - chrome_remote_debug_port_from: envar.("CHROXY_CHROME_PORT_FROM") || "9222", - chrome_remote_debug_port_to: envar.("CHROXY_CHROME_PORT_TO") || "9223" + chrome_remote_debug_port_from: envar.("CHROXY_CHROME_PORT_FROM") || "9222", + chrome_remote_debug_port_to: envar.("CHROXY_CHROME_PORT_TO") || "9223" config :chroxy, Chroxy.ProxyListener, - host: envar.("CHROXY_PROXY_HOST") || "127.0.0.1", - port: envar.("CHROXY_PROXY_PORT") || "1331" + host: envar.("CHROXY_PROXY_HOST") || "127.0.0.1", + port: envar.("CHROXY_PROXY_PORT") || "1331" config :chroxy, Chroxy.ProxyServer, packet_trace: false config :chroxy, Chroxy.Endpoint, - scheme: :http, - port: envar.("CHROXY_ENDPOINT_PORT") || "1330" + scheme: :http, + port: envar.("CHROXY_ENDPOINT_PORT") || "1330" config :chroxy, Chroxy.ChromeServer, - page_wait_ms: envar.("CHROXY_CHROME_SERVER_PAGE_WAIT_MS") || "200", - crash_dumps_dir: envar.("CHROME_CHROME_SERVER_CRASH_DUMPS_DIR") || "/tmp", - verbose_logging: 0 + page_wait_ms: envar.("CHROXY_CHROME_SERVER_PAGE_WAIT_MS") || "200", + crash_dumps_dir: envar.("CHROME_CHROME_SERVER_CRASH_DUMPS_DIR") || "/tmp", + verbose_logging: 0, + chrome_flags: ~w( + --headless + --disable-gpu + --disable-translate + --disable-extensions + --disable-background-networking + --safebrowsing-disable-auto-update + --enable-logging + --disable-sync + --metrics-recording-only + --disable-default-apps + --mute-audio + --no-first-run + --no-sandbox + --incognito + ) diff --git a/lib/chroxy/chrome_server.ex b/lib/chroxy/chrome_server.ex index 4f97712..fec89ae 100644 --- a/lib/chroxy/chrome_server.ex +++ b/lib/chroxy/chrome_server.ex @@ -320,25 +320,12 @@ defmodule Chroxy.ChromeServer do end defp default_opts do + # --headless + [ chrome_port: 9222, chrome_path: chrome_path(), - chrome_flags: ~w( - --headless - --disable-gpu - --disable-translate - --disable-extensions - --disable-background-networking - --safebrowsing-disable-auto-update - --enable-logging - --disable-sync - --metrics-recording-only - --disable-default-apps - --mute-audio - --no-first-run - --no-sandbox - --incognito - ), + chrome_flags: Application.get_env(:chroxy, Chroxy.ChromeServer)[:chrome_flags], verbose_logging: 0, crash_dumps_dir: "/tmp" ] From a8c18a5d2bcc7f5ea9f86357371eb9c7a1d72113 Mon Sep 17 00:00:00 2001 From: Tomas Korcak Date: Fri, 3 Jan 2020 15:14:16 +0100 Subject: [PATCH 7/7] Update mix.exs --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index 647dc79..3db39f1 100644 --- a/mix.exs +++ b/mix.exs @@ -26,7 +26,7 @@ defmodule Chroxy.MixProject do defp deps do [ {:plug, "~> 1.8.0"}, - {:plug_cowboy, "~> 2.0.2"}, + {:plug_cowboy, "~> 2.0"}, {:cowboy, "~> 2.6.3"}, {:jason, "~> 1.1"}, {:erlexec, git: "https://github.com/saleyn/erlexec.git", override: true },