Ändern Sie den Einstellungswert für jede Umgebung mit Digdag (RubyOnRails).

Über Digdag

Getting started Architecture Concepts Workflow definition Scheduling workflow Operators Command reference Language API -Ruby Ändern Sie den Einstellungswert für jede Umgebung mit Digdag (RubyOnRails) Stapelimplementierung in RubyOnRails-Umgebung mit Digdag

Dinge die zu tun sind

Ich werde eine Umgebungseinstellungsdatei im YAML-Format für Digdag in der Beispielanwendung des Ruby on Rails-Lernprogramms erstellen, die Umgebungsvariable aus der Ruby-Aufgabe abrufen, sie in der Digdag-Umgebungsvariablen festlegen und prüfen, bis ich die Digdag-Umgebungsvariable aus einer anderen Ruby-Aufgabe abrufen kann. ..

Der Beispielanwendungscode für das Ruby on Rails-Lernprogramm ist für diese Diskussion nicht relevant. Wir werden ihn jedoch herunterladen und Digdags Workflow zu diesem Projekt hinzufügen, um ihn in der nächsten Stapelimplementierung zu verwenden.

Laden Sie die Beispielanwendung für das Ruby on Rails-Tutorial herunter

https://github.com/yasslab/sample_app スクリーンショット 2020-07-15 23.06.34.png

Workflow-Generierung

$ digdag init workflow
$ cd workflow
$ digdag run workflow.dig

Wenn das folgende Ergebnis angezeigt wird, liegt kein Problem mit der Digdag-Workflow-Umgebung ~ vor

Ergebnis


2020-07-15 22:01:56 +0900 [INFO](0017@[0:default]+workflow+setup): echo>: start 2020-07-15T00:00:00+00:00
start 2020-07-15T00:00:00+00:00
2020-07-15 22:01:57 +0900 [INFO](0017@[0:default]+workflow+disp_current_date): echo>: 2020-07-15 00:00:00 +00:00
2020-07-15 00:00:00 +00:00
2020-07-15 22:01:57 +0900 [INFO](0017@[0:default]+workflow+repeat): for_each>: {order=[first, second, third], animal=[dog, cat]}
2020-07-15 22:01:57 +0900 [INFO](0018@[0:default]+workflow+repeat^sub+for-0=order=0=first&1=animal=1=cat): echo>: first cat
first cat
2020-07-15 22:01:57 +0900 [INFO](0019@[0:default]+workflow+repeat^sub+for-0=order=1=second&1=animal=0=dog): echo>: second dog
second dog
2020-07-15 22:01:58 +0900 [INFO](0020@[0:default]+workflow+repeat^sub+for-0=order=1=second&1=animal=1=cat): echo>: second cat
second cat
2020-07-15 22:01:58 +0900 [INFO](0022@[0:default]+workflow+repeat^sub+for-0=order=2=third&1=animal=1=cat): echo>: third cat
third cat
2020-07-15 22:01:58 +0900 [INFO](0021@[0:default]+workflow+repeat^sub+for-0=order=2=third&1=animal=0=dog): echo>: third dog
third dog
2020-07-15 22:01:58 +0900 [INFO](0017@[0:default]+workflow+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog
first dog
2020-07-15 22:01:58 +0900 [INFO](0017@[0:default]+workflow+teardown): echo>: finish 2020-07-15T00:00:00+00:00
finish 2020-07-15T00:00:00+00:00

Erstellen Sie eine Umgebungsvariablendatei im YAML-Format

$ cd workflow
$ mkdir config
$ vi environment.yml

Ich lege URL, Benutzer, Passwort für jede Entwicklung, Inszenierung und Produktion fest. Durchsuchen Sie diese Umgebungsvariable in der Digdag-Task.

environment.yml


development:
  url: development.jp
  user: development_user
  password: development_password

staging:
  url: staging.jp
  user: staging_user
  password: staging_password
  
production:
  url: procuction.jp
  user: procuction_user
  password: procuction_password

Erstellen Sie eine Ruby-Klasse, die die Umgebungsvariablen der YAML-Datei auf die Umgebungsvariablen von Digdag setzt.

workflowUnter dem OrdnertasksErstellen Sie einen Ordner Erstellen Sie dort environment.rb. Diese Klasse liest Umgebungsvariablen aus der YAML-Datei und speichert sie in den Umgebungsvariablen von Digdag.

$ cd workflow
$ mkdir tasks

environment.rb


require 'yaml'

class Environment
  def load
    environment = Digdag.env.params['environment']
    environment = case environment
                  when 'stg'
                    'staging'
                  when 'prd'
                    'production'
                  else
                    'development'
                  end

    #Rufen Sie die Umgebungsvariablen der entsprechenden Umgebung ab
    config = YAML.load_file('config/environment.yml')[environment]
    config.each do |key, value|
      #In Digdag-Umgebungsvariable speichern
      Digdag.env.store(key.to_sym => value)
    end
  end
end

Aufgabe zu Workflow.dig hinzufügen

$ digdag init workflowLöschen Sie den automatisch generierten Code und fügen Sie den folgenden Code hinzu

workflow.dig


timezone: UTC

+load_environment:
  rb>: Environment.load
  require: 'tasks/environment'
+print_environment_value:
  sh>: echo url:${url} user:${user} password:${password}
+print_ruby:
  rb>: DigdagEnvironment.show
  require: 'tasks/digdag_environment'

■ load_environment task: Eine Aufgabe zum Festlegen der entsprechenden Umgebungsvariablen auf die Digdag-Umgebungsvariable aus den Umgebungsparametern, wenn Digdag ausgeführt wird. ■ print_environment_value: Eine Aufgabe, die Digdag-Umgebungsvariablen von einer Shell-Aufgabe ausgibt ■ print_ruby: Aufgabe zum Ausgeben von Digdag-Umgebungsvariablen aus der Ruby-Klasse

Versuchen Sie es in der Entwicklungsumgebung auszuführen.

$digdag run workflow.dig -p environment=development --rerun

Ausführungsergebnis in Entwicklungsumgebung


2020-07-15 22:49:35 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:49:35 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:development.jp user:development_user password:development_password
url:development.jp user:development_user password:development_password
2020-07-15 22:49:36 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show
url: development.jp
user: development_user
password: development_password

Als nächstes folgt die Staging-Umgebung

$digdag run workflow.dig -p environment=stg --rerun

Die Ausführung führt zu einer Staging-Umgebung


2020-07-15 22:55:33 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:55:33 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:staging.jp user:staging_user password:staging_password
url:staging.jp user:staging_user password:staging_password
2020-07-15 22:55:34 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show
url: staging.jp
user: staging_user
password: staging_password

Endlich die Produktionsumgebung

$digdag run workflow.dig -p environment=prd --rerun

Ausführungsergebnis in Produktionsumgebung


2020-07-15 22:56:30 +0900 [INFO](0017@[0:default]+workflow+load_environment): rb>: Environment.load
2020-07-15 22:56:30 +0900 [INFO](0017@[0:default]+workflow+print_environment_value): sh>: echo url:procuction.jp user:procuction_user password:procuction_password
url:procuction.jp user:procuction_user password:procuction_password
2020-07-15 22:56:31 +0900 [INFO](0017@[0:default]+workflow+print_ruby): rb>: DigdagEnvironment.show

Nachdem die Einstellungen für Umgebungsvariablen abgeschlossen sind, werde ich versuchen, ab dem nächsten Mal einen Stapel mit den Daten der RubyOnRails-Lernprogramm-App zu erstellen.

Recommended Posts

Ändern Sie den Einstellungswert für jede Umgebung mit Digdag (RubyOnRails).
Ändern Sie das Injektionsziel für jede Umgebung mit Spring Boot 2
Geben Sie das Zeitlimit für jeden Pfad mit Rack :: Timeout an
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
[Android] Ändern Sie den App-Namen und das App-Symbol für jeden Geschmack
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
JAVA_HOME-Einstellung für Pfade mit Leerzeichen
Umgebungsbau mit Docker für Anfänger
Probleme, denen ich beim Erstellen der Digdag-Umgebung mit Docker verfallen war
Ändern Sie die Standardzeitzone für die Rails-App
Bereiten Sie die Formatumgebung für "Rails" (VScode) vor.
Bereiten Sie die Sicherheitsüberprüfungsumgebung für Rails 6 vor
Ändern Sie das Layout beim Drehen mit onConfigurationChanged
Stapelimplementierung in der RubyOnRails-Umgebung mit Digdag