diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..a2f87ff47 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,43 @@ +image: docker:stable + +services: + - docker:dind + +variables: + CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH + DOCKER_HOST: tcp://localhost:2375 + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + +cache: + paths: + - /tmp/solr/ + - /var/src/riak/distdir/ + +before_script: + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com + +stages: + - base + - riak + +base: + stage: base + script: + - docker pull $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:latest || true + - docker build --cache-from $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:latest --tag $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA --tag $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:latest --build-arg deployment=$CI_COMMIT_REF_NAME -f Dockerfile.base . + - docker push $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA + - docker push $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:latest + +riak: + stage: riak + artifacts: + paths: + - "/tmp/packages/*.rpm" + script: + - docker pull $CONTAINER_IMAGE/base/$CI_COMMIT_REF_NAME:latest || true + - docker pull $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:latest || true + - docker build --cache-from $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:latest --tag $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA --tag $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:latest --build-arg deployment=$CI_COMMIT_REF_NAME . + - docker cp $(docker create $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:latest):"/var/src/riak/distdir/packages/" /tmp/packages + - docker push $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA + - docker push $CONTAINER_IMAGE/$CI_COMMIT_REF_NAME:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..bd777ac97 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +ARG deployment +FROM registry.gitlab.com/riak/riak/base/${deployment}:latest +ARG deployment +ADD . /var/src/riak/ +RUN sh -x ./build.sh diff --git a/Dockerfile.base b/Dockerfile.base new file mode 100644 index 000000000..41cebb9fc --- /dev/null +++ b/Dockerfile.base @@ -0,0 +1,15 @@ +FROM centos:7 +ARG deployment +# https://gist.github.com/seanjensengrey/808544636b5f3715625584fc1c97615a +RUN curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl +RUN chmod +x kerl +RUN yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel \ + autoconf java-1.8.0-openjdk-devel git \ + pam-devel perl-Digest-SHA +RUN CFLAGS="-DOPENSSL_NO_EC=1" ./kerl build git https://github.com/basho/otp OTP_R16B02_basho10 R16B02-basho10 +RUN ./kerl install R16B02-basho10 /opt/erlang/R16B02-basho10 +RUN . /opt/erlang/R16B02-basho10/activate +RUN mkdir -p /var/src/riak +WORKDIR /var/src/riak +RUN yum install -y which +RUN yum install -y rpm-build diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..d650927e3 --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +. /opt/erlang/R16B02-basho10/activate +make rel +make test +make package diff --git a/misc/mapdeps.erl b/misc/mapdeps.erl index abe18c915..e7ea6c4d1 100755 --- a/misc/mapdeps.erl +++ b/misc/mapdeps.erl @@ -85,9 +85,12 @@ map_rebar(BaseDir, Path, Acc) -> {ok, Opts} -> Deps = proplists:get_value(deps, Opts, []), lists:foldl( - fun({DepName, _, {_,_,V} }, A) -> + fun({DepName, _, Info}, A) -> + VerStr = case Info of + {_,_,V} -> ver(V); + {_,_V} -> "HEAD" + end, From = app_name(Path), - VerStr = ver(V), To = {atom_to_list(DepName), VerStr}, case ordsets:is_element({To, From}, A) of true -> diff --git a/rebar.config b/rebar.config index 06c1746ff..8c4190fdf 100644 --- a/rebar.config +++ b/rebar.config @@ -4,6 +4,8 @@ {require_otp_vsn, "R16|17"}. {cover_enabled, true}. +{recursive_cmds, [xref]}. + {lib_dirs, ["apps/riak"]}. {erl_opts, [debug_info, fail_on_warning]}. @@ -17,12 +19,12 @@ {node_package, ".*", {git, "https://github.com/basho/node_package.git", {tag, "4.0.2"}}}, {lager_syslog, ".*", {git, "git://github.com/basho/lager_syslog.git", {tag, "3.0.3"}}}, {cluster_info, ".*", {git, "git://github.com/basho/cluster_info.git", {tag, "2.0.5"}}}, - {riak_kv, ".*", {git, "git://github.com/basho/riak_kv.git", {branch, "develop-2.9"}}}, + {riak_kv, ".*", {git, "git://github.com/basho/riak_kv.git", {branch, "develop-2.9"}}}, {riak_control, ".*", {git, "git://github.com/basho/riak_control.git", {tag, "riak_kv-2.9.1"}}}, {riaknostic, ".*", {git, "git://github.com/basho/riaknostic.git", {tag, "2.1.7"}}}, {riak_auth_mods, ".*", {git, "git://github.com/basho/riak_auth_mods.git", {tag, "2.1.0"}}}, {riak_repl, ".*", {git, "git://github.com/basho/riak_repl.git", {tag, "riak_kv-2.9.1"}}}, - {yokozuna, ".*", {git, "git://github.com/basho/yokozuna.git", {tag, "riak_kv-2.9.1"}}}, + {yokozuna, ".*", {git, "git://github.com/basho/yokozuna.git", {branch, "fresh-solr-2.9.1-oss"}}}, {rebar_lock_deps_plugin, ".*", {git, "https://github.com/basho/rebar_lock_deps_plugin.git", {tag, "3.1.0p1"}}} ]}. diff --git a/rebar.config.lock b/rebar.config.lock index 977e0b9a8..9e6d7425a 100644 --- a/rebar.config.lock +++ b/rebar.config.lock @@ -3,6 +3,7 @@ {sub_dirs,["rel","apps/riak"]}. {require_otp_vsn,"R16|17"}. {cover_enabled,true}. +{recursive_cmds,[xref]}. {lib_dirs,["apps/riak"]}. {erl_opts,[debug_info,fail_on_warning]}. {eunit_opts,[verbose]}. @@ -186,7 +187,7 @@ "21c6e52ced3af294f2fe636039106068da12eeeb"}}, {yokozuna,".*", {git,"git://github.com/basho/yokozuna.git", - "1c533e3366a3c67c466f5d6523bc9c87ecea9400"}}, + "95a1bef13efd1beee8f987a6a314f8f3030c7354"}}, {rebar_lock_deps_plugin,".*", {git,"https://github.com/basho/rebar_lock_deps_plugin.git", "8816f45ff38cd04d5c7741bd39166af58116dd44"}}]}. diff --git a/rel/reltool.config b/rel/reltool.config index 14c925135..a6b3dde87 100644 --- a/rel/reltool.config +++ b/rel/reltool.config @@ -2,7 +2,7 @@ %% ex: ft=erlang ts=4 sw=4 et {sys, [ {lib_dirs, ["../deps"]}, - {rel, "riak", "2.9.0", + {rel, "riak", "2.9.1", [ kernel, stdlib, @@ -125,6 +125,8 @@ {template, "../deps/leveled/priv/leveled.schema", "lib/23-leveled.schema"}, {template, "../deps/leveled/priv/leveled_multi.schema", "lib/24-leveled_multi.schema"}, + {template, "../deps/riak_repl/priv/riak_repl.schema", "lib/25-riak_repl.schema"}, + {template, "../deps/yokozuna/priv/yokozuna.schema", "lib/30-yokozuna.schema"}, {template, "files/advanced.config", "etc/advanced.config"},