Blog 73

Entwicklung und mehr.

17.02.2022, 20:17 Uhr

Ersetzen von Secrets beim automatischen Deployment in Googles App Engine

Diesen Blog hoste ich in Googles App Engine.

Meine Secrets (z.B. Passwörter), aber auch Konfigurationsparameter, habe ich bei der Entwicklung in einem .env-File. Um die Environment-Variablen auch produktiv in der App Engine verwenden zu können, musste ich diese in die app.yaml schreiben, die für das Deployment verantwortlich ist. Das sieht dann so aus.

Ausschnitt app.yaml
env_variables: SECRET_ONE: abc123 ANOTHER_SECRET: passwort

Jetzt wollte ich das Deployment automatisch per Github-Action umsetzen, sodass ich nicht immer manuell veröffentlichen muss. Damit konnte ich die Secrets nun aber nicht mehr in die app.yaml schreiben, denn die sollen ja nicht im Repository landen.

In Github kann man Secrets für Projekte hinterlegen und diese dann beim Deployment verwenden. Ich muss also die Secrets in der app.yaml während des Deployments ersetzen.

Nach einigen Versuchen im Projekt selbst, hab ich dafür eine Github-Action mit Python geschrieben. Die Github-Action ersetzt die Secrets für mich und ich kann sie wiederverwenden.

Und so nutze ich die Github Action.

Zunächst ersetze ich die Secrets im App-Engine-Deployment-File durch Variablen mit einem $.

Ausschnitt app.yaml
env_variables: SECRET_ONE: $SECRET_ONE ANOTHER_SECRET: $ANOTHER_SECRET

Im Anschluss füge ich im Github-Workflow die Action 73h/gae-app-yaml-replace-env-variables@v0.3 und ebenfalls die env-Variablen ein. Dabei verweise ich durch die ${{ secrets.XXX }} Notation auf die Github Secrets.

Ausschnitt workflow.yml
steps: - uses: actions/checkout@v2 - uses: 73h/gae-app-yaml-replace-env-variables@v0.3 env: SECRET_ONE: ${{ secrets.SECRET_ONE }} ANOTHER_SECRET: ${{ secrets.ANOTHER_SECRET }}

Und das war es auch schon. Die Secrets werden während des Deployments ersetzt.