Depuis que j'ai rejoint l'entreprise en tant qu'ingénieur d'infrastructure et que j'ai travaillé sur des projets AWS, j'ai écrit davantage de Python pour CloudFormation et Lambda. Le nom de Git / GitHub / GitLab était à un niveau que j'ai entendu, mais la gestion de version mentionnée ci-dessus est obligatoire, et j'utiliserai mon propre GitLab. Bien que je sois un amateur, j'ai immédiatement ressenti la commodité et j'ai pensé que je devrais installer GitLab après avoir étudié Docker sur ESXi à la maison. Il est utile pour gérer les fichiers sur les ordinateurs de bureau à la maison et les ordinateurs portables utilisés en privé en déplacement.
Comme il est construit sur ESXi à la maison, s'il casse, je veux éviter d'avoir à étudier la méthode de construction à partir de 0, donc je l'écrirai ici sous forme de mémorandum.
Docker Je veux construire GitLab avec Docker-compose, donc je vais installer Docker.
article | valeur |
---|---|
OS | Ubuntu 19.04 |
sudo addgroup --system docker
sudo usermod -aG docker user01
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
apt-cache madison docker-ce
sudo apt-get install docker-ce=5:18.09.9~3-0~ubuntu-bionic docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic containerd.io
sudo systemctl start docker
sudo systemctl enable docker
GitLab Git Lab est un outil de gestion de version, mais il possède également d'autres fonctionnalités utiles. Veuillez consulter le site officiel pour plus de détails.
--Fonctions autres que Git
GItLab DockerCompose Si vous souhaitez télécharger les fichiers suivants et y accéder depuis un autre PC Remplacez GITLAB_HOST = par votre adresse IP locale.
https://github.com/sameersbn/docker-gitlab/blob/master/docker-compose.yml
version: '2'
services:
redis:
restart: always
image: sameersbn/redis:4.0.9-2
command:
- --loglevel warning
volumes:
- redis-data:/var/lib/redis:Z
postgresql:
restart: always
image: sameersbn/postgresql:10-2
volumes:
- postgresql-data:/var/lib/postgresql:Z
environment:
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
gitlab:
restart: always
image: sameersbn/gitlab:12.5.2
depends_on:
- redis
- postgresql
ports:
- "10080:80"
- "10022:22"
volumes:
- gitlab-data:/home/git/data:Z
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
- TZ=Asia/Kolkata
- GITLAB_TIMEZONE=Kolkata
- GITLAB_HTTPS=false
- SSL_SELF_SIGNED=false
- GITLAB_HOST=localhost
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022
- GITLAB_RELATIVE_URL_ROOT=
- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_ROOT_PASSWORD=
- GITLAB_ROOT_EMAIL=
- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
- GITLAB_NOTIFY_PUSHER=false
- [email protected]
- [email protected]
- [email protected]
- GITLAB_BACKUP_SCHEDULE=daily
- GITLAB_BACKUP_TIME=01:00
- SMTP_ENABLED=false
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- [email protected]
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- [email protected]
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_STARTTLS=false
- OAUTH_ENABLED=false
- OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
- OAUTH_ALLOW_SSO=
- OAUTH_BLOCK_AUTO_CREATED_USERS=true
- OAUTH_AUTO_LINK_LDAP_USER=false
- OAUTH_AUTO_LINK_SAML_USER=false
- OAUTH_EXTERNAL_PROVIDERS=
- OAUTH_CAS3_LABEL=cas3
- OAUTH_CAS3_SERVER=
- OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
- OAUTH_CAS3_LOGIN_URL=/cas/login
- OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
- OAUTH_CAS3_LOGOUT_URL=/cas/logout
- OAUTH_GOOGLE_API_KEY=
- OAUTH_GOOGLE_APP_SECRET=
- OAUTH_GOOGLE_RESTRICT_DOMAIN=
- OAUTH_FACEBOOK_API_KEY=
- OAUTH_FACEBOOK_APP_SECRET=
- OAUTH_TWITTER_API_KEY=
- OAUTH_TWITTER_APP_SECRET=
- OAUTH_GITHUB_API_KEY=
- OAUTH_GITHUB_APP_SECRET=
- OAUTH_GITHUB_URL=
- OAUTH_GITHUB_VERIFY_SSL=
- OAUTH_GITLAB_API_KEY=
- OAUTH_GITLAB_APP_SECRET=
- OAUTH_BITBUCKET_API_KEY=
- OAUTH_BITBUCKET_APP_SECRET=
- OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
- OAUTH_SAML_IDP_CERT_FINGERPRINT=
- OAUTH_SAML_IDP_SSO_TARGET_URL=
- OAUTH_SAML_ISSUER=
- OAUTH_SAML_LABEL="Our SAML Provider"
- OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
- OAUTH_SAML_GROUPS_ATTRIBUTE=
- OAUTH_SAML_EXTERNAL_GROUPS=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
- OAUTH_CROWD_SERVER_URL=
- OAUTH_CROWD_APP_NAME=
- OAUTH_CROWD_APP_PASSWORD=
- OAUTH_AUTH0_CLIENT_ID=
- OAUTH_AUTH0_CLIENT_SECRET=
- OAUTH_AUTH0_DOMAIN=
- OAUTH_AUTH0_SCOPE=
- OAUTH_AZURE_API_KEY=
- OAUTH_AZURE_API_SECRET=
- OAUTH_AZURE_TENANT_ID=
volumes:
redis-data:
postgresql-data:
docker-compose up -d
Simplement fais-le. Vous pouvez y accéder si le port10080 est libre.
CI/CD Les paramètres Runnsers sont nécessaires pour exécuter CI / CD. Runnsers nécessite Runner ou k8s. Cette fois, je l'ai construit avec Runnser.
Créez un projet avec GitLab
Allez sur la page Projet et allez dans Paramètres sur la gauche
CI/CD -> Runners -> Expand
Suivez «Configurer manuellement un Runner spécifique» pour configurer.
Installation Page officielle
```bash
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo systemctl enable gitlab-runner
sudo systemctl start gitlab-runner
```
Liaison avec GitLab Page officielle
sudo /usr/local/bin/gitlab-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
#CI dans GitLab/Collez l'URL sur la page Paramètres du CD
Please enter the gitlab-ci token for this runner
#CI dans GitLab/Collez le jeton sur la page Paramètres du CD
Please enter the gitlab-ci description for this runner
#Afficher le nom dans GitLab
Please enter the gitlab-ci tags for this runner (comma separated):
#Nom de la balise dans GitLab
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker #Cette fois, nous allons utiliser docker, alors entrez docker.
Please enter the Docker image (eg. ruby:2.1):
Python:3.7 #Cette fois, nous avons affaire à python, donc python3.Entrez l'image docker de 7.
Il réussit si Runnser est ajouté aux Runners activés pour ce projet dans la page Paramètres CI / CD. S'il n'apparaît pas, veuillez réessayer le lien ci-dessus avec GitLab.
image: python:3-alpine # docker image
before_script: #Commande à exécuter en premier
- pip install pytest pytest-cov autopep8 radon
stages: #Vous pouvez spécifier l'ordre de certains travaux que vous souhaitez exécuter
- build
- test
job1: #nom du travail(Tout)
stage: build #Définir comme construction sur scène
script: #Description de la commande dans la liste
- autopep8 -i testCode.py
- radon mi -s testCode.py
- radon cc -s testCode.py
job2:
stage: test
script:
- pytest -v --cov=.
Ce qui précède décrit par étapes pour exécuter job2 si job1 réussit. Veuillez vous référer à l'article suivant pour gitlab-ci.yml.
Je n'ai pas d'autre CD important, mais j'espère que vous pourrez vous référer à l'article AWS Lambda.
À la suite de sa rédaction sous forme de mémorandum, il est devenu une copie officielle. Le CI / CD de GitLab n'était pas trop addictif et j'ai pu le configurer. Désormais, je souhaite accélérer le développement dans un sens positif. (Qu'est-ce qu'un ingénieur d'infrastructure ...) Puisqu'il est opéré en imitant l'apparence du fonctionnaire et du pionnier, j'apprécierais que vous me disiez s'il y a quelque chose qui ne va pas.