-
Notifications
You must be signed in to change notification settings - Fork 0
112 lines (106 loc) · 3.87 KB
/
develop.yml
File metadata and controls
112 lines (106 loc) · 3.87 KB
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
name: development build and deploy
on:
push:
branches: [develop]
pull_request:
branches: [develop]
env:
MINIO_ROOT_USER: ${{ secrets.MINIO_ROOT_USER }}
MINIO_ROOT_PASSWORD: ${{ secrets.MINIO_ROOT_PASSWORD }}
MONGO_INITDB_ROOT_USERNAME: ${{ secrets.MONGO_INITDB_ROOT_USERNAME }}
MONGO_INITDB_ROOT_PASSWORD: ${{ secrets.MONGO_INITDB_ROOT_PASSWORD }}
HARBOR_HOST_NAME: ${{ secrets.HARBOR_HOST_NAME }}
HARBOR_USER_PASSWORD: ${{ secrets.HARBOR_USER_PASSWORD }}
HORBOR_USER: ${{ secrets.HORBOR_USER }}
jobs:
clean:
name: clean docker volume and network
runs-on: self-hosted
steps:
- name: remove running container
run: |
docker rm -f music_service
docker rm -f file_server
docker rm -f mongo
- name: remove docker volume
run: |
docker volume rm -f file_server
docker volume rm -f mongo
- name: remove docker network
run: |
docker network prune -f
build:
name: build
runs-on: self-hosted
needs: clean
steps:
- uses: actions/checkout@v3
- name: create docker network
env:
BUILD_VERSION: ${{ github.run_number }}
run: docker network create backend --driver bridge --gateway 10.123.$BUILD_VERSION.1 --subnet 10.123.$BUILD_VERSION.0/24
- name: create docker volume
run: |
docker volume create file_server --driver local
docker volume create mongo --driver local
- name: generate .env
run: |
touch .env
cat > .env <<EOF
# Base Env
APP_ENV=production
# minIO
MINIO_HOST_NAME=file_server
MINIO_API_PORT=9000
MINIO_ROOT_USER=$MINIO_ROOT_USER
MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD
# music service
MUSIC_SERVICE_INTERNAL_PORT=8090
# mongoDB
MONGO_HOST_NAME=mongo
MONGO_PORT=27017
MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD
DATABASE_NAME=production
EOF
- name: Build music_service image
env:
UBUNTU_VERSION: ${{ secrets.UBUNTU_VERSION }}
run: docker build --build-arg UBUNTU_VERSION=$UBUNTU_VERSION -t music_service:dev .
- name: generate file_server container
run: |
docker run -d -v file_server:/DATA \
-p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=$MINIO_ROOT_USER \
-e MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD \
--network backend \
--name file_server \
quay.io/minio/minio:RELEASE.2022-04-09T15-09-52Z \
server /DATA --console-address ":9001"
- name: generate mongoDB container
run: |
docker run -d --name mongo -v mongo:/data/db \
-p 27017:27017 \
--network backend \
-e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME \
-e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD \
mongo:5
- name: generate music_service container
run: |
docker run -d --name music_service -v $(pwd):/workspace \
--network backend \
-e MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME \
-e MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD \
-e MINIO_ROOT_USER=$MINIO_ROOT_USER \
-e MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD \
-p 8090:8090 \
music_service:dev
- name: harbor login
run: |
echo $HARBOR_USER_PASSWORD | docker login https://$HARBOR_HOST_NAME -u $HORBOR_USER --password-stdin
- name: tagging and push into harbor
env:
IMAGE_TAG: latest
run: |
docker tag music_service:dev $HARBOR_HOST_NAME/jungmir/music_service:$IMAGE_TAG
docker push $HARBOR_HOST_NAME/jungmir/music_service:$IMAGE_TAG