Seit ich als Infrastrukturingenieur in das Unternehmen eingetreten bin und an AWS-Projekten gearbeitet habe, habe ich mehr Python für CloudFormation und Lambda geschrieben. Der Name von Git / GitHub / GitLab war auf einem Niveau, das ich gehört habe, aber die oben erwähnte Versionsverwaltung ist obligatorisch und ich werde mein eigenes GitLab verwenden. Obwohl ich ein Amateur war, fühlte ich sofort die Bequemlichkeit und dachte, dass ich GitLab einrichten sollte, nachdem ich Docker auf ESXi zu Hause studiert hatte. Es ist nützlich für die Verarbeitung von Dateien auf Desktop-PCs zu Hause und von Notebooks, die privat verwendet werden.
Da es zu Hause auf ESXi basiert, möchte ich vermeiden, dass die Konstruktionsmethode von 0 untersucht werden muss, wenn es kaputt geht. Deshalb werde ich es hier als Memorandum schreiben.
Docker Ich möchte GitLab mit Docker-compose erstellen, also werde ich Docker installieren.
Artikel | Wert |
---|---|
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 ist ein Versionsverwaltungstool, bietet jedoch auch andere nützliche Funktionen. Weitere Informationen finden Sie auf der offiziellen Website.
GItLab DockerCompose Wenn Sie die folgenden Dateien herunterladen und von einem anderen PC aus darauf zugreifen möchten Ändern Sie GITLAB_HOST = in Ihre lokale IP-Adresse.
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
TU es einfach. Sie können darauf zugreifen, wenn port10080 frei ist.
CI/CD Runnsers-Einstellungen sind erforderlich, um CI / CD auszuführen. Runnsers benötigt Runner oder k8s. Diesmal habe ich es mit Runnser gebaut.
Erstellen Sie ein Projekt mit GitLab
Gehen Sie zur Seite Projekt und gehen Sie links zu Einstellungen
CI/CD -> Runners -> Expand
Befolgen Sie zum Einrichten "Manuelles Einrichten eines bestimmten Läufers".
Installation Offizielle Seite
```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
```
Verknüpfung mit GitLab Offizielle Seite
sudo /usr/local/bin/gitlab-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
#CI in GitLab/Fügen Sie die URL auf der Seite CD-Einstellungen ein
Please enter the gitlab-ci token for this runner
#CI in GitLab/Fügen Sie das Token auf der Seite CD-Einstellungen ein
Please enter the gitlab-ci description for this runner
#Anzeigename in GitLab
Please enter the gitlab-ci tags for this runner (comma separated):
#Tag-Name in GitLab
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker #Dieses Mal werden wir Docker verwenden, also geben Sie Docker ein.
Please enter the Docker image (eg. ruby:2.1):
Python:3.7 #Dieses Mal haben wir es mit Python zu tun, also mit Python3.Geben Sie das Docker-Bild von 7 ein.
Es ist erfolgreich, wenn Runnser zu den für dieses Projekt aktivierten Läufern auf der Seite CI / CD-Einstellungen hinzugefügt wird. Wenn es nicht angezeigt wird, versuchen Sie es erneut mit dem obigen Link mit GitLab.
image: python:3-alpine # docker image
before_script: #Befehl, der zuerst ausgeführt werden soll
- pip install pytest pytest-cov autopep8 radon
stages: #Sie können die Reihenfolge einiger Jobs angeben, die Sie ausführen möchten
- build
- test
job1: #Berufsbezeichnung(Irgendein)
stage: build #Set als Build on Stage
script: #Befehlsbeschreibung in Liste
- autopep8 -i testCode.py
- radon mi -s testCode.py
- radon cc -s testCode.py
job2:
stage: test
script:
- pytest -v --cov=.
Das Obige beschreibt in Schritten die Ausführung von Job2, wenn Job1 erfolgreich ist. Weitere Informationen zu gitlab-ci.yml finden Sie im folgenden Artikel.
Ich habe keine weitere wichtige CD, aber ich hoffe, Sie können sich auf den AWS Lambda-Artikel beziehen.
Durch das Schreiben als Memorandum wurde es zu einer offiziellen Kopie. GitLabs CI / CD machte nicht süchtig und ich konnte es einrichten. Von nun an möchte ich die Entwicklung im positiven Sinne beschleunigen. (Was ist ein Infrastrukturingenieur ...) Da es durch Nachahmung des Aussehens des Beamten und Pioniers betrieben wird, würde ich es begrüßen, wenn Sie mir sagen könnten, ob etwas nicht stimmt.