Construire un pipeline CICD à l'aide de Docker (mémorandum personnel)

Paramètres Git

1.Créer un référentiel avec n'importe quel nom
2.paramètres publics
3.Cliquez sur "créer un référentiel"
4.Paramètre d'utilisateur
-#Faites-le dans le répertoire de l'application
% git config user.nom "nom d'utilisateur"
% git config user.email "email d'enregistrement github"
-#Confirmez que le nom d'utilisateur et l'adresse e-mail définis sont enregistrés.
% git config user.name
% git config user.email
5.Lier des référentiels distants
%URL du référentiel git remote add origin.git
-#Confirmation de la liaison
% git remote -v

Pousser vers le référentiel

% git add .
% git commit -m ‘first commit’
% git push origin master

Vérifiez si l'application peut être poussée vers le référentiel.

Inscrivez-vous avec Travis CI

1.Cliquez sur Se connecter en haut à droite
2.Cliquez sur "SE CONNECTER AVEC GITHUB"
3.「Authorize travis-Cliquez sur "ci"
4.Entrez les informations sur Github
5.la gauche"+Cliquez sur
6.Cliquez sur n'importe quel référentiel pour synchroniser
7.Cliquez sur "Dashbord" en haut et assurez-vous que vous avez le référentiel sélectionné dans "Dépôts actifs".

Créer .travis.yml

-#Créer dans le répertoire personnel de l'application
% vim .travis.yaml

yaml:.travis.yaml


#Exécuter avec les privilèges sudo
sudo: required
#Déclaration d'utilisation de docker
services: docker

#Démarrer le conteneur
before_install:
  - docker-compose up --build -d

script:
  #Préparation DB
  - docker-compose exec —env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec —env 'RAILS_ENV=test' web rails db:migrate
  #Lancer le test
  - docker-compose exec —env 'RAILS_ENV=test' web rails test

Vous devez pousser le code sur github pour que Travi CI fonctionne.

docker-compose.Description de yml
version: '3'
#volume du docker Les données sont enregistrées ici
volumes: 
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/product-register'
#Le paramètre de variable d'environnement du conteneur, à l'origine le mot de passe ne doit pas être écrit directement.
    environment:
      - 'DATABASE_PASSWORD=postgres'
    tty: true
    stdin_open: true
#Créé une fois le service de base de données créé
    depends_on:
      - db
#Vous pouvez accéder à db depuis le Web
    links:
      - db
#conteneur postgres
  db:
    image: postgres
#Base de données hôte-Stocker les données dans les données
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'
#Requis lors de l'exécution de postgres autres que localhost
      - 'POSTGRES_HOST_AUTH_METHOD=trust'

Pousser pour git

% git add .
% git commit -m ‘update travis and compose’
% git push origin master

Ici vous pouvez voir la situation d'exécution réelle sur la page travis.

Préparer Heroku

1.s'identifier
2.Cliquez sur "créer une nouvelle application"
3.Entrez n'importe quel nom dans "Nom de l'application".
4.Cliquez sur "Créer une application"
5.Cliquez sur "Ressources" lors de sa création.
6.「Add-Recherche par postgres avec "ons". Sélectionnez "Heroku Postgres"
7.Cliquez sur "Provision".
8.Cliquez sur "Paramètres", puis sur "Reveal Config Vars".
9.config/master.Entrez la valeur de la clé dans VALUE.
10.Entrez "SECRET" pour KEY_KEY_Entrez "BASE".
11.Cliquez sur "Ajouter".
12.Cliquez sur l'onglet "Déployer".
13.Cliquez sur GitHub pour "Méthode de déploiement"
14.Entrez le nom du référentiel dans "Se connecter à Git Hub" et cliquez sur "Rechercher"
15.Cliquez sur "Connet" de n'importe quel référentiel
16.Attendez que CI réussisse avant de déployer dans "Déploiements automatiques"(Déployer après avoir réussi CI)Vérifiez à.
17.Cliquez sur "Activer le déploiement automatique"

Définissez le bas de database.yml comme ceci

config/databese.yml


# You can use this database configuration with:
#
production:
  url: <%= ENV['DATABASE_URL'] %>
#
# production:
#   <<: *default
#   database: product-register_production
#   username: product-register
#   password: <%= ENV['PRODUCT-REGISTER_DATABASE_PASSWORD'] %>

Modifier .travis.yml

yml:.travis.yml


#Exécuter avec les privilèges sudo
sudo: required
#Déclaration d'utilisation de docker
services: docker

#Démarrer le conteneur
before_install:
  - docker-compose up --build -d
#Connectez-vous au registre Docker d'Heroku
  - docker login -u "$HEROKU_USERNAME" -p "$HEROKU_API_KEY" registry.heroku.com

script:
  #Préparation DB
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:migrate
  #Lancer le test
  - docker-compose exec --env 'RAILS_ENV=test' web rails test

deploy:
  provider: script
  script:
    docker build -t registry.heroku.com/$HEROKU_API_NAME/web -f Dockerfile.prod .;
    docker push registry.heroku.com/$HEROKU_API_NAME/web;
    heroku run --app $HEROKU_API_NAME rails db:migrate;
  on:
    branch: master

Si vous ajoutez un commentaire, vous verrez des problèmes, il est donc préférable de ne pas l'ajouter autant que possible.

Définir les variables d'environnement dans Travis CI

-# Heroku-Installer cli
% brew tap heroku/brew && brew install heroku
-#Obtenir un jeton
% heroku authorizations:create
  1. Ouvrez Travis CI et ouvrez le référentiel.
  2. Cliquez sur "Paramètres" sous "Plus d'options"
  3. Entrez "HEROKU_USERNAME" dans le NOM des "Variables d'environnement" et "_" dans la VALEUR. Cliquez sur "Ajouter". De la même manière, saisissez "HEROKU_API_KEY" dans NAME, saisissez le jeton dans VALUE et cliquez sur "Ajouter". Saisissez également le nom du référentiel heroku dans "HEROKU_API_NAME".

Définir des variables d'environnement dans Heroku

  1. Ouvrez Heroku et cliquez sur n'importe quelle application
  2. Cliquez sur l'onglet Paramètres, puis sur Reveal Config Vars.
  3. Définissez "DATABASE_PASSWORD = postgres" dans l'environnement de service de base de données défini dans docker-compose.yml comme DATABASE_PASSWORD comme KEY et postgres comme VALUE, puis cliquez sur "Ajouter".

Créer Dockerfile.prod (pour l'environnement de production)

% vim Dockerfile.prod

Dockerfile.prod


FROM ruby:2.5
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    postgresql-client \
    yarn
WORKDIR /product-register
COPY Gemfile Gemfile.lock /product-register/
RUN bundle install
#Déplacer tout le code du répertoire actuel vers le conteneur
COPY . .
#Démarrer le serveur de rails
CMD [ "rails", "s"]
% git add .
% git commit -m ’add deploy code’
% git push origin master

Flux de développement réel

  1. Créez la branche% git checkout -b hoge
  2. Faites le travail
  3. Ajoutez le fichier modifié add% git add.
  4. Commit changes% git commit -m ‘message’
  5. Push% git push origin énorme sur la branche (Travis CI fonctionne)
  6. Création d'une pull request
  7. Fusionner la demande d'extraction (une fois Travis CI terminé)
  8. Travis CI fonctionne
  9. Déployé sur Heroku.

Recommended Posts

Construire un pipeline CICD à l'aide de Docker (mémorandum personnel)
Création d'un hôte Docker sur AWS à l'aide de Docker Machine (mémorandum personnel)
Docker Machine (Mémorandum personnel)
Gestion des données à l'aide du volume dans Docker (mémorandum personnel)
Réseau Docker (mémorandum personnel)
Gestion des données à l'aide de Bindmount de Docker et de tmpfs (mémorandum personnel)
Un mémorandum lors de l'installation de Docker et de la construction d'un conteneur Linux
Construction d'un environnement d'analyse de données avec Docker (mémorandum personnel)
Lancer un conteneur docker sur EC2 (mémorandum personnel)
Création d'un environnement de développement Kotlin à l'aide de SDKMAN
[Mémo personnel] Écriture d'un fichier à l'aide de BufferedWriter
Mémorandum Docker
[Mémo personnel] Lecture de fichiers à l'aide de BufferedReader
Créer un pipeline ML à l'aide de Google Cloud Dataflow (1)
Créez instantanément un environnement Privoxy + Tor à l'aide de Docker
Créer une application Kotlin à l'aide du conteneur OpenJDK Docker
Construction de l'environnement de développement Django à l'aide de Docker-compose (mémorandum personnel)
Mémorandum technique (Docker)
Commande de mémorandum docker
Mémorandum de commande Docker
Un mémorandum lors de la tentative de création d'une interface graphique à l'aide de JavaFX
Essayez de créer un environnement de développement Java à l'aide de Docker
Un mémorandum pour créer un enregistreur étendu à l'aide de org.slf4j.Logger