Преглед на файлове

Remove release_env

While taking a final look at instance.gen before releasing I noticed
that the release_env task outputs messages in broken english. Upon
further inspection it seems to have even more severe issues which, in
my opinion, warrant it's at least temporary removal:
- We do not explain what it actually does, anywhere. Neither the task
 docs nor instance.gen, nor installation instructions.
- It does not respect FHS on OTP releases (uses /opt/pleroma/config even
 though we store the config in /etc/pleroma/config.exs).
- It doesn't work on OTP releases, which is the main reason it exists.
Neither systemd nor openrc service files for OTP include it.
- It is not mentioned in install guides other than the ones for Debian
and OTP releases.
2298-weird-follow-issue
rinpatch преди 3 години
родител
ревизия
cc45c69fff
променени са 9 файла, в които са добавени 2 реда и са изтрити 153 реда
  1. +0
    -9
      docs/administration/CLI_tasks/release_environments.md
  2. +0
    -1
      docs/installation/debian_based_en.md
  3. +0
    -3
      docs/installation/otp_en.md
  4. +0
    -1
      installation/init.d/pleroma
  5. +0
    -2
      installation/pleroma.service
  6. +1
    -21
      lib/mix/tasks/pleroma/instance.ex
  7. +0
    -76
      lib/mix/tasks/pleroma/release_env.ex
  8. +1
    -10
      test/mix/tasks/pleroma/instance_test.exs
  9. +0
    -30
      test/mix/tasks/pleroma/release_env_test.exs

+ 0
- 9
docs/administration/CLI_tasks/release_environments.md Целия файл

@@ -1,9 +0,0 @@
# Generate release environment file

```sh tab="OTP"
./bin/pleroma_ctl release_env gen
```

```sh tab="From Source"
mix pleroma.release_env gen
```

+ 0
- 1
docs/installation/debian_based_en.md Целия файл

@@ -182,7 +182,6 @@ sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.se
``` ```


* Edit the service file and make sure that all paths fit your installation * Edit the service file and make sure that all paths fit your installation
* Check that `EnvironmentFile` contains the correct path to the env file. Or generate the env file: `sudo -Hu pleroma mix pleroma.release_env gen`
* Enable and start `pleroma.service`: * Enable and start `pleroma.service`:


```shell ```shell


+ 0
- 3
docs/installation/otp_en.md Целия файл

@@ -149,9 +149,6 @@ chown -R pleroma /etc/pleroma
# Run the config generator # Run the config generator
su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql" su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql"


# Run the environment file generator.
su pleroma -s $SHELL -lc "./bin/pleroma_ctl release_env gen"

# Create the postgres database # Create the postgres database
su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql"




+ 0
- 1
installation/init.d/pleroma Целия файл

@@ -8,7 +8,6 @@ pidfile="/var/run/pleroma.pid"
directory=/opt/pleroma directory=/opt/pleroma
healthcheck_delay=60 healthcheck_delay=60
healthcheck_timer=30 healthcheck_timer=30
export $(cat /opt/pleroma/config/pleroma.env)


: ${pleroma_port:-4000} : ${pleroma_port:-4000}




+ 0
- 2
installation/pleroma.service Целия файл

@@ -17,8 +17,6 @@ Environment="MIX_ENV=prod"
Environment="HOME=/var/lib/pleroma" Environment="HOME=/var/lib/pleroma"
; Path to the folder containing the Pleroma installation. ; Path to the folder containing the Pleroma installation.
WorkingDirectory=/opt/pleroma WorkingDirectory=/opt/pleroma
; Path to the environment file. the file contains RELEASE_COOKIE and etc
EnvironmentFile=/opt/pleroma/config/pleroma.env
; Path to the Mix binary. ; Path to the Mix binary.
ExecStart=/usr/bin/mix phx.server ExecStart=/usr/bin/mix phx.server




+ 1
- 21
lib/mix/tasks/pleroma/instance.ex Целия файл

@@ -36,9 +36,7 @@ defmodule Mix.Tasks.Pleroma.Instance do
listen_port: :string, listen_port: :string,
strip_uploads: :string, strip_uploads: :string,
anonymize_uploads: :string, anonymize_uploads: :string,
dedupe_uploads: :string,
skip_release_env: :boolean,
release_env_file: :string
dedupe_uploads: :string
], ],
aliases: [ aliases: [
o: :output, o: :output,
@@ -243,24 +241,6 @@ defmodule Mix.Tasks.Pleroma.Instance do


write_robots_txt(static_dir, indexable, template_dir) write_robots_txt(static_dir, indexable, template_dir)


if Keyword.get(options, :skip_release_env, false) do
shell_info("""
Release environment file is skip. Please generate the release env file before start.
`MIX_ENV=#{Mix.env()} mix pleroma.release_env gen`
""")
else
shell_info("Generation the environment file:")

release_env_args =
with path when not is_nil(path) <- Keyword.get(options, :release_env_file) do
["gen", "--path", path]
else
_ -> ["gen"]
end

Mix.Tasks.Pleroma.ReleaseEnv.run(release_env_args)
end

shell_info( shell_info(
"\n All files successfully written! Refer to the installation instructions for your platform for next steps." "\n All files successfully written! Refer to the installation instructions for your platform for next steps."
) )


+ 0
- 76
lib/mix/tasks/pleroma/release_env.ex Целия файл

@@ -1,76 +0,0 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Mix.Tasks.Pleroma.ReleaseEnv do
use Mix.Task
import Mix.Pleroma

@shortdoc "Generate Pleroma environment file."
@moduledoc File.read!("docs/administration/CLI_tasks/release_environments.md")

def run(["gen" | rest]) do
{options, [], []} =
OptionParser.parse(
rest,
strict: [
force: :boolean,
path: :string
],
aliases: [
p: :path,
f: :force
]
)

file_path =
get_option(
options,
:path,
"Environment file path",
"./config/pleroma.env"
)

env_path = Path.expand(file_path)

proceed? =
if File.exists?(env_path) do
get_option(
options,
:force,
"Environment file already exists. Do you want to overwrite the #{env_path} file? (y/n)",
"n"
) === "y"
else
true
end

if proceed? do
case do_generate(env_path) do
{:error, reason} ->
shell_error(
File.Error.message(%{action: "write to file", reason: reason, path: env_path})
)

_ ->
shell_info("\nThe file generated: #{env_path}.\n")

shell_info("""
WARNING: before start pleroma app please make sure to make the file read-only and non-modifiable.
Example:
chmod 0444 #{file_path}
chattr +i #{file_path}
""")
end
else
shell_info("\nThe file is exist. #{env_path}.\n")
end
end

def do_generate(path) do
content = "RELEASE_COOKIE=#{Base.encode32(:crypto.strong_rand_bytes(32))}"

File.mkdir_p!(Path.dirname(path))
File.write(path, content)
end
end

+ 1
- 10
test/mix/tasks/pleroma/instance_test.exs Целия файл

@@ -5,8 +5,6 @@
defmodule Mix.Tasks.Pleroma.InstanceTest do defmodule Mix.Tasks.Pleroma.InstanceTest do
use ExUnit.Case use ExUnit.Case


@release_env_file "./test/pleroma.test.env"

setup do setup do
File.mkdir_p!(tmp_path()) File.mkdir_p!(tmp_path())


@@ -18,8 +16,6 @@ defmodule Mix.Tasks.Pleroma.InstanceTest do
File.rm_rf(Path.join(static_dir, "robots.txt")) File.rm_rf(Path.join(static_dir, "robots.txt"))
end end


if File.exists?(@release_env_file), do: File.rm_rf(@release_env_file)

Pleroma.Config.put([:instance, :static_dir], static_dir) Pleroma.Config.put([:instance, :static_dir], static_dir)
end) end)


@@ -73,9 +69,7 @@ defmodule Mix.Tasks.Pleroma.InstanceTest do
"--dedupe-uploads", "--dedupe-uploads",
"n", "n",
"--anonymize-uploads", "--anonymize-uploads",
"n",
"--release-env-file",
@release_env_file
"n"
]) ])
end end


@@ -97,9 +91,6 @@ defmodule Mix.Tasks.Pleroma.InstanceTest do
assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]" assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]"
assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql() assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
assert File.exists?(Path.expand("./test/instance/static/robots.txt")) assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
assert File.exists?(@release_env_file)

assert File.read!(@release_env_file) =~ ~r/^RELEASE_COOKIE=.*/
end end


defp generated_setup_psql do defp generated_setup_psql do


+ 0
- 30
test/mix/tasks/pleroma/release_env_test.exs Целия файл

@@ -1,30 +0,0 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Mix.Tasks.Pleroma.ReleaseEnvTest do
use ExUnit.Case
import ExUnit.CaptureIO, only: [capture_io: 1]

@path "config/pleroma.test.env"

def do_clean do
if File.exists?(@path) do
File.rm_rf(@path)
end
end

setup do
do_clean()
on_exit(fn -> do_clean() end)
:ok
end

test "generate pleroma.env" do
assert capture_io(fn ->
Mix.Tasks.Pleroma.ReleaseEnv.run(["gen", "--path", @path, "--force"])
end) =~ "The file generated"

assert File.read!(@path) =~ "RELEASE_COOKIE="
end
end

Loading…
Отказ
Запис