Compare commits
29 Commits
0816fc5eb9
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7c0596c03 | ||
|
|
f4714e2e2a | ||
|
|
eb8cb1608e | ||
|
|
ce3dcd2aec | ||
|
|
3cde6f7810 | ||
|
|
cdd7730141 | ||
|
|
d109e04e63 | ||
|
|
1d194dacdc | ||
|
|
bcdf3cc9b1 | ||
|
|
265fddaa75 | ||
|
|
18dde9b423 | ||
|
|
72f27ede55 | ||
|
|
8afb048664 | ||
|
|
9794c1b212 | ||
|
|
e826cca9fc | ||
|
|
1047225b76 | ||
|
|
d9b92e3e6c | ||
|
|
666449e5c5 | ||
|
|
4065fa13ec | ||
|
|
2996aefa8f | ||
|
|
e61bd5160d | ||
|
|
7113c24817 | ||
|
|
bc75947f51 | ||
|
|
ae676d80c5 | ||
|
|
43270cbaa9 | ||
|
|
3ab6552290 | ||
|
|
0ed9b55801 | ||
|
|
7c40cad831 | ||
|
|
ba4ce4fca6 |
56
.gitea/workflows/ci.yaml
Normal file
56
.gitea/workflows/ci.yaml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
name: Build and Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: localhost:9999
|
||||||
|
IMAGE_NAME: ${{ secrets.PROJECT_NAME }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cleaning:
|
||||||
|
runs-on: host
|
||||||
|
container: null
|
||||||
|
steps:
|
||||||
|
- name: Cleanup
|
||||||
|
run: |
|
||||||
|
docker stop $IMAGE_NAME || true
|
||||||
|
docker rm $IMAGE_NAME || true
|
||||||
|
docker container prune -f
|
||||||
|
docker image prune -af
|
||||||
|
|
||||||
|
build_image:
|
||||||
|
runs-on: host
|
||||||
|
needs: cleaning
|
||||||
|
steps:
|
||||||
|
- name: Clone repo
|
||||||
|
run: |
|
||||||
|
git clone ${{ gitea.server_url }}/${{ gitea.repository }} .
|
||||||
|
git checkout ${{ gitea.ref_name }}
|
||||||
|
|
||||||
|
- name: Copy env
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.ENV_FILE }}" > .env
|
||||||
|
cat .env
|
||||||
|
|
||||||
|
- name: Build & Push
|
||||||
|
run: |
|
||||||
|
docker build -t $REGISTRY/$IMAGE_NAME:${{ gitea.run_number }} .
|
||||||
|
docker push $REGISTRY/$IMAGE_NAME:${{ gitea.run_number }}
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
runs-on: host
|
||||||
|
needs: build_image
|
||||||
|
steps:
|
||||||
|
- name: Deploy container
|
||||||
|
run: |
|
||||||
|
docker run -d \
|
||||||
|
--name $IMAGE_NAME \
|
||||||
|
--memory="50m" \
|
||||||
|
--network scheduler-net \
|
||||||
|
--cpus="0.1" \
|
||||||
|
--restart always \
|
||||||
|
-p 9997:3000 \
|
||||||
|
$REGISTRY/$IMAGE_NAME:${{ gitea.run_number }}
|
||||||
@@ -12,8 +12,8 @@ build_image:
|
|||||||
script:
|
script:
|
||||||
- echo "Isi file .env:"
|
- echo "Isi file .env:"
|
||||||
- cat .env
|
- cat .env
|
||||||
- docker build -t 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_ID .
|
- docker build -t 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_IID .
|
||||||
- docker push 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_ID
|
- docker push 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_IID
|
||||||
environment:
|
environment:
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
@@ -24,7 +24,7 @@ build_image:
|
|||||||
deploy_development:
|
deploy_development:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- docker stack deploy --compose-file compose.yml email-notification
|
- docker run -d --name $PROJECT_NAME --memory="50m" --cpus="0.1" --restart always -p 7010:3000 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_IID
|
||||||
environment:
|
environment:
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
@@ -35,6 +35,8 @@ deploy_development:
|
|||||||
cleaning_image_and_container:
|
cleaning_image_and_container:
|
||||||
stage: cleaning
|
stage: cleaning
|
||||||
script:
|
script:
|
||||||
|
- docker stop $PROJECT_NAME || true
|
||||||
|
- docker rm $PROJECT_NAME || true
|
||||||
- echo y | docker container prune
|
- echo y | docker container prune
|
||||||
- echo y | docker image prune -a
|
- echo y | docker image prune -a
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ RUN go mod download
|
|||||||
|
|
||||||
RUN go build -o /email-notification
|
RUN go build -o /email-notification
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
CMD [ "/email-notification" ]
|
CMD [ "/email-notification" ]
|
||||||
27
compose.yml
27
compose.yml
@@ -1,16 +1,19 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
app:
|
email-notification:
|
||||||
image: 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_ID
|
image: 36.66.3.44:7007/$PROJECT_NAME:$CI_PIPELINE_IID
|
||||||
deploy:
|
# dns:
|
||||||
replicas : 1
|
# - 8.8.8.8
|
||||||
restart_policy :
|
# - 1.1.1.1
|
||||||
condition: on-failure
|
# deploy:
|
||||||
resources:
|
# replicas : 1
|
||||||
limits:
|
# restart_policy :
|
||||||
cpus: "0.1"
|
# condition: on-failure
|
||||||
memory: "50m"
|
# resources:
|
||||||
|
# limits:
|
||||||
|
# cpus: "0.1"
|
||||||
|
# memory: "50m"
|
||||||
restart: always
|
restart: always
|
||||||
|
mem_limit: 50m
|
||||||
|
cpus: 0.1
|
||||||
ports:
|
ports:
|
||||||
- "7010:3000"
|
- "7010:3000"
|
||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
func NewDatabase() *gorm.DB {
|
func NewDatabase() *gorm.DB {
|
||||||
username := os.Getenv("DB_USERNAME")
|
username := os.Getenv("DB_USERNAME")
|
||||||
password := "123$Nt1"
|
password := os.Getenv("DB_PASSWORD")
|
||||||
port, err := strconv.Atoi(os.Getenv("DB_PORT"))
|
port, err := strconv.Atoi(os.Getenv("DB_PORT"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("error ", err.Error())
|
fmt.Println("error ", err.Error())
|
||||||
|
|||||||
1
main.go
1
main.go
@@ -17,7 +17,6 @@ func corsMiddleware(next http.Handler) http.Handler {
|
|||||||
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, FETCH")
|
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, FETCH")
|
||||||
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
|
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
|
||||||
|
|
||||||
// Untuk preflight request
|
|
||||||
if r.Method == "OPTIONS" {
|
if r.Method == "OPTIONS" {
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user