FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
httpsms/.github/workflows/api.yml at main · Honelign/httpsms · GitHub
Honelign
/
httpsms
Public
forked from
NdoleStudio/httpsms
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
httpsms
/
.github
/
workflows
/
api.yml
Copy path
View runs
More file actions
More file actions
Latest commit
History
History
History
126 lines (111 loc) · 3.9 KB
Breadcrumbs
httpsms
/
.github
/
workflows
/
api.yml
Copy path
File metadata and controls
126 lines (111 loc) · 3.9 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
name
:
api
on
:
push
:
branches
:
-
main
pull_request
:
branches
:
-
main
permissions
:
contents
:
read
id-token
:
write
jobs
:
test
:
name
:
Integration Tests
runs-on
:
ubuntu-latest
steps
:
-
name
:
Checkout
uses
:
actions/checkout@v6
-
name
:
Set up Go
uses
:
actions/setup-go@v6
with
:
go-version
:
stable
-
name
:
Generate Firebase credentials
run
:
|
bash tests/generate-firebase-credentials.sh tests/firebase-credentials.json
echo "FIREBASE_CREDENTIALS=$(jq -c . tests/firebase-credentials.json)" >> $GITHUB_ENV
-
name
:
Start Services
working-directory
:
./tests
run
:
docker compose up -d --build
-
name
:
Wait for services to be healthy
working-directory
:
./tests
run
:
|
echo "Waiting for MongoDB to be healthy..."
for i in $(seq 1 20); do
if docker compose exec mongodb mongosh --eval "db.runCommand('ping').ok" --quiet >/dev/null 2>&1; then
echo "MongoDB is healthy!"
break
fi
if [ $i -eq 20 ]; then
echo "MongoDB failed to become healthy"
docker compose logs mongodb
exit 1
fi
echo "MongoDB attempt $i/20 - waiting 3s..."
sleep 3
done
echo "Waiting for API to be healthy..."
for i in $(seq 1 40); do
if docker compose exec api curl -sf http://localhost:8000/health >/dev/null 2>&1; then
echo "API is healthy!"
break
fi
if [ $i -eq 40 ]; then
echo "API failed to become healthy"
docker compose logs api
exit 1
fi
echo "Attempt $i/40 - waiting 5s..."
sleep 5
done
-
name
:
Seed Database
working-directory
:
./tests
run
:
|
echo "Waiting for seed container to finish..."
docker compose wait seed ||
true
sleep 2
-
name
:
Run Integration Tests
working-directory
:
./tests
run
:
go test -v -timeout 300s ./...
-
name
:
Collect Logs on Failure
if
:
failure()
working-directory
:
./tests
run
:
|
docker compose logs --tail 200
-
name
:
Stop Services
if
:
always()
working-directory
:
./tests
run
:
docker compose down -v
deploy
:
name
:
Deploy
runs-on
:
ubuntu-latest
needs
:
test
if
:
github.event_name == 'push' && github.ref == 'refs/heads/main'
steps
:
-
name
:
Authenticate to Google Cloud
uses
:
google-github-actions/auth@v3
with
:
workload_identity_provider
:
${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account
:
${{ secrets.GCP_SERVICE_ACCOUNT }}
-
name
:
Set up Cloud SDK
uses
:
google-github-actions/setup-gcloud@v3
-
name
:
Trigger Cloud Build Deploy
run
:
|
BUILD_ID=$(gcloud builds triggers run api-httpsms-com \
--region=global \
--project=httpsms-86c51 \
--sha=${{ github.sha }} \
--format="value(metadata.build.id)")
echo -e "Cloud Build: \033[34mhttps://console.cloud.google.com/cloud-build/builds/$BUILD_ID?project=httpsms-86c51\033[0m"
echo ""
echo "Polling Cloud Build Status..."
while true; do
STATUS=$(gcloud builds describe "$BUILD_ID" --region=global --project=httpsms-86c51 --format="value(status)")
LOCAL_TIME=$(date -u '+%Y-%m-%d %H:%M:%S UTC')
echo -e " \033[90m${LOCAL_TIME}\033[0m status=\033[36m${STATUS}\033[0m"
case "$STATUS" in
SUCCESS) echo -e "\033[32mBuild succeeded!\033[0m"; exit 0 ;;
FAILURE|TIMEOUT|CANCELLED|EXPIRED|INTERNAL_ERROR) echo -e "\033[31mBuild failed with status: $STATUS\033[0m"; exit 1 ;;
esac
sleep 30
done
Back
|
FazBrowse Home
|
New Git URL