Merge branch '1048-semver-format-compliance-backport' into 'master'

Fixed version parsing in pleroma_ctl (backport)

See merge request pleroma/pleroma!1508
This commit is contained in:
kaniini 2019-07-31 15:13:38 +00:00
commit cca9d64cb8
3 changed files with 43 additions and 21 deletions

View File

@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Fixed
- `pleroma_ctl` not detecting the master branch properly. If you get "Releases are built only for master and develop branches" error when updating, please add `-` to the end of the line in `releases/start_erl.data`
## [1.0.2] - 2019-07-28 ## [1.0.2] - 2019-07-28
### Fixed ### Fixed
- Not being able to pin unlisted posts - Not being able to pin unlisted posts

55
mix.exs
View File

@ -175,10 +175,14 @@ defmodule Pleroma.Mixfile do
# Builds a version string made of: # Builds a version string made of:
# * the application version # * the application version
# * a pre-release if ahead of the tag: the describe string (-count-commithash) # * a pre-release if ahead of the tag: the describe string (-count-commithash)
# * build info: # * branch name
# * build metadata:
# * a build name if `PLEROMA_BUILD_NAME` or `:pleroma, :build_name` is defined # * a build name if `PLEROMA_BUILD_NAME` or `:pleroma, :build_name` is defined
# * the mix environment if different than prod # * the mix environment if different than prod
defp version(version) do defp version(version) do
identifier_filter = ~r/[^0-9a-z\-]+/i
# Pre-release version, denoted from patch version with a hyphen
{git_tag, git_pre_release} = {git_tag, git_pre_release} =
with {tag, 0} <- with {tag, 0} <-
System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true), System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true),
@ -199,6 +203,19 @@ defmodule Pleroma.Mixfile do
) )
end end
# Branch name as pre-release version component, denoted with a dot
branch_name =
with {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]),
branch_name <- System.get_env("PLEROMA_BUILD_BRANCH") || branch_name,
true <- branch_name != "master" do
branch_name =
branch_name
|> String.trim()
|> String.replace(identifier_filter, "-")
"." <> branch_name
end
build_name = build_name =
cond do cond do
name = Application.get_env(:pleroma, :build_name) -> name name = Application.get_env(:pleroma, :build_name) -> name
@ -207,28 +224,26 @@ defmodule Pleroma.Mixfile do
end end
env_name = if Mix.env() != :prod, do: to_string(Mix.env()) env_name = if Mix.env() != :prod, do: to_string(Mix.env())
env_override = System.get_env("PLEROMA_BUILD_ENV")
build = env_name =
[build_name, env_name] case env_override do
|> Enum.filter(fn string -> string && string != "" end) nil -> env_name
|> Enum.join("-") env_override when env_override in ["", "prod"] -> nil
|> (fn env_override -> env_override
"" -> nil
string -> "+" <> string
end).()
branch_name =
with {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]),
branch_name <- System.get_env("PLEROMA_BUILD_BRANCH") || branch_name,
true <- branch_name != "master" do
branch_name =
String.trim(branch_name)
|> String.replace(~r/[^0-9a-z\-\.]+/i, "-")
"-" <> branch_name
end end
[version, git_pre_release, branch_name, build] # Build metadata, denoted with a plus sign
build_metadata =
[build_name, env_name]
|> Enum.filter(fn string -> string && string != "" end)
|> Enum.join(".")
|> (fn
"" -> nil
string -> "+" <> String.replace(string, identifier_filter, "-")
end).()
[version, git_pre_release, branch_name, build_metadata]
|> Enum.filter(fn string -> string && string != "" end) |> Enum.filter(fn string -> string && string != "" end)
|> Enum.join() |> Enum.join()
end end

View File

@ -30,12 +30,15 @@ detect_flavour() {
detect_branch() { detect_branch() {
version="$(cut -d' ' -f2 <"$RELEASE_ROOT"/releases/start_erl.data)" version="$(cut -d' ' -f2 <"$RELEASE_ROOT"/releases/start_erl.data)"
branch="$(echo "$version" | cut -d'-' -f 4)" # Expected format: major.minor.patch_version(-number_of_commits_ahead_of_tag-gcommit_hash).branch
branch="$(echo "$version" | cut -d'.' -f 4)"
if [ "$branch" = "develop" ]; then if [ "$branch" = "develop" ]; then
echo "develop" echo "develop"
elif [ "$branch" = "" ]; then elif [ "$branch" = "" ]; then
echo "master" echo "master"
else else
# Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
# if supporting releases for more branches, need to ensure they contain only these symbols.
echo "Releases are built only for master and develop branches" >&2 echo "Releases are built only for master and develop branches" >&2
exit 1 exit 1
fi fi