Akd v0.2.0-rc.0 Akd.Fetch.Git View Source
A native Hook module that comes shipped with Akd.
This module uses Akd.Hook
.
Provides a set of operations that fetch source code using git
to a destination,
check out a given branch (defaults to master
) and pull the latest version
of the branch on the destination.
Ensures to cleanup and empty the desination directory. (Doesn’t run this by default)
Doesn’t have any Rollback operations.
Options:
- run_ensure: boolean. Specifies whether to a run a command or not.
- ignore_failure: boolean. Specifies whether to continue if this hook fails.
- src: string. Source/Repo from where to clone the project. This is a required option while using this hook.
- branch: string. Branch of the git repo that is being deployed.
Defaults:
run_ensure
:false
ignore_failure
:false
src
: “.”branch
:master
Link to this section Summary
Functions
Callback implementation for get_hooks/2
Link to this section Functions
Link to this function
get_hooks(deployment, opts)
View Source
get_hooks(Akd.Deployment.t(), Keyword.t()) :: [Akd.Hook.t()]
get_hooks(Akd.Deployment.t(), list()) :: Akd.Hook.t()
Callback implementation for get_hooks/2
.
This function returns a list of operations that can be used to fetch a source
code using git
from a branch.
Examples
When no src
is given with opts
:
iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("."),
...> publish_to: Akd.Destination.local("."),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.Fetch.Git.get_hooks(deployment, [])
[%Akd.Hook{ensure: [%Akd.Operation{cmd: "rm -rf ./*", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "rm -rf ./.*", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}}], ignore_failure: false,
main: [%Akd.Operation{cmd: "git clone . .", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git fetch", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git checkout master", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git pull", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}}], rollback: [], run_ensure: false}]
When a src
is given:
iex> deployment = %Akd.Deployment{mix_env: "prod",
...> build_at: Akd.Destination.local("."),
...> publish_to: Akd.Destination.local("."),
...> name: "name",
...> vsn: "0.1.1"}
iex> Akd.Fetch.Git.get_hooks(deployment, [src: "url"])
[%Akd.Hook{ensure: [%Akd.Operation{cmd: "rm -rf ./*", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "rm -rf ./.*", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}}], ignore_failure: false,
main: [%Akd.Operation{cmd: "git clone . .", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git fetch", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git checkout master", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}},
%Akd.Operation{cmd: "git pull", cmd_envs: [],
destination: %Akd.Destination{host: :local, path: ".",
user: :current}}], rollback: [], run_ensure: false}]