@@ -121,4 +121,40 @@ jobs:
121121 juju refresh cs-canonical-com --path ./cs-canonical-com_ubuntu-22.04-amd64.charm --resource flask-app-image=${{ needs.publish-image.outputs.image_url }}
122122 juju wait-for application cs-canonical-com --query='name=="cs-canonical-com" && (status=="active" || status=="idle")'
123123
124-
124+ deploy-production :
125+ runs-on : [self-hosted, self-hosted-linux-amd64-jammy-private-endpoint-medium]
126+ needs : [pack-charm, publish-image]
127+ steps :
128+ - name : Checkout Code
129+ uses : actions/checkout@v3
130+
131+ - name : Install Dependencies
132+ run : |
133+ sudo snap install juju --channel=3.6/stable --classic
134+ sudo snap install vault --classic
135+
136+ - name : Download Charm Artifact
137+ uses : actions/download-artifact@v4
138+ with :
139+ name : cs-canonical-com-charm
140+
141+ - name : Configure Vault and Juju
142+ run : |
143+ export VAULT_ADDR=https://vault.admin.canonical.com:8200
144+ export TF_VAR_login_approle_role_id=${{ secrets.PROD_VAULT_APPROLE_ROLE_ID }}
145+ export TF_VAR_login_approle_secret_id=${{ secrets.PROD_VAULT_APPROLE_SECRET_ID }}
146+ export VAULT_SECRET_PATH_ROLE=secret/prodstack6/roles/prod-cs-canonical-com
147+ export VAULT_SECRET_PATH_COMMON=secret/prodstack6/juju/common
148+ VAULT_TOKEN=$(vault write -f -field=token auth/approle/login role_id=${TF_VAR_login_approle_role_id} secret_id=${TF_VAR_login_approle_secret_id})
149+ export VAULT_TOKEN
150+ mkdir -p ~/.local/share/juju
151+ vault read -field=controller_config "${VAULT_SECRET_PATH_COMMON}/controllers/juju-controller-36-production-ps6" | base64 -d > ~/.local/share/juju/controllers.yaml
152+ USERNAME=$(vault read -field=username "${VAULT_SECRET_PATH_ROLE}/juju")
153+ PASSWORD=$(vault read -field=password "${VAULT_SECRET_PATH_ROLE}/juju")
154+ printf "controllers:\n juju-controller-36-production-ps6:\n user: %s\n password: %s\n" "$USERNAME" "$PASSWORD" > ~/.local/share/juju/accounts.yaml
155+
156+ - name : Deploy Application to production
157+ run : |
158+ export JUJU_MODEL=admin/prod-cs-canonical-com
159+ juju refresh cs-canonical-com --path ./cs-canonical-com_ubuntu-22.04-amd64.charm --resource flask-app-image=${{ needs.publish-image.outputs.image_url }}
160+ juju wait-for application cs-canonical-com --query='name=="cs-canonical-com" && (status=="active" || status=="idle")'
0 commit comments