Skip to content

Commit 7eba98e

Browse files
committed
feat: added prod deployment
1 parent a14f010 commit 7eba98e

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

.github/workflows/deploy.yaml

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
- name: Push to GHCR
8484
run: skopeo --insecure-policy copy oci-archive:$(ls *.rock) docker://${{ steps.set_image_url.outputs.image_url }} --dest-creds "canonical:${{ secrets.GITHUB_TOKEN }}"
8585

86-
deploy:
86+
deploy-staging:
8787
runs-on: [self-hosted, self-hosted-linux-amd64-jammy-private-endpoint-medium]
8888
needs: [pack-charm, publish-image]
8989
steps:
@@ -115,8 +115,46 @@ jobs:
115115
PASSWORD=$(vault read -field=password "${VAULT_SECRET_PATH_ROLE}/juju")
116116
printf "controllers:\n juju-controller-36-staging-ps6:\n user: %s\n password: %s\n" "$USERNAME" "$PASSWORD" > ~/.local/share/juju/accounts.yaml
117117
118-
- name: Deploy Application
118+
- name: Deploy Application to staging
119119
run: |
120120
export JUJU_MODEL=admin/stg-cs-canonical-com
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")'
123+
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-staging-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-staging-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

Comments
 (0)