Skip to content

Commit e9fd892

Browse files
committed
feat: added juju deployment CI
1 parent d41b2b9 commit e9fd892

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed

.github/workflows/deploy.yaml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
name: Deploy site
2+
3+
on:
4+
push:
5+
branches:
6+
- add-charm
7+
8+
env:
9+
CHARMCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS: true
10+
ROCKCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS: true
11+
12+
jobs:
13+
pack-charm:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout Code
17+
uses: actions/checkout@v3
18+
19+
- name: Setup LXD
20+
uses: canonical/setup-lxd@main
21+
22+
- name: Setup Charmcraft
23+
run: sudo snap install charmcraft --classic --channel=latest/edge
24+
25+
- name: Pack charm
26+
run: charmcraft pack -v --project-dir ./charm
27+
28+
- name: Upload charm
29+
uses: actions/upload-artifact@v3
30+
with:
31+
name: cs-canonical-com-charm
32+
path: ./*.charm
33+
34+
pack-rock:
35+
runs-on: ubuntu-latest
36+
steps:
37+
- name: Checkout Code
38+
uses: actions/checkout@v3
39+
40+
- name: Use Node.js
41+
uses: actions/setup-node@v3
42+
43+
- name: Build Assets
44+
run: |
45+
yarn install
46+
yarn run build
47+
48+
- name: Setup LXD
49+
uses: canonical/setup-lxd@main
50+
51+
- name: Setup Rockcraft
52+
run: sudo snap install rockcraft --classic --channel=latest/edge
53+
54+
- name: Pack Rock
55+
run: rockcraft pack
56+
57+
- name: Upload Rock
58+
uses: actions/upload-artifact@v3
59+
with:
60+
name: cs-canonical-com-rock
61+
path: ./*.rock
62+
63+
publish-image:
64+
runs-on: ubuntu-latest
65+
needs: pack-rock
66+
outputs:
67+
image_url: ${{ steps.set_image_url.outputs.image_url }}
68+
steps:
69+
- name: Get Rock
70+
uses: actions/download-artifact@v3
71+
with:
72+
name: cs-canonical-com-rock
73+
74+
- name: Set image URL
75+
id: set_image_url
76+
run: echo "image_url=ghcr.io/canonical/cs.canonical.com:$(date +%s)-${GITHUB_SHA:0:7}" >> $GITHUB_OUTPUT
77+
78+
- name: Push to GHCR
79+
run: skopeo --insecure-policy copy oci-archive:$(ls *.rock) docker://${{ steps.set_image_url.outputs.image_url }} --dest-creds "canonical:${{ secrets.GITHUB_TOKEN }}"
80+
81+
deploy:
82+
runs-on: [self-hosted, self-hosted-linux-amd64-jammy-private-endpoint-medium]
83+
needs: [pack-charm, publish-image]
84+
steps:
85+
- name: Checkout Code
86+
uses: actions/checkout@v3
87+
88+
- name: Install Dependencies
89+
run: |
90+
sudo snap install juju --channel=3.4/stable --classic
91+
sudo snap install vault --classic
92+
93+
- name: Download Charm Artifact
94+
uses: actions/download-artifact@v3
95+
with:
96+
name: cs-canonical-com-charm
97+
98+
- name: Configure Vault and Juju
99+
run: |
100+
export VAULT_ADDR=https://vault.admin.canonical.com:8200
101+
export TF_VAR_login_approle_role_id=${{ secrets.VAULT_APPROLE_ROLE_ID }}
102+
export TF_VAR_login_approle_secret_id=${{ secrets.VAULT_APPROLE_SECRET_ID }}
103+
export VAULT_SECRET_PATH_ROLE=secret/prodstack6/roles/stg-cs-canonical-com
104+
export VAULT_SECRET_PATH_COMMON=secret/prodstack6/juju/common
105+
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})
106+
export VAULT_TOKEN
107+
mkdir -p ~/.local/share/juju
108+
vault read -field=controller_config "${VAULT_SECRET_PATH_COMMON}/controllers/prodstack-is" | base64 -d > ~/.local/share/juju/controllers.yaml
109+
USERNAME=$(vault read -field=username "${VAULT_SECRET_PATH_ROLE}/juju")
110+
PASSWORD=$(vault read -field=password "${VAULT_SECRET_PATH_ROLE}/juju")
111+
printf "controllers:\n prodstack-is:\n user: %s\n password: %s\n" "$USERNAME" "$PASSWORD" > ~/.local/share/juju/accounts.yaml
112+
113+
- name: Deploy Application
114+
run: |
115+
export JUJU_MODEL=admin/stg-cs-canonical-com
116+
juju refresh cs-canonical-com --path ./cs-canonical-com_ubuntu-22.04-amd64.charm --resource flask-app-image=${{ needs.publish-image.outputs.image_url }}
117+
juju wait-for application cs-canonical-com --query='name=="cs-canonical-com" && (status=="active" || status=="idle")'

templates/login.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<div class="row">
2121
<div class="col">
2222
<h2>Welcome to the sites content system</h2>
23+
<h3>This heading is for recency. remove before publish!</h3>
2324
<p>
2425
To access the dashboard, log in using your <a target="_blank"
2526
aria-label="External link to Ubuntu One"

0 commit comments

Comments
 (0)