Skip to content

Commit b26893e

Browse files
committed
Merge branch 'develop' of github.com:opencrvs/e2e into develop
2 parents c1b66ca + 5d3d10f commit b26893e

File tree

4 files changed

+138
-3
lines changed

4 files changed

+138
-3
lines changed

.github/workflows/deploy-and-e2e.yml

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,23 @@ on:
1717
type: string
1818
description: Stack name
1919
required: true
20-
20+
keep-e2e:
21+
description: Keep environment after run
22+
required: true
23+
default: true
24+
type: boolean
2125
concurrency:
2226
group: ${{ github.event.client_payload.stack || github.event.inputs.stack }}
2327
cancel-in-progress: true
2428

2529
jobs:
30+
debug:
31+
name: Debug output
32+
runs-on: ubuntu-22.04
33+
steps:
34+
- name: Print Entire Event Payload
35+
run: |
36+
echo "${{ toJson(github.event) }}"
2637
deploy:
2738
uses: ./.github/workflows/deploy.yml
2839
with:
@@ -154,3 +165,35 @@ jobs:
154165
id: set-output
155166
run: |
156167
echo "result=$PREVIOUS_CONCLUSION" >> $GITHUB_OUTPUT
168+
169+
cleanup-stack:
170+
needs: [test]
171+
runs-on: ubuntu-24.04
172+
if: github.event.client_payload.keep-e2e == 'false' || github.event.inputs.keep-e2e == 'false'
173+
env:
174+
stack: ${{ github.event.client_payload.stack || github.event.inputs.stack }}
175+
keep_e2e: ${{ github.event.client_payload.keep-e2e || github.event.inputs.keep-e2e }}
176+
steps:
177+
- uses: actions/checkout@v4
178+
- name: Read known hosts
179+
run: |
180+
echo "KNOWN_HOSTS<<EOF" >> $GITHUB_ENV
181+
sed -i -e '$a\' ./infrastructure/known-hosts
182+
cat ./infrastructure/known-hosts >> $GITHUB_ENV
183+
echo "EOF" >> $GITHUB_ENV
184+
- name: Install SSH Key
185+
uses: shimataro/ssh-key-action@v2
186+
with:
187+
key: ${{ secrets.SSH_KEY }}
188+
known_hosts: ${{ env.KNOWN_HOSTS }}
189+
190+
- name: Unset KNOWN_HOSTS variable
191+
run: |
192+
echo "KNOWN_HOSTS=" >> $GITHUB_ENV
193+
- name: Cleanup e2e stack
194+
run: |
195+
bash infrastructure/deployment/cleanup-e2e-stack.sh \
196+
--stack=${stack} \
197+
--ssh_host=${{ vars.SSH_HOST || secrets.SSH_HOST }} \
198+
--ssh_port=${{ vars.SSH_PORT || secrets.SSH_PORT }} \
199+
--ssh_user=${{ secrets.SSH_USER }}

.github/workflows/deploy.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,11 @@ jobs:
8282
sed -i -e '$a\' ./infrastructure/known-hosts
8383
cat ./infrastructure/known-hosts >> $GITHUB_ENV
8484
echo "EOF" >> $GITHUB_ENV
85-
8685
- name: Install SSH Key
8786
uses: shimataro/ssh-key-action@v2
8887
with:
8988
key: ${{ secrets.SSH_KEY }}
9089
known_hosts: ${{ env.KNOWN_HOSTS }}
91-
9290
- name: Unset KNOWN_HOSTS variable
9391
run: |
9492
echo "KNOWN_HOSTS=" >> $GITHUB_ENV
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#!/bin/bash
2+
3+
# Reading Names parameters
4+
for i in "$@"; do
5+
case $i in
6+
--ssh_host=*)
7+
SSH_HOST="${i#*=}"
8+
shift
9+
;;
10+
--ssh_user=*)
11+
SSH_USER="${i#*=}"
12+
shift
13+
;;
14+
--ssh_port=*)
15+
SSH_PORT="${i#*=}"
16+
shift
17+
18+
;;
19+
--stack=*)
20+
export STACK="${i#*=}"
21+
shift
22+
;;
23+
esac
24+
done
25+
26+
27+
print_usage_and_exit () {
28+
echo "Usage: $0 --ssh_host --ssh_port --ssh_user --stack"
29+
exit 1
30+
}
31+
32+
validate_options() {
33+
if [ -z "$STACK" ] ; then
34+
echo 'Error: Argument --stack is required.'
35+
print_usage_and_exit
36+
fi
37+
38+
if [ -z "$SSH_HOST" ] ; then
39+
echo 'Error: Argument --ssh_host is required.'
40+
print_usage_and_exit
41+
fi
42+
43+
if [ -z "$SSH_PORT" ] ; then
44+
echo 'Error: Argument --ssh_port is required.'
45+
print_usage_and_exit
46+
fi
47+
48+
if [ -z "$SSH_USER" ] ; then
49+
echo 'Error: Argument --ssh_user is required.'
50+
print_usage_and_exit
51+
fi
52+
53+
}
54+
55+
configured_ssh() {
56+
# TODO: Remove ~/.ssh/vmudryi-opencrvs
57+
ssh $SSH_USER@$SSH_HOST -p $SSH_PORT $SSH_ARGS "$@"
58+
}
59+
60+
docker_stack_cleanup() {
61+
echo "Cleanup docker swarm stack $STACK"
62+
63+
EXISTING_STACKS=$(configured_ssh 'sudo docker stack ls --format "{{ .Name }}" | grep -v "dependencies" | paste -sd "," -')
64+
echo "Existing stacks: $EXISTING_STACKS"
65+
if echo $EXISTING_STACKS | grep -w $STACK > /dev/null; then
66+
echo "Stack $STACK exists"
67+
EXISTING_IMAGES=`mktemp`
68+
EXISTING_IMAGES=$(configured_ssh "sudo docker stack services --format '{{.Image}}' '$STACK'" | grep -E '(ghcr.io/opencrvs|opencrvs/ocrvs-farajaland)' | sort)
69+
70+
echo "⬤⬤⬤⬤⬤ Deleting stack $STACK ⬤⬤⬤⬤⬤"
71+
configured_ssh "sudo docker stack rm $STACK"
72+
73+
echo "⬤⬤⬤⬤⬤ Deleting images ⬤⬤⬤⬤⬤:"
74+
for image in $EXISTING_IMAGES
75+
do
76+
configured_ssh "sudo docker rmi --force $image && echo ' - [✅ Deleted] $image' || echo ' - [❌ Failed] $image'"
77+
done
78+
else
79+
echo "Stack $STACK doesn't exist. Exiting"
80+
fi
81+
82+
83+
84+
}
85+
86+
SSH_ARGS=${SSH_ARGS:-}
87+
88+
validate_options
89+
docker_stack_cleanup

infrastructure/server-setup/inventory/qa.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ all:
6161
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINgMcsSBwTE0EbMDRSF1T4vJDcN/5HAjKGbi2DqV7g/Q [email protected]
6262
state: present
6363
sudoer: true
64+
- name: cihan
65+
ssh_keys:
66+
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEEtz5M5hYKcUehDiCm84BplV+3t1ex8DPjIsMtQEWGv [email protected]
67+
state: present
68+
sudoer: true
6469
enable_backups: false
6570
docker-manager-first:
6671
hosts:

0 commit comments

Comments
 (0)