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
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.
https://github.com/yasslab/sample_app
$ 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
$ 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
workflow
Unter dem Ordnertasks
Erstellen 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
$ digdag init workflow
Lö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