Skip to content
Snippets Groups Projects
Commit 59dde842 authored by Éloïs's avatar Éloïs
Browse files

ci: move build on a dedicated job & add job deploy_docker_debug

parent 869fe88b
No related branches found
No related tags found
1 merge request!16ci: deploy a docker debug image a each master commit
stages: stages:
- quality - quality
- build
- tests - tests
#- build - deploy
workflow: workflow:
rules: rules:
...@@ -32,6 +33,24 @@ fmt_and_clippy: ...@@ -32,6 +33,24 @@ fmt_and_clippy:
- cargo clippy -- -V - cargo clippy -- -V
- cargo clippy --all --tests -- -D warnings - cargo clippy --all --tests -- -D warnings
build_debug:
extends: .env
rules:
- if: $CI_COMMIT_REF_NAME =~ /^wip*$/
when: manual
- if: $CI_COMMIT_TAG
when: never
- if: '$CI_MERGE_REQUEST_ID ||$CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH =~ /^release/'
- when: manual
stage: build
script:
- cargo build
- mkdir build
- mv target/debug/duniter build/duniter
artifacts:
paths:
- build/
tests: tests:
extends: .env extends: .env
rules: rules:
...@@ -43,7 +62,35 @@ tests: ...@@ -43,7 +62,35 @@ tests:
- when: manual - when: manual
stage: tests stage: tests
variables: variables:
DUNITER_BINARY_PATH: "../build/duniter"
DUNITER_INTEGRATION_TESTS_SPAWN_NODE_DURATION: "10" DUNITER_INTEGRATION_TESTS_SPAWN_NODE_DURATION: "10"
script: script:
- cargo build
- cargo test - cargo test
dependencies:
- build_debug
.docker-build-app-image:
stage: deploy
image: docker:18.06
tags:
- redshift
services:
- docker:18.06-dind
before_script:
- docker info
script:
- docker pull $CI_REGISTRY_IMAGE:$IMAGE_TAG || true
- docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" -f $DOCKERFILE_PATH .
- docker login -u "duniterteam" -p "$DUNITERTEAM_PASSWD"
- docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "duniter/duniter-v2s:$IMAGE_TAG"
- docker push "duniter/duniter-v2s:$IMAGE_TAG"
deploy_docker_debug:
extends: .docker-build-app-image
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == "master"
variables:
DOCKERFILE_PATH: "docker/duniter-debug.Dockerfile"
IMAGE_TAG: "debug-sha-$CI_COMMIT_SHORT_SHA"
# Duniter debug node
#
# Requires to run from repository root and to copy the binary in the build folder
# (part of the CI workflow)
FROM docker.io/library/ubuntu:20.04 AS builder
RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates
FROM debian:buster-slim
LABEL maintainer "elois@duniter.org"
LABEL description="Binary for duniter debug node"
RUN useradd -m -u 1000 -U -s /bin/sh -d /duniter duniter && \
mkdir -p /duniter/.local/share && \
mkdir /data && \
chown -R duniter:duniter /data && \
ln -s /data /duniter/.local/share/duniter && \
rm -rf /usr/bin /usr/sbin
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
USER duniter
COPY --chown=duniter build/duniter /duniter/duniter
RUN chmod uog+x /duniter/duniter
# 30333 for p2p
# 9933 for RPC call
# 9944 for Websocket
# 9615 for Prometheus (metrics)
EXPOSE 30333 9933 9944 9615
VOLUME ["/data"]
ENTRYPOINT ["/duniter/duniter"]
...@@ -41,11 +41,14 @@ impl Drop for Process { ...@@ -41,11 +41,14 @@ impl Drop for Process {
} }
pub async fn spawn_node() -> (Api, Client, Process) { pub async fn spawn_node() -> (Api, Client, Process) {
let duniter_binary_path =
std::env::var("DUNITER_BINARY_PATH").unwrap_or("../target/debug/duniter".to_owned());
let p2p_port = portpicker::pick_unused_port().expect("No ports free"); let p2p_port = portpicker::pick_unused_port().expect("No ports free");
let rpc_port = portpicker::pick_unused_port().expect("No ports free"); let rpc_port = portpicker::pick_unused_port().expect("No ports free");
let ws_port = portpicker::pick_unused_port().expect("No ports free"); let ws_port = portpicker::pick_unused_port().expect("No ports free");
let process = Process( let process = Process(
Command::new("../target/debug/duniter") Command::new(duniter_binary_path)
.args([ .args([
"--execution=Native", "--execution=Native",
"--no-telemetry", "--no-telemetry",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment