Gitlab CI
- https://about.gitlab.com
- All in one
- Requirements: 4GB min
Gitlab Container
# docker-compose.yml
version: "2"
services:
gitlab:
image: "gitlab/gitlab-ce:latest"
restart: always
hostname: "172.17.0.1"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "http://172.17.0.1:9090"
gitlab_rails["gitlab_shell_ssh_port"] = 2224
ports:
- "9090:9090"
- "2224:22"
volumes:
- "./config:/etc/gitlab"
- "./logs:/var/log/gitlab"
- "./data:/var/opt/gitlab"
Gitlab runner
Start runner
#!/bin/sh
docker run -d --name gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v `pwd`/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
Register runner
$ docker exec -it gitlab-runner gitlab-runner register
Config
# config.toml
[[runners]]
name = "bender"
url = "http://"172.17.0.1:9090/"
token = "3bd3d65fd0fe66bcece672a2eb7603"
executor = "docker"
[runners.docker]
tls_verify = false
image = "rocker/r-base"
privileged = false
disable_cache = false
volumes = ["/www/data_science:/share_that", "/cache"]
shm_size = 0
pull_policy = "never"
[runners.cache]
Pipeline
# .gitlab-ci.yml
stages:
- julia
- r
- deploy
julia:
stage: julia
image: julia
artifacts:
paths:
- that.csv
expire_in: 5 minutes
script:
- julia create_csv.jl
r:
stage: r
image: rocker/r-base
script:
- Rscript -e "df <- read.csv('that.csv'); do_science(df)"
deploy:
stage: deploy
image: alpine
script:
- cp that.csv /www/public