-
Notifications
You must be signed in to change notification settings - Fork 6
150 lines (128 loc) · 5.31 KB
/
chicmoz-prod.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
name: CI/CD Chicmoz Prod
on:
push:
branches:
- production
pull_request:
branches:
- production
types:
- closed
jobs:
set-up:
runs-on: ubuntu-latest
outputs:
tools-cache-key: ${{ steps.cache-key.outputs.key }}
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Print important information
env:
SP_TESTNET_OBSCURA_L2_RPC_1: ${{ vars.SP_TESTNET_OBSCURA_L2_RPC_1 }}
SP_TESTNET_OBSCURA_L2_RPC_2: ${{ vars.SP_TESTNET_OBSCURA_L2_RPC_2 }}
SP_TESTNET_AZTEC_L2_BOOTNODE_RPC: ${{ vars.SP_TESTNET_AZTEC_L2_BOOTNODE_RPC }}
SP_TESTNET_AZTEC_L1_HTTP: ${{ vars.SP_TESTNET_AZTEC_L1_HTTP }}
SP_TESTNET_AZTEC_L1_WS: ${{ vars.SP_TESTNET_AZTEC_L1_WS }}
DEVNET_AZTEC_L2_BOOTNODE_RPC: ${{ vars.DEVNET_AZTEC_L2_BOOTNODE_RPC }}
DEVNET_AZTEC_L1_HTTP: ${{ vars.DEVNET_AZTEC_L1_HTTP }}
DEVNET_AZTEC_L1_WS: ${{ vars.DEVNET_AZTEC_L1_WS }}
run: |
echo "VERSION: $(git describe --tags)"
echo "SP_TESTNET_OBSCURA_L2_RPC_1: $SP_TESTNET_OBSCURA_L2_RPC_1"
echo "SP_TESTNET_OBSCURA_L2_RPC_2: $SP_TESTNET_OBSCURA_L2_RPC_2"
echo "SP_TESTNET_AZTEC_L2_BOOTNODE_RPC: $SP_TESTNET_AZTEC_L2_BOOTNODE_RPC"
echo "SP_TESTNET_AZTEC_L1_HTTP: $SP_TESTNET_AZTEC_L1_HTTP"
echo "SP_TESTNET_AZTEC_L1_WS: $SP_TESTNET_AZTEC_L1_WS"
echo "DEVNET_AZTEC_L2_BOOTNODE_RPC: $DEVNET_AZTEC_L2_BOOTNODE_RPC"
echo "DEVNET_AZTEC_L1_HTTP: $DEVNET_AZTEC_L1_HTTP"
echo "DEVNET_AZTEC_L1_WS: $DEVNET_AZTEC_L1_WS"
shell: bash
- name: Set up tools directory
run: mkdir -p tools
- name: Install Skaffold
run: |
curl -Lo tools/skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x tools/skaffold
echo "$PWD/tools" >> $GITHUB_PATH
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Copy doctl to tools directory
run: |
which doctl
cp $(which doctl) tools/
chmod +x tools/doctl
- name: Generate cache key
id: cache-key
run: |
echo "key=${{ runner.os }}-tools-$(date '+%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Cache tools
uses: actions/cache@v4
with:
path: tools
key: ${{ steps.cache-key.outputs.key }}
- name: Log in to DigitalOcean Container Registry
run: tools/doctl registry login --expiry-seconds 1200
deploy:
runs-on: ubuntu-latest
needs:
- set-up
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Restore cached tools
uses: actions/cache@v4
with:
path: tools
key: ${{ needs.set-up.outputs.tools-cache-key }}
fail-on-cache-miss: true
- name: Add tools to PATH
run: |
chmod +x tools/*
echo "$PWD/tools" >> $GITHUB_PATH
- name: Configure doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Save DigitalOcean kubeconfig
run: doctl kubernetes cluster kubeconfig save "chicmoz-prod"
- name: Log in to DigitalOcean Container Registry
run: doctl registry login --expiry-seconds 1200
- name: Deploy to cluster with Skaffold
env:
SP_TESTNET_OBSCURA_L2_RPC_1: ${{ vars.SP_TESTNET_OBSCURA_L2_RPC_1 }}
SP_TESTNET_OBSCURA_L2_RPC_2: ${{ vars.SP_TESTNET_OBSCURA_L2_RPC_2 }}
SP_TESTNET_AZTEC_L2_BOOTNODE_RPC: ${{ vars.SP_TESTNET_AZTEC_L2_BOOTNODE_RPC }}
SP_TESTNET_AZTEC_L1_HTTP: ${{ vars.SP_TESTNET_AZTEC_L1_HTTP }}
SP_TESTNET_AZTEC_L1_WS: ${{ vars.SP_TESTNET_AZTEC_L1_WS }}
DEVNET_AZTEC_L2_BOOTNODE_RPC: ${{ vars.DEVNET_AZTEC_L2_BOOTNODE_RPC }}
DEVNET_AZTEC_L1_HTTP: ${{ vars.DEVNET_AZTEC_L1_HTTP }}
DEVNET_AZTEC_L1_WS: ${{ vars.DEVNET_AZTEC_L1_WS }}
run: |
MAX_RETRIES=3
RETRY_DELAY=10
kubectl create secret generic global \
--from-literal=SP_TESTNET_OBSCURA_L2_RPC_1=$SP_TESTNET_OBSCURA_L2_RPC_1 \
--from-literal=SP_TESTNET_OBSCURA_L2_RPC_2=$SP_TESTNET_OBSCURA_L2_RPC_2 \
--from-literal=SP_TESTNET_AZTEC_L2_BOOTNODE_RPC=$SP_TESTNET_AZTEC_L2_BOOTNODE_RPC \
--from-literal=SP_TESTNET_AZTEC_L1_HTTP=$SP_TESTNET_AZTEC_L1_HTTP \
--from-literal=SP_TESTNET_AZTEC_L1_WS=$SP_TESTNET_AZTEC_L1_WS \
--from-literal=DEVNET_AZTEC_L2_BOOTNODE_RPC=$DEVNET_AZTEC_L2_BOOTNODE_RPC \
--from-literal=DEVNET_AZTEC_L1_HTTP=$DEVNET_AZTEC_L1_HTTP \
--from-literal=DEVNET_AZTEC_L1_WS=$DEVNET_AZTEC_L1_WS \
-n chicmoz-prod --dry-run=client -o yaml | kubectl apply -f -
for i in $(seq 1 $MAX_RETRIES); do
if bash -x scripts/production/deploy.sh; then
echo "Deployment successful"
exit 0
fi
echo "Attempt $i failed. Retrying in $RETRY_DELAY seconds..."
sleep $RETRY_DELAY
done
echo "Deployment failed after $MAX_RETRIES attempts"
exit 1