mirror of
https://github.com/valitydev/url-shortener.git
synced 2024-11-06 01:55:19 +00:00
MSPF-320: Init skeleton
This commit is contained in:
parent
bdf8e644f8
commit
6f0f987f5b
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,4 +1,5 @@
|
|||||||
.eunit
|
.eunit
|
||||||
|
/_build/
|
||||||
deps
|
deps
|
||||||
*.o
|
*.o
|
||||||
*.beam
|
*.beam
|
||||||
@ -8,3 +9,14 @@ ebin/*.beam
|
|||||||
rel/example_project
|
rel/example_project
|
||||||
.concrete/DEV_MODE
|
.concrete/DEV_MODE
|
||||||
.rebar
|
.rebar
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# rebar
|
||||||
|
/_checkouts/
|
||||||
|
|
||||||
|
# containerization
|
||||||
|
\#*
|
||||||
|
.\#*
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
24
Dockerfile.sh
Normal file
24
Dockerfile.sh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cat <<EOF
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
MAINTAINER Dmitry Manik <d.manik@rbkmoney.com>
|
||||||
|
COPY ./_build/prod/rel/url-shortener /opt/url-shortener
|
||||||
|
CMD /opt/url-shortener/bin/url-shortener foreground
|
||||||
|
EXPOSE 8022
|
||||||
|
LABEL base_image_tag=$BASE_IMAGE_TAG
|
||||||
|
LABEL build_image_tag=$BUILD_IMAGE_TAG
|
||||||
|
# A bit of magic to get a proper branch name
|
||||||
|
# even when the HEAD is detached (Hey Jenkins!
|
||||||
|
# BRANCH_NAME is available in Jenkins env).
|
||||||
|
LABEL branch=$( \
|
||||||
|
if [ "HEAD" != $(git rev-parse --abbrev-ref HEAD) ]; then \
|
||||||
|
echo $(git rev-parse --abbrev-ref HEAD); \
|
||||||
|
elif [ -n "$BRANCH_NAME" ]; then \
|
||||||
|
echo $BRANCH_NAME; \
|
||||||
|
else \
|
||||||
|
echo $(git name-rev --name-only HEAD); \
|
||||||
|
fi)
|
||||||
|
LABEL commit=$(git rev-parse HEAD)
|
||||||
|
LABEL commit_number=$(git rev-list --count HEAD)
|
||||||
|
WORKDIR /opt/url-shortener
|
||||||
|
EOF
|
65
Jenkinsfile
vendored
Normal file
65
Jenkinsfile
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!groovy
|
||||||
|
// -*- mode: groovy -*-
|
||||||
|
|
||||||
|
def finalHook = {
|
||||||
|
runStage('store CT logs') {
|
||||||
|
archive '_build/test/logs/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build('url-shortener', 'docker-host', finalHook) {
|
||||||
|
checkoutRepo()
|
||||||
|
loadBuildUtils()
|
||||||
|
|
||||||
|
def pipeDefault
|
||||||
|
def withWsCache
|
||||||
|
runStage('load pipeline') {
|
||||||
|
env.JENKINS_LIB = "build_utils/jenkins_lib"
|
||||||
|
pipeDefault = load("${env.JENKINS_LIB}/pipeDefault.groovy")
|
||||||
|
withWsCache = load("${env.JENKINS_LIB}/withWsCache.groovy")
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeDefault() {
|
||||||
|
if (env.BRANCH_NAME != 'master') {
|
||||||
|
runStage('compile') {
|
||||||
|
withGithubPrivkey {
|
||||||
|
sh 'make wc_compile'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
runStage('lint') {
|
||||||
|
sh 'make wc_lint'
|
||||||
|
}
|
||||||
|
runStage('xref') {
|
||||||
|
sh 'make wc_xref'
|
||||||
|
}
|
||||||
|
runStage('dialyze') {
|
||||||
|
withWsCache("_build/default/rebar3_19.1_plt") {
|
||||||
|
sh 'make wc_dialyze'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
runStage('test') {
|
||||||
|
sh "make wdeps_test"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
runStage('make release') {
|
||||||
|
withGithubPrivkey {
|
||||||
|
sh "make wc_release"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
runStage('build image') {
|
||||||
|
sh "make build_image"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME.startsWith('epic')) {
|
||||||
|
runStage('push image') {
|
||||||
|
sh "make push_image"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
runStage('rm local image') {
|
||||||
|
sh 'make rm_local_image'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
76
Makefile
Normal file
76
Makefile
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
REBAR := $(shell which rebar3 2>/dev/null || which ./rebar3)
|
||||||
|
SUBMODULES = build_utils
|
||||||
|
SUBTARGETS = $(patsubst %,%/.git,$(SUBMODULES))
|
||||||
|
|
||||||
|
UTILS_PATH := build_utils
|
||||||
|
TEMPLATES_PATH := .
|
||||||
|
|
||||||
|
# Name of the service
|
||||||
|
SERVICE_NAME := url-shortener
|
||||||
|
# Service image default tag
|
||||||
|
SERVICE_IMAGE_TAG ?= $(shell git rev-parse HEAD)
|
||||||
|
# The tag for service image to be pushed with
|
||||||
|
SERVICE_IMAGE_PUSH_TAG ?= $(SERVICE_IMAGE_TAG)
|
||||||
|
|
||||||
|
# Base image for the service
|
||||||
|
BASE_IMAGE_NAME := service_erlang
|
||||||
|
BASE_IMAGE_TAG := 16e2b3ef17e5fdefac8554ced9c2c74e5c6e9e11
|
||||||
|
|
||||||
|
# Build image tag to be used
|
||||||
|
BUILD_IMAGE_TAG := 4fa802d2f534208b9dc2ae203e2a5f07affbf385
|
||||||
|
|
||||||
|
CALL_ANYWHERE := all submodules rebar-update compile xref lint dialyze start devrel release clean distclean
|
||||||
|
|
||||||
|
CALL_W_CONTAINER := $(CALL_ANYWHERE) test
|
||||||
|
|
||||||
|
all: compile
|
||||||
|
|
||||||
|
-include $(UTILS_PATH)/make_lib/utils_container.mk
|
||||||
|
-include $(UTILS_PATH)/make_lib/utils_image.mk
|
||||||
|
|
||||||
|
.PHONY: $(CALL_W_CONTAINER)
|
||||||
|
|
||||||
|
# CALL_ANYWHERE
|
||||||
|
$(SUBTARGETS): %/.git: %
|
||||||
|
git submodule update --init $<
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
submodules: $(SUBTARGETS)
|
||||||
|
|
||||||
|
rebar-update:
|
||||||
|
$(REBAR) update
|
||||||
|
|
||||||
|
compile: submodules rebar-update
|
||||||
|
$(REBAR) compile
|
||||||
|
|
||||||
|
xref: submodules
|
||||||
|
$(REBAR) xref
|
||||||
|
|
||||||
|
lint:
|
||||||
|
elvis rock
|
||||||
|
|
||||||
|
dialyze:
|
||||||
|
$(REBAR) dialyzer
|
||||||
|
|
||||||
|
start: submodules
|
||||||
|
$(REBAR) run
|
||||||
|
|
||||||
|
devrel: submodules
|
||||||
|
$(REBAR) release
|
||||||
|
|
||||||
|
release: distclean
|
||||||
|
$(REBAR) as prod release
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(REBAR) clean
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
$(REBAR) clean -a
|
||||||
|
rm -rf _build
|
||||||
|
|
||||||
|
# CALL_W_CONTAINER
|
||||||
|
test: submodules
|
||||||
|
$(REBAR) ct
|
||||||
|
|
||||||
|
test.%: apps/url-shortener/test/shortener_%_tests_SUITE.erl
|
||||||
|
$(REBAR) ct --suite=$^
|
@ -1 +1,7 @@
|
|||||||
# url-shortener
|
# url-shortener
|
||||||
|
|
||||||
|
Сервис дает возможность укарачивать ссылки
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
https://github.com/rbkmoney/swag-url-shortener
|
||||||
|
84
rebar.config
Normal file
84
rebar.config
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
% Common project erlang options.
|
||||||
|
{erl_opts, [
|
||||||
|
|
||||||
|
% mandatory
|
||||||
|
debug_info,
|
||||||
|
warnings_as_errors,
|
||||||
|
warn_export_all,
|
||||||
|
warn_missing_spec,
|
||||||
|
warn_untyped_record,
|
||||||
|
warn_export_vars,
|
||||||
|
|
||||||
|
% by default
|
||||||
|
warn_unused_record,
|
||||||
|
warn_bif_clash,
|
||||||
|
warn_obsolete_guard,
|
||||||
|
warn_unused_vars,
|
||||||
|
warn_shadow_vars,
|
||||||
|
warn_unused_import,
|
||||||
|
warn_unused_function,
|
||||||
|
warn_deprecated_function
|
||||||
|
|
||||||
|
% at will
|
||||||
|
% bin_opt_info
|
||||||
|
% no_auto_import
|
||||||
|
% warn_missing_spec_all
|
||||||
|
|
||||||
|
]}.
|
||||||
|
|
||||||
|
% Common project dependencies.
|
||||||
|
{deps, []}.
|
||||||
|
|
||||||
|
{xref_checks, [
|
||||||
|
undefined_function_calls,
|
||||||
|
undefined_functions,
|
||||||
|
deprecated_functions_calls,
|
||||||
|
deprecated_functions
|
||||||
|
]}.
|
||||||
|
|
||||||
|
{relx, [
|
||||||
|
{release, {shortener, "0.1"}, [
|
||||||
|
{recon , load }, % tools for introspection
|
||||||
|
{runtime_tools, load }, % debugger
|
||||||
|
{tools , load }, % profiler
|
||||||
|
sasl,
|
||||||
|
shortener
|
||||||
|
]},
|
||||||
|
{sys_config, "./config/sys.config"},
|
||||||
|
{vm_args, "./config/vm.args"},
|
||||||
|
{dev_mode, true},
|
||||||
|
{include_erts, false},
|
||||||
|
{extended_start_script, true}
|
||||||
|
]}.
|
||||||
|
|
||||||
|
{dialyzer, [
|
||||||
|
{warnings, [
|
||||||
|
% mandatory
|
||||||
|
unmatched_returns,
|
||||||
|
error_handling,
|
||||||
|
race_conditions,
|
||||||
|
unknown
|
||||||
|
]},
|
||||||
|
{plt_apps, all_deps},
|
||||||
|
{plt_extra_apps, []}
|
||||||
|
]}.
|
||||||
|
|
||||||
|
{profiles, [
|
||||||
|
{prod, [
|
||||||
|
{deps, [
|
||||||
|
% for introspection on production
|
||||||
|
{recon, "2.3.2"}
|
||||||
|
]},
|
||||||
|
{relx, [
|
||||||
|
{dev_mode, false},
|
||||||
|
{include_erts, true}
|
||||||
|
]}
|
||||||
|
]},
|
||||||
|
{test, [
|
||||||
|
{deps, []}
|
||||||
|
]}
|
||||||
|
]}.
|
||||||
|
|
||||||
|
{plugins, [
|
||||||
|
rebar3_run
|
||||||
|
]}.
|
1
rebar.lock
Normal file
1
rebar.lock
Normal file
@ -0,0 +1 @@
|
|||||||
|
[].
|
14
src/shortener.app.src
Normal file
14
src/shortener.app.src
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{application, shortener, [
|
||||||
|
{description, "Url shortener service"},
|
||||||
|
{vsn, "0"},
|
||||||
|
{registered, []},
|
||||||
|
{applications, [
|
||||||
|
kernel,
|
||||||
|
stdlib
|
||||||
|
]},
|
||||||
|
{env, []},
|
||||||
|
{modules, []},
|
||||||
|
{maintainers, [
|
||||||
|
"Dmitry Manik <d.manik@rbkmoney.com>"
|
||||||
|
]}
|
||||||
|
]}.
|
Loading…
Reference in New Issue
Block a user