Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cbshell deployment #148

Open
wants to merge 433 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
433 commits
Select commit Hold shift + click to select a range
0e793bb
Merge pull request #20 from saschavonpapenCB/dependabot/pip/couchbase…
saschavonpapenCB Mar 25, 2024
fd06e09
Merge pull request #21 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Mar 25, 2024
bc7c809
Bump uvicorn from 0.27.1 to 0.29.0
dependabot[bot] Mar 25, 2024
dcff1fe
Merge pull request #22 from saschavonpapenCB/dependabot/pip/uvicorn-0…
saschavonpapenCB Mar 25, 2024
680d011
Added frontend submodule.
saschavonpapenCB Mar 26, 2024
b1509ab
Implemented container composition.
saschavonpapenCB Mar 26, 2024
9056b55
Need to fix frontend container.
saschavonpapenCB Mar 26, 2024
ecd3156
Bump pydantic from 2.6.3 to 2.6.4
dependabot[bot] Apr 1, 2024
99fbbec
Bump wheel from 0.42.0 to 0.43.0
dependabot[bot] Apr 1, 2024
771cb47
Merge pull request #23 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Apr 2, 2024
2c50f12
Merge pull request #24 from saschavonpapenCB/dependabot/pip/wheel-0.43.0
saschavonpapenCB Apr 2, 2024
51eb3d7
Update requirements.txt
saschavonpapenCB Apr 15, 2024
83f68f9
Unupdated requirements.txt
saschavonpapenCB Apr 15, 2024
7b8f737
Bump setuptools from 69.2.0 to 69.5.1
dependabot[bot] Apr 15, 2024
9dcef76
Bump couchbase from 4.2.0 to 4.2.1
dependabot[bot] Apr 22, 2024
1871c77
Merge pull request #26 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Apr 28, 2024
28cde97
Bump pydantic from 2.6.4 to 2.7.1
dependabot[bot] Apr 28, 2024
3fe0f83
Merge pull request #29 from saschavonpapenCB/dependabot/pip/couchbase…
saschavonpapenCB Apr 28, 2024
ba9d2d0
Merge pull request #30 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Apr 28, 2024
93c080b
Created nginx server for frontend.
saschavonpapenCB Apr 29, 2024
a9bf8d8
refactored frontend
saschavonpapenCB Apr 29, 2024
392168c
container composition
saschavonpapenCB Apr 29, 2024
d65fea1
CORS tests
saschavonpapenCB May 3, 2024
11d5524
build deploy workflow
saschavonpapenCB May 4, 2024
62ee37c
Build and Deploy workflow.
saschavonpapenCB May 4, 2024
de9b27f
debugged
saschavonpapenCB May 4, 2024
3d044fb
re-organised dockerfiles.
saschavonpapenCB May 4, 2024
07753ab
Debug
saschavonpapenCB May 4, 2024
b1894e2
deploy backend
saschavonpapenCB May 4, 2024
abf87a0
debug
saschavonpapenCB May 4, 2024
67b574d
hardcoded CORS handling and dropped back bcrypt
saschavonpapenCB May 6, 2024
6e2c2c1
Bump bcrypt from 4.1.2 to 4.1.3
dependabot[bot] May 6, 2024
c7ac551
Made API URL dynamic
saschavonpapenCB May 11, 2024
2c200d8
dependency bumping
saschavonpapenCB May 16, 2024
d9904ee
Merge pull request #37 from saschavonpapenCB/dependabot/pip/bcrypt-4.1.3
saschavonpapenCB May 16, 2024
d4ab9fd
Build CICD pipeline.
saschavonpapenCB May 16, 2024
93647e9
fixed dev deployment
saschavonpapenCB May 16, 2024
9b0286e
fixed dev deployment.
saschavonpapenCB May 16, 2024
955dc9f
Merge pull request #41 from saschavonpapenCB/cicd-pipe
saschavonpapenCB May 16, 2024
a431ad6
Split cicd between fe and be
saschavonpapenCB May 16, 2024
7b27220
rearranged deployment requirements
saschavonpapenCB May 16, 2024
71e3bc1
Typo
saschavonpapenCB May 16, 2024
c5e2244
implemented TF/github CICD
saschavonpapenCB May 16, 2024
40bfead
debugging backend-dev-deploy
saschavonpapenCB May 16, 2024
ec12d35
fixing backenddevdeploy
saschavonpapenCB May 16, 2024
4f4eed2
Debugging backenddevdeploy
saschavonpapenCB May 17, 2024
c6a84e6
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
0cf29ee
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
189c398
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
6e39309
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
8a8b028
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
102e7af
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
ae3addf
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
0a792b7
implemented backend s3 block
saschavonpapenCB May 17, 2024
f086fad
implemented backend s3 block
saschavonpapenCB May 17, 2024
84c5edf
trying 1 IAM role
saschavonpapenCB May 17, 2024
2ea596f
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
427e663
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
40c644e
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
895bb12
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
036451f
debugging backenddevdeploy
saschavonpapenCB May 17, 2024
9b4b6fa
create S3 bucket in backenddevdeploy.
saschavonpapenCB May 17, 2024
906f739
debugging deploy dev
saschavonpapenCB May 17, 2024
0a8857b
debugging deploy dev
saschavonpapenCB May 17, 2024
f1ecf72
debugging deploy dev
saschavonpapenCB May 17, 2024
d00df15
debugging deploy dev
saschavonpapenCB May 17, 2024
713fb5f
debugging deploy dev
saschavonpapenCB May 17, 2024
2d25bff
debugging deploy dev
saschavonpapenCB May 17, 2024
5946c07
debugging deploy dev
saschavonpapenCB May 17, 2024
eeecd8e
debugging deploy dev
saschavonpapenCB May 17, 2024
015701d
debugging deploy dev
saschavonpapenCB May 17, 2024
9a404a7
debugging deploy dev
saschavonpapenCB May 17, 2024
a44b0b5
debugging deploy dev
saschavonpapenCB May 17, 2024
986f792
Abstracted backend deployment workflow
saschavonpapenCB May 18, 2024
14e2acb
debugging deploy dev
saschavonpapenCB May 18, 2024
946f1d7
debugging deploy dev
saschavonpapenCB May 18, 2024
ce5605a
debugging deploy dev
saschavonpapenCB May 18, 2024
e4be2c4
debugging deploy dev
saschavonpapenCB May 18, 2024
8bd3d96
debugging deploy dev
saschavonpapenCB May 18, 2024
b88eb76
debugging deploy dev
saschavonpapenCB May 18, 2024
dc01574
debugging deploy dev
saschavonpapenCB May 18, 2024
c1fcd77
debugging deploy dev
saschavonpapenCB May 18, 2024
0e33f91
debugging deploy dev
saschavonpapenCB May 18, 2024
cc92d26
debugging deploy dev
saschavonpapenCB May 18, 2024
bbe7094
debugging deploy dev
saschavonpapenCB May 18, 2024
9cae836
debugging cicd
saschavonpapenCB May 18, 2024
fe2af2a
debugging cicd
saschavonpapenCB May 18, 2024
f93705d
debugging cicd
saschavonpapenCB May 18, 2024
47d2e4f
debugging cicd
saschavonpapenCB May 18, 2024
b54a6d1
fixing cicd
saschavonpapenCB May 18, 2024
37c3589
fixing cicd
saschavonpapenCB May 18, 2024
1639f92
debug
saschavonpapenCB May 18, 2024
2d2584e
fixed dev cicd
saschavonpapenCB May 18, 2024
8356956
cicd dev done
saschavonpapenCB May 18, 2024
4756285
finished dev cicd
saschavonpapenCB May 18, 2024
c62cc28
Merge pull request #43 from saschavonpapenCB/backenddevdeploy
saschavonpapenCB May 18, 2024
f1db871
Bump pytest from 8.2.0 to 8.2.1
dependabot[bot] May 20, 2024
fb99859
reorganised frontend directory
saschavonpapenCB May 23, 2024
c1e78d9
bumping node module versions
saschavonpapenCB May 28, 2024
583a11b
realworld-test in testing env
saschavonpapenCB Jun 3, 2024
ff7afd6
realworld-tests to local-testing env
saschavonpapenCB Jun 3, 2024
9773d8b
Bump uvicorn from 0.29.0 to 0.30.1
dependabot[bot] Jun 3, 2024
c76f16f
realworld-tests removed from env
saschavonpapenCB Jun 3, 2024
ffda510
debugging
saschavonpapenCB Jun 3, 2024
1705ab2
debugging
saschavonpapenCB Jun 3, 2024
0ef4894
debugging
saschavonpapenCB Jun 3, 2024
ede0eae
Merge pull request #44 from saschavonpapenCB/dependabot/pip/pytest-8.2.1
saschavonpapenCB Jun 3, 2024
dc8ab26
Bump setuptools from 69.5.1 to 70.0.0
dependabot[bot] Jun 3, 2024
ca3f7e6
Merge pull request #49 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Jun 3, 2024
7f6410f
Merge pull request #50 from saschavonpapenCB/dependabot/pip/uvicorn-0…
saschavonpapenCB Jun 3, 2024
0134803
Bump pydantic from 2.7.1 to 2.7.2
dependabot[bot] Jun 3, 2024
402d968
Merge pull request #51 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Jun 3, 2024
8f62f5d
installed cypress
saschavonpapenCB Jun 3, 2024
49d7b51
Bump pydantic from 2.7.2 to 2.7.3
dependabot[bot] Jun 10, 2024
0f734cb
Bump pytest from 8.2.1 to 8.2.2
dependabot[bot] Jun 10, 2024
879c1de
Merge pull request #52 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Jun 16, 2024
6c0bbc5
Merge pull request #53 from saschavonpapenCB/dependabot/pip/pytest-8.2.2
saschavonpapenCB Jun 16, 2024
66b0900
Bump pydantic-settings from 2.1.0 to 2.3.3
dependabot[bot] Jun 16, 2024
a59168d
Merge pull request #56 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Jun 16, 2024
7107afa
Bump pydantic from 2.7.3 to 2.7.4
dependabot[bot] Jun 17, 2024
fd7cca0
Bump setuptools from 70.0.0 to 70.1.0
dependabot[bot] Jun 24, 2024
00f681a
implemented cypress
saschavonpapenCB Jun 24, 2024
86260a7
Merge pull request #59 from saschavonpapenCB/cypress
saschavonpapenCB Jun 24, 2024
cc8894a
Merge pull request #57 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Jun 24, 2024
2873e93
Merge pull request #58 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Jun 24, 2024
b40cf83
fixed jwt error
saschavonpapenCB Jul 6, 2024
51812ad
cypress
saschavonpapenCB Jul 10, 2024
18f34b3
Merge pull request #67 from saschavonpapenCB/cypress
saschavonpapenCB Jul 10, 2024
ff974c6
fixed realworld tests
saschavonpapenCB Jul 11, 2024
cf6baef
bumped couchbase to 4.3.0
saschavonpapenCB Jul 11, 2024
e763617
bumped pydantic-settings to 2.3.4
saschavonpapenCB Jul 11, 2024
51bf25b
bumped setuptools to 70.2.0
saschavonpapenCB Jul 11, 2024
0d0172c
bumped pydantic to 2.8.2
saschavonpapenCB Jul 11, 2024
c5848a0
bumped setuptools to 70.3.0
saschavonpapenCB Jul 11, 2024
0d354f1
dockerised cypress testing
saschavonpapenCB Jul 14, 2024
6c5d45b
Cypress dockerfile
saschavonpapenCB Jul 14, 2024
36383db
gitignore cypress videos
saschavonpapenCB Jul 14, 2024
dc0366b
gitignore cypress videos
saschavonpapenCB Jul 14, 2024
932ec46
gitignore cypress videos
saschavonpapenCB Jul 14, 2024
f8b1265
gitignore cypress videos
saschavonpapenCB Jul 14, 2024
8a8d7d9
dockerignore
saschavonpapenCB Jul 14, 2024
4918ac5
cicd cypress implementation
saschavonpapenCB Jul 15, 2024
7ca8fc3
added cypress infrastructure
saschavonpapenCB Jul 15, 2024
ce79bfe
added cypress ecr repo
saschavonpapenCB Jul 15, 2024
310554b
Merge pull request #73 from saschavonpapenCB/cypress-infra
saschavonpapenCB Jul 15, 2024
961e096
added terraform teardown to cicid
saschavonpapenCB Jul 19, 2024
1f6755b
added teardown to cicd
saschavonpapenCB Jul 19, 2024
48ed021
added teardown to cicd
saschavonpapenCB Jul 19, 2024
e20889b
added teardown to cicd
saschavonpapenCB Jul 19, 2024
9c32756
fixed teardown
saschavonpapenCB Jul 19, 2024
de992b8
Bump uvicorn from 0.30.1 to 0.30.3
dependabot[bot] Jul 22, 2024
746577e
teardown ci/cd
saschavonpapenCB Jul 24, 2024
7bfbeb7
teardown to ci/cd
saschavonpapenCB Jul 24, 2024
967ce88
Bump bcrypt from 4.0.1 to 4.2.0
dependabot[bot] Jul 29, 2024
8c413ae
Merge pull request #75 from saschavonpapenCB/cypress-infra
saschavonpapenCB Jul 31, 2024
e7c0f5b
Merge pull request #76 from saschavonpapenCB/dependabot/pip/uvicorn-0…
saschavonpapenCB Jul 31, 2024
70732ac
Bump pytest from 8.2.2 to 8.3.2
dependabot[bot] Jul 31, 2024
cfc13e2
Merge pull request #80 from saschavonpapenCB/dependabot/pip/bcrypt-4.2.0
saschavonpapenCB Jul 31, 2024
975dcee
Merge pull request #81 from saschavonpapenCB/dependabot/pip/pytest-8.3.2
saschavonpapenCB Jul 31, 2024
758ad06
Bump setuptools from 70.3.0 to 72.1.0
dependabot[bot] Jul 31, 2024
506f8f4
Merge pull request #82 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Jul 31, 2024
fe4eaeb
experimenting with callable deploy workflow
saschavonpapenCB Jul 31, 2024
8904a78
attempt to input env to callable workflow
saschavonpapenCB Jul 31, 2024
ff74446
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
797e95e
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
3581739
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
d615c35
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
0d2d519
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
fdcc3c4
Merge pull request #83 from saschavonpapenCB/cicd-rework
saschavonpapenCB Jul 31, 2024
f7f5ee8
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
4521709
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
a63e268
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
3b433d5
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
b37212e
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
da47bb3
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
148ffb3
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
54374fd
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
6ab3cca
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
fd05d89
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
9b03f76
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
72f1fbe
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
89ba8ff
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
9413175
attempt to log env vars with callable deploy workflow
saschavonpapenCB Jul 31, 2024
5fc7bf3
seperated ci and cd
saschavonpapenCB Aug 2, 2024
37312ee
seperated ci and cd
saschavonpapenCB Aug 2, 2024
447b7f3
debug superlinter ci
saschavonpapenCB Aug 2, 2024
43231b5
cd rework
saschavonpapenCB Aug 2, 2024
0094c7c
debug
saschavonpapenCB Aug 2, 2024
22907ce
build teardowns
saschavonpapenCB Aug 2, 2024
b2cf020
cicd rework finish
saschavonpapenCB Aug 2, 2024
31b45c8
Merge pull request #84 from saschavonpapenCB/cicd-rework
saschavonpapenCB Aug 2, 2024
5e9791f
typo
saschavonpapenCB Aug 2, 2024
8b15368
delete image before teardown
saschavonpapenCB Aug 2, 2024
95c1a73
delete image before teardown
saschavonpapenCB Aug 2, 2024
a25d291
retype
saschavonpapenCB Aug 3, 2024
6f0af2c
add run_workflow to cd
saschavonpapenCB Aug 3, 2024
f92e51d
made ECR repos mutable
saschavonpapenCB Aug 3, 2024
872d9f0
Merge pull request #85 from saschavonpapenCB/debug-ecr
saschavonpapenCB Aug 3, 2024
bf34d82
pre definitions push
saschavonpapenCB Aug 3, 2024
60edbca
added some variables
saschavonpapenCB Aug 3, 2024
361045f
added more variables
saschavonpapenCB Aug 3, 2024
3f8611d
typo
saschavonpapenCB Aug 3, 2024
56225eb
missing subnets and security groups
saschavonpapenCB Aug 3, 2024
07c9428
added all variables
saschavonpapenCB Aug 3, 2024
b87c247
fixed extra vars
saschavonpapenCB Aug 3, 2024
1f3f9f5
added exec role
saschavonpapenCB Aug 3, 2024
95abfab
added ecs to teardown
saschavonpapenCB Aug 3, 2024
1b60874
check ecr repos exist before deleting images
saschavonpapenCB Aug 7, 2024
2035d0d
Merge pull request #86 from saschavonpapenCB/add-ecs
saschavonpapenCB Aug 13, 2024
e6878fd
correct script
saschavonpapenCB Aug 13, 2024
bc12bf7
added jwt requirement
saschavonpapenCB Aug 15, 2024
094eeed
retitled fastapi instance
saschavonpapenCB Aug 15, 2024
8b48dfc
Changed back to user from client, using backticks to escape reserved …
saschavonpapenCB Aug 15, 2024
71fc407
Bump pydantic-settings from 2.3.4 to 2.4.0
dependabot[bot] Aug 15, 2024
9363fe7
updated article model from comments to commentIDs
saschavonpapenCB Aug 19, 2024
2e365eb
Bump uvicorn from 0.30.3 to 0.30.6
dependabot[bot] Aug 19, 2024
316691d
adjusted routers for new comment models
saschavonpapenCB Aug 19, 2024
2243c9e
Merge pull request #92 from saschavonpapenCB/isolate-comments
saschavonpapenCB Aug 19, 2024
5d5d524
updated CORS settings
saschavonpapenCB Aug 19, 2024
cc7be2a
debugged get_article_comments: reformatted 'no comments' return from …
saschavonpapenCB Aug 19, 2024
0e72fb2
testing
saschavonpapenCB Aug 19, 2024
2c45a4a
end test
saschavonpapenCB Aug 19, 2024
29b52ba
frontend to old_frontend
saschavonpapenCB Aug 19, 2024
fad1ffc
Added angular-conduit-signals submodule
saschavonpapenCB Aug 19, 2024
6fa1e49
moved angular-conduit-signals to root dir
saschavonpapenCB Aug 19, 2024
03e9a34
reinstated angular-conduit-signals submodule
saschavonpapenCB Aug 19, 2024
8b3839d
new submodule
saschavonpapenCB Aug 19, 2024
fae82c1
deleted old frontend dir
saschavonpapenCB Aug 19, 2024
2063f48
redid frontend containerisation
saschavonpapenCB Aug 19, 2024
0aa7384
Merge pull request #93 from saschavonpapenCB/fe-reformat
saschavonpapenCB Aug 19, 2024
699c750
Merge pull request #88 from saschavonpapenCB/dependabot/pip/pydantic-…
saschavonpapenCB Aug 20, 2024
f131c8e
Merge pull request #90 from saschavonpapenCB/dependabot/pip/uvicorn-0…
saschavonpapenCB Aug 20, 2024
106fede
Bump setuptools from 72.1.0 to 73.0.0
dependabot[bot] Aug 20, 2024
663516a
Merge pull request #94 from saschavonpapenCB/dependabot/pip/setuptool…
saschavonpapenCB Aug 20, 2024
61a158b
fixed pytest
saschavonpapenCB Aug 20, 2024
da25fc4
adjusted CI workflow for pytest
saschavonpapenCB Aug 20, 2024
0f26066
ignore cypress videos
saschavonpapenCB Aug 20, 2024
33b4a86
implemented cbsh
saschavonpapenCB Aug 23, 2024
de86609
removed cbsh from git
saschavonpapenCB Aug 23, 2024
f10c62c
git ignore cbsh contents
saschavonpapenCB Aug 23, 2024
6e39d4e
.env reformat
saschavonpapenCB Aug 24, 2024
21ecf57
ignore cbsh
saschavonpapenCB Aug 24, 2024
484db5a
updated frontend. made frontend apiurl dynamic (local and container o…
saschavonpapenCB Aug 26, 2024
161a305
cbshell
saschavonpapenCB Oct 14, 2024
a9500b6
escape backticks
saschavonpapenCB Oct 14, 2024
5e6fe64
gitignore
saschavonpapenCB Jan 5, 2025
bb69232
gitignore
saschavonpapenCB Jan 5, 2025
65882a2
gitignore
saschavonpapenCB Jan 5, 2025
6073583
deployment
saschavonpapenCB Jan 5, 2025
830149b
removed .env.stage
saschavonpapenCB Jan 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__pycache__
*.pyc
*.pyo
*.pyd
.env
venv/
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Env var
ENVIRONMENT=

# Capella vars
DB_CONN_STR=couchbases://<identifier>.cloud.couchbase.com
DB_USERNAME=
DB_PASSWORD=

CB_CLUSTER=

# AWS vars
AWS_REGION=
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
version: 2
updates:
- package-ecosystem: pip
directory: ./
schedule:
interval: weekly
314 changes: 314 additions & 0 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,314 @@
name: Continuous Deployment Pipeline

on:
workflow_dispatch:

# concurrency required to avoid terraform lock contention during ECR provisioning
concurrency: cd-${{ github.repository }}-pipeline

jobs:
provision-capella:
runs-on: ubuntu-22.04

steps:
- name: Checkout codebase
uses: actions/[email protected]

- name: Setup CBShell
uses: ldoguin/setup-cbsh@develop
with:
version: 'v1.0.0'
enable-plugins: true
config: ${{ secrets.CBSHELL_CONFIG }}

- name: Print Couchbase Environment
run: |
echo "Printing Couchbase environment variables..."
cb-env
echo "Environment variables printed successfully."
shell: cbsh --script {0}

- name: Ensure conduit bucket
run: |
echo "Attempting to create 'conduit' bucket..."
if cbsh --command "buckets create conduit 512"; then
echo "'conduit' bucket created successfully."
else
echo "Failed to create 'conduit' bucket or it already exists."
fi
shell: bash

- name: Set 'conduit' bucket as active bucket
run: |
echo "Setting 'conduit' as the active bucket..."
cb-env bucket conduit
echo "'conduit' bucket set as active successfully."
shell: cbsh --script {0}

- name: Ensure ${{ vars.ENVIRONMENT }} scope
run: |
echo "Attempting to create '${{ vars.ENVIRONMENT }}' scope..."
if cbsh --command "scopes create --clusters ${{ vars.CB_CLUSTER }} --bucket conduit ${{ vars.ENVIRONMENT }}"; then
echo "'${{ vars.ENVIRONMENT }}' scope created successfully."
else
echo "Failed to create '${{ vars.ENVIRONMENT }}' scope or it already exists."
fi
shell: bash

- name: Set ${{ vars.ENVIRONMENT }} scope as active scope
run: |
echo "Setting '${{ vars.ENVIRONMENT }}' as the active scope..."
cb-env scope ${{ vars.ENVIRONMENT }}
echo "'${{ vars.ENVIRONMENT }}' scope set as active successfully."
shell: cbsh --script {0}

- name: Ensure collections and primary indices
run: |
echo "Starting collection creation & indexing process..."

create_collection() {
local COLLECTION=$1
echo "Attempting to create collection: $COLLECTION"

if cbsh --command "collections create --clusters \"$CB_CLUSTER\" --bucket conduit --scope \"$ENVIRONMENT\" $COLLECTION"; then
echo "Creating primary index for $COLLECTION..."
if cbsh --command "CREATE PRIMARY INDEX ON conduit.$ENVIRONMENT.$COLLECTION"; then
echo "Primary index for $COLLECTION created successfully."
else
echo "Failed to create primary index for $COLLECTION."
fi
echo "$COLLECTION collection created successfully."
else
echo "Failed to create $COLLECTION collection or it already exists."
fi
}

for collection in article comment user; do
create_collection "$collection"
done

echo "Collection creation and indexing process completed."
shell: bash
env:
CB_CLUSTER: ${{ vars.CB_CLUSTER }}
ENVIRONMENT: ${{ vars.ENVIRONMENT }}

provision-aws:
needs: provision-capella
runs-on: ubuntu-22.04
permissions:
id-token: write
contents: read
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ap-southeast-2

steps:
- name: Checkout codebase
uses: actions/[email protected]

- name: Install less pager
run: |
echo "Installing less pager..."
apt-get update && apt-get install -y less
echo "Less pager installed successfully."

- name: Install AWS CLI
run: |
echo "Installing AWS CLI..."
apt-get update && apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
aws --version
echo "AWS CLI installed successfully."
shell: bash

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ${{ env.AWS_REGION }}

- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_wrapper: false

- name: Provision TF Backend S3 Bucket
run: |
echo "Provisioning Terraform backend S3 bucket..."
set -eux
BUCKET_NAME=conduit-${{ vars.ENVIRONMENT }}-tfbackend-bucket-${{ secrets.AWS_ACCOUNT_ID }}
REGION=${{ vars.AWS_REGION }}
if ! aws s3api head-bucket --bucket "$BUCKET_NAME" 2>/dev/null; then
aws s3api create-bucket --bucket "$BUCKET_NAME" --region "$REGION" --create-bucket-configuration LocationConstraint="$REGION"
echo "Bucket $BUCKET_NAME created in $REGION."
else
echo "Bucket $BUCKET_NAME already exists."
fi
shell: bash

- name: Provision TF State Lock DynamoDB Table
run: |
echo "Provisioning Terraform state lock DynamoDB table..."
set -eux
TABLE_NAME=conduit-${{ vars.ENVIRONMENT }}-tfbackend-table
REGION=${{ vars.AWS_REGION }}
if ! aws dynamodb describe-table --table-name "$TABLE_NAME" --region "$REGION" &>/dev/null; then
aws dynamodb create-table \
--table-name "$TABLE_NAME" \
--attribute-definitions AttributeName=LockID,AttributeType=S \
--key-schema AttributeName=LockID,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--region "$REGION"
echo "DynamoDB table $TABLE_NAME created in $REGION."
else
echo "DynamoDB table $TABLE_NAME already exists."
fi
shell: bash

- name: TF init
run: |
echo "Initializing Terraform..."
set -eux
terraform init -upgrade -reconfigure \
-backend-config='skip_metadata_api_check=true' \
-backend-config='skip_region_validation=true' \
-backend-config='skip_credentials_validation=true' \
-backend-config='region=${{ vars.AWS_REGION }}' \
-backend-config='bucket=conduit-${{ vars.ENVIRONMENT }}-tfbackend-bucket-${{ secrets.AWS_ACCOUNT_ID }}' \
-backend-config='key=tf-${{ vars.ENVIRONMENT }}.tfstate' \
-backend-config='dynamodb_table=conduit-${{ vars.ENVIRONMENT }}-tfbackend-table'
echo "Terraform initialized successfully."
shell: bash
working-directory: ./infrastructure

- name: TF apply
run: |
echo "Applying Terraform configuration..."
set -eux
terraform apply \
-var 'project_prefix=conduit-${{ vars.ENVIRONMENT }}' \
-var 'task_cpu=256' \
-var 'task_memory=512' \
-var 'lifecycle_policy=./policy.json' \
-var 'iam_role=${{ secrets.AWS_BACKEND_ACCESS_ROLE }}' \
-var 'aws_account_id=${{ secrets.AWS_ACCOUNT_ID }}' \
-auto-approve
echo "Terraform configuration applied successfully."
working-directory: ./infrastructure
shell: bash

push-images-to-aws:
needs: provision-aws
runs-on: ubuntu-22.04
strategy:
matrix:
image_type: [backend, frontend, cypress]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ap-southeast-2

steps:
- name: Checkout codebase
uses: actions/[email protected]

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
with:
registries: ${{ secrets.AWS_ACCOUNT_ID }}
mask-password: "true"

- name: Build, tag, and push ${{ matrix.image_type }} image
run: |
echo "Preparing to build and push ${{ matrix.image_type }} image..."

case "${{ matrix.image_type }}" in
backend)
BUILD_PATH="./api"
DOCKERFILE="./api/Dockerfile.api"
;;
frontend)
BUILD_PATH="./angular-conduit-signals"
DOCKERFILE="./angular-conduit-signals/Dockerfile.frontend"
;;
cypress)
BUILD_PATH="./angular-conduit-signals/cypress"
DOCKERFILE="./angular-conduit-signals/cypress/Dockerfile.cypress"
;;
esac

echo "Building Docker image from $BUILD_PATH with Dockerfile $DOCKERFILE..."
docker build "$BUILD_PATH" -f "$DOCKERFILE" -t "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"

echo "Pushing Docker image to $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG..."
docker push "$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
echo "Docker image $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG pushed successfully."
shell: bash
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: "conduit-${{ vars.ENVIRONMENT }}-${{ matrix.image_type }}-repo"
IMAGE_TAG: "conduit-${{ vars.ENVIRONMENT }}-${{ matrix.image_type }}-image"

update-ecs-services:
needs: push-images-to-aws
runs-on: ubuntu-22.04
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ap-southeast-2

steps:

- name: Install less pager
run: |
echo "Installing less pager..."
apt-get update && apt-get install -y less
echo "Less pager installed successfully."

- name: Install AWS CLI
run: |
echo "Installing AWS CLI..."
apt-get update && apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
aws --version
echo "AWS CLI installed successfully."
shell: bash

- name: Update ECS Service with new backend image
id: update-ecs-backend
run: |
echo "Updating ECS backend service with the new image..."
aws ecs update-service \
--cluster "conduit-${{ vars.ENVIRONMENT }}-ecs-cluster" \
--service "conduit-${{ vars.ENVIRONMENT }}-backend-service" \
--force-new-deployment
echo "ECS backend service updated successfully."
shell: bash

- name: Update ECS Service with new frontend image
id: update-ecs-frontend
run: |
echo "Updating ECS frontend service with the new image..."
aws ecs update-service \
--cluster "conduit-${{ vars.ENVIRONMENT }}-ecs-cluster" \
--service "conduit-${{ vars.ENVIRONMENT }}-frontend-service" \
--force-new-deployment
echo "ECS frontend service updated successfully."
shell: bash

- name: Update ECS Service with new cypress image
id: update-ecs-cypress
run: |
echo "Updating ECS cypress service with the new image..."
aws ecs update-service \
--cluster "conduit-${{ vars.ENVIRONMENT }}-ecs-cluster" \
--service "conduit-${{ vars.ENVIRONMENT }}-cypress-service" \
--force-new-deployment
echo "ECS cypress service updated successfully."
shell: bash
Loading