Erstellen einer CICD-Pipeline mit Docker (persönliches Memorandum)

Git-Einstellungen

1.Erstellen Sie ein Repository mit einem beliebigen Namen
2.öffentliche Einstellungen
3.Klicken Sie auf "Repository erstellen".
4.Benutzer Einstellungen
-#Mach es im App-Verzeichnis
% git config user.Name "Benutzername"
% git config user.E-Mail "Github-Registrierungs-E-Mail"
-#Bestätigen Sie, dass der festgelegte Benutzername und die E-Mail-Adresse registriert sind.
% git config user.name
% git config user.email
5.Remote-Repositorys verknüpfen
%git remote add origin repository URL.git
-#Bestätigung der Verknüpfung
% git remote -v

Zum Repository verschieben

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

Überprüfen Sie, ob die App in das Repository verschoben werden kann.

Registrieren Sie sich bei Travis CI

1.Klicken Sie oben rechts auf Anmelden
2.Klicken Sie auf "MIT GITHUB ANMELDEN".
3.「Authorize travis-Klicken Sie auf "ci"
4.Geben Sie Informationen zu Github ein
5.links"+Klicken
6.Klicken Sie auf ein Repository, um es zu synchronisieren
7.Klicken Sie oben auf "Dashbord" und stellen Sie sicher, dass Sie das ausgewählte Repository unter "Aktive Repositorys" haben.

Erstellen von .travis.yml

-#Erstellen Sie im Home-Verzeichnis der App
% vim .travis.yaml

yaml:.travis.yaml


#Führen Sie mit Sudo-Berechtigungen aus
sudo: required
#Nutzungserklärung des Dockers
services: docker

#Container starten
before_install:
  - docker-compose up --build -d

script:
  #DB Vorbereitung
  - docker-compose exec —env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec —env 'RAILS_ENV=test' web rails db:migrate
  #Führen Sie den Test aus
  - docker-compose exec —env 'RAILS_ENV=test' web rails test

Sie müssen den Code an github senden, damit Travi CI funktioniert.

docker-compose.Beschreibung von yml
version: '3'
#Docker-Volume Hier werden Daten gespeichert
volumes: 
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/product-register'
#Die Einstellung der Umgebungsvariablen des Containers, ursprünglich das Kennwort, sollte nicht direkt geschrieben werden.
    environment:
      - 'DATABASE_PASSWORD=postgres'
    tty: true
    stdin_open: true
#Wird erstellt, sobald der Datenbankdienst erstellt wurde
    depends_on:
      - db
#Sie können über das Web auf db zugreifen
    links:
      - db
#Postgres Container
  db:
    image: postgres
#Host db-Daten in Daten speichern
    volumes:
      - 'db-data:/var/lib/postgresql/data'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=postgres'
#Erforderlich, wenn andere Postgres als localhost ausgeführt werden
      - 'POSTGRES_HOST_AUTH_METHOD=trust'

Zum Git drücken

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

Hier sehen Sie die aktuelle Ausführungssituation auf der Travis-Seite.

Heroku vorbereiten

1.Anmeldung
2.Klicken Sie auf "Neue App erstellen".
3.Geben Sie einen beliebigen Namen in "APP-Name" ein.
4.Klicken Sie auf "App erstellen".
5.Klicken Sie beim Erstellen auf "Ressourcen".
6.「Add-Suche nach Postgres mit "ons". Wählen Sie "Heroku Postgres"
7.Klicken Sie auf "Bereitstellung".
8.Klicken Sie auf "Einstellungen" und dann auf "Konfigurationsvars anzeigen".
9.config/master.Geben Sie den Wert des Schlüssels in VALUE ein.
10.Geben Sie "SECRET" für KEY ein_KEY_Geben Sie "BASE" ein.
11.Klicken Sie auf "Hinzufügen".
12.Klicken Sie auf die Registerkarte "Bereitstellen".
13.Klicken Sie auf GitHub für "Bereitstellungsmethode"
14.Geben Sie den Namen des Repositorys in "Mit Git Hub verbinden" ein und klicken Sie auf "Suchen".
15.Klicken Sie in einem beliebigen Repository auf "Connet"
16.Warten Sie, bis CI erfolgreich ist, bevor Sie es in "Automatische Bereitstellungen" bereitstellen.(Bereitstellung nach Übergabe von CI)Überprüfe.
17.Klicken Sie auf "Automatische Bereitstellung aktivieren".

Stellen Sie den unteren Rand von database.yml wie folgt ein

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'] %>

Ändern Sie .travis.yml

yml:.travis.yml


#Führen Sie mit Sudo-Berechtigungen aus
sudo: required
#Nutzungserklärung des Dockers
services: docker

#Container starten
before_install:
  - docker-compose up --build -d
#Melden Sie sich bei Herokus Docker-Registrierung an
  - docker login -u "$HEROKU_USERNAME" -p "$HEROKU_API_KEY" registry.heroku.com

script:
  #DB Vorbereitung
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:migrate
  #Führen Sie den Test aus
  - 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

Wenn Sie einen Kommentar hinzufügen, werden Probleme angezeigt. Es ist daher besser, ihn nicht so oft wie möglich hinzuzufügen.

Legen Sie Umgebungsvariablen in Travis CI fest

-# Heroku-Installieren Sie cli
% brew tap heroku/brew && brew install heroku
-#Bekomme Token
% heroku authorizations:create
  1. Öffnen Sie Travis CI und öffnen Sie das Repository.
  2. Klicken Sie unter "Weitere Optionen" auf "Einstellungen".
  3. Geben Sie "HEROKU_USERNAME" in den Namen "Umgebungsvariablen" und "_" in den Wert ein. Klicken Sie auf "Hinzufügen". Geben Sie auf die gleiche Weise "HEROKU_API_KEY" in NAME ein, geben Sie das Token in VALUE ein und klicken Sie auf "Add". Geben Sie außerdem den Namen des Heroku-Repositorys in "HEROKU_API_NAME" ein.

Legen Sie Umgebungsvariablen in Heroku fest

  1. Öffnen Sie Heroku und klicken Sie auf eine App
  2. Klicken Sie auf die Registerkarte Einstellungen und dann auf Konfigurationsvars anzeigen.
  3. Setzen Sie "DATABASE_PASSWORD = postgres" in der Umgebung des in docker-compose.yml festgelegten Datenbankdienstes als DATABASE_PASSWORD als KEY und postgres als VALUE und klicken Sie auf "Add".

Erstellen Sie Dockerfile.prod (für die Produktionsumgebung)

% 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
#Verschieben Sie den gesamten Code im aktuellen Verzeichnis in den Container
COPY . .
#Starten Sie den Rails-Server
CMD [ "rails", "s"]
% git add .
% git commit -m ’add deploy code’
% git push origin master

Tatsächlicher Entwicklungsfluss

  1. Erstellen Sie den Zweig% git checkout -b hoge
  2. Mach die Arbeit
  3. Fügen Sie die geänderte Datei hinzu. Add% git add.
  4. Änderungen festschreiben% git festschreiben -m ‘Nachricht’
  5. Schieben Sie% git Push Origin auf den Zweig (Travis CI funktioniert)
  6. Erstellen einer Pull-Anfrage
  7. Pull-Anforderung zusammenführen (nachdem Travis CI abgeschlossen ist)
  8. Travis CI funktioniert
  9. Bereitgestellt für Heroku.

Recommended Posts

Erstellen einer CICD-Pipeline mit Docker (persönliches Memorandum)
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Datenverwaltung mit Volume in Docker (persönliches Memorandum)
Docker-Netzwerk (persönliches Memorandum)
Datenverwaltung mit Docker's bindmount und tmpfs (persönliches Memorandum)
Ein Memorandum bei der Installation von Docker und der Erstellung eines Linux-Containers
Erstellung einer Datenanalyseumgebung mit Docker (persönliches Memorandum)
Starten Sie einen Docker-Container auf EC2 (persönliches Memorandum)
Erstellen einer Kotlin-Entwicklungsumgebung mit SDKMAN
[Persönliches Memo] Schreiben einer Datei mit BufferedWriter
Docker Memorandum
[Persönliches Memo] Lesen von Dateien mit BufferedReader
Erstellen einer ML-Pipeline mit Google Cloud Dataflow (1)
Erstellen Sie mit Docker sofort eine Privoxy + Tor-Umgebung
Erstellen Sie eine Kotlin-App mit dem OpenJDK Docker-Container
Aufbau einer Django-Entwicklungsumgebung mit Docker-Compose (persönliches Memorandum)
Technisches Memorandum (Docker)
Memorandum Docker-Befehl
Docker-Befehlsmemorandum
Ein Memorandum beim Versuch, eine GUI mit JavaFX zu erstellen
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Ein Memorandum zum Erstellen eines erweiterten Loggers mit org.slf4j.Logger