CI/CD ir DevOps
Pilnai įrengta „DevOps“ platforma su „Git“ saugykla, CI/CD kanalais ir projektų valdymu
Source control, CI/CD, security, monitoring, and more in a single application
Powerful pipelines with unlimited parallel jobs, Docker support, and Kubernetes integration
Automated security scanning (SAST, DAST, dependency, container) in every pipeline
Built-in Docker registry and multi-format package repository (npm, Maven, PyPI, etc.)
Native K8s integration with auto review apps, canary deploys, and monitoring
Deploy on your infrastructure or use GitLab.com SaaS - same features both ways
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl2. Install Postfix (for email notifications):sudo apt install -y postfix
# Select "Internet Site" and configure your domain3. Add GitLab Package Repository:curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash4. Install GitLab (Community Edition):# Set your domain (or IP)
export EXTERNAL_URL="https://gitlab.yourdomain.com"
# Install GitLab CE
sudo EXTERNAL_URL=$EXTERNAL_URL apt install gitlab-ce
# Check installation status
sudo gitlab-ctl status5. Get Initial Root Password:# Password is auto-generated and stored here
sudo cat /etc/gitlab/initial_root_password
# Login as: root / <password>
# Change password immediately after first login6. Configure GitLab:sudo nano /etc/gitlab/gitlab.rb
# Essential settings:
external_url 'https://gitlab.yourdomain.com'
gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab_rails['time_zone'] = 'UTC'
# Email settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "your-app-password"
gitlab_rails['smtp_domain'] = "gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@yourdomain.com'
# Reconfigure after changes
sudo gitlab-ctl reconfigure7. Install GitLab Runner:# Add GitLab Runner repository
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
# Install
sudo apt install gitlab-runner
# Check status
sudo gitlab-runner status8. Register GitLab Runner:# Get registration token from:
# GitLab UI → Admin → CI/CD → Runners
sudo gitlab-runner register \
--url https://gitlab.yourdomain.com \
--registration-token YOUR_TOKEN \
--executor docker \
--docker-image docker:20.10 \
--docker-privileged \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock9. Enable Let's Encrypt SSL:sudo nano /etc/gitlab/gitlab.rb
# Add:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@yourdomain.com']
external_url 'https://gitlab.yourdomain.com'
# Apply
sudo gitlab-ctl reconfigure10. Access GitLab:stages:
- build
- test
- deploy
variables:
DOCKER_IMAGE: myapp:$CI_COMMIT_SHORT_SHA
build:
stage: build
image: docker:20.10
services:
- docker:20.10-dind
script:
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE
only:
- main
test:
stage: test
image: node:18
script:
- npm install
- npm test
coverage: '/Coverage: \d+\.\d+%/'
deploy_production:
stage: deploy
image: bitnami/kubectl:latest
script:
- kubectl set image deployment/myapp myapp=$DOCKER_IMAGE
environment:
name: production
url: https://app.yourdomain.com
only:
- main
when: manual2. Docker-in-Docker Configuration:services:
- docker:20.10-dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"3. Kubernetes Deployment:deploy:
image: bitnami/kubectl:latest
script:
- kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true
- kubectl config set-credentials admin --token="$KUBE_TOKEN"
- kubectl config set-context default --cluster=k8s --user=admin
- kubectl config use-context default
- kubectl apply -f k8s/deployment.yml
- kubectl rollout status deployment/myapp4. Security Scanning:include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/Dependency-Scanning.gitlab-ci.yml
- template: Security/Container-Scanning.gitlab-ci.ymlBest Practices:Pradėti minutėmis nuo mūsų paprasto VPS diegimo proceso
Išskleidžiama apie 2 minutes • Pilna root access • Pagalba bilietu ir elektroniniu paštu