create a .env
PASSWORD=xxxxxx
add in docker compose
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
container_name: gitlab
hostname: gitlab.raphaelpiccolo.com
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.raphaelpiccolo.com'
# Add any other gitlab.rb configuration here, each on its own line
gitlab_rails['gitlab_shell_ssh_port'] = 20022
gitlab_rails['initial_root_password'] = '${PASSWORD}'
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['proxy_set_headers'] = {
'X-Forwarded-Proto' => 'https',
'X-Forwarded-Ssl' => 'on',
'Host' => 'gitlab.raphaelpiccolo.com'
}
ports:
- '20022:22'
volumes:
- './gitlab/config:/etc/gitlab'
- './gitlab/logs:/var/log/gitlab'
- './gitlab/data:/var/opt/gitlab'
labels:
- traefik.enable=true
- traefik.http.routers.gitlab.rule=Host(`gitlab.raphaelpiccolo.com`)
- traefik.http.services.gitlab.loadbalancer.server.port=80
- traefik.http.routers.gitlab.tls.certresolver=le
- traefik.http.routers.gitlab.entrypoints=websecure
- traefik.http.routers.gitlab.middlewares=securityheaders
go on gitlab :
https://gitlab.raphaelpiccolo.com
user: root
password: generate on first launch
create a project
install a ssh key in settings/ssh
now you can clone/pull/push
create a package.json
{
"name": "test",
"version": "1.0.0",
"description": "test",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "http://gitlab.raphaelpiccolo.com/root/test.git"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"mocha": "^6.2.2"
}
}
inside the project, create .gitlab-ci.yml
image: node:latest
stages:
- build
- test
cache:
paths:
- node_modules/
install_dependencies:
stage: build
script:
- npm install
artifacts:
paths:
- node_modules/
testing_testing:
stage: test
script: npm test
create .gitignore
node_modules/
*~
create test.js
var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal([1, 2, 3].indexOf(4), -1);
});
});
});
create index.js
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
when you commit and push gitlab wil start the pipeline
Install the runner
gitlabrunner:
image: gitlab/gitlab-runner:latest
container_name: gitlabrunner
restart: always
volumes:
- ./gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
on gitlab :
go in settings, cicd, "install runner"
get url and token then run it once to set token and url
docker-compose run gitlabrunner register
choose the runner : docker