-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (116 loc) · 4.55 KB
/
ci.yaml
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
127
128
129
130
131
# name: CI
# # This is the triggers block
# on:
# pull_request:
# branches:
# - main
# push:
# branches:
# - main
# jobs:
# build-and-test:
# name: Build the project
# # Run on which machine
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Install Dependencies
# run: npm ci
# # - name: Run ESLint
# # run: npm run lint
# - name: Test and Coverage
# run: npm run test
# env:
# DB_HOST: ${{ secrets.TEST_DB_HOST }}
# DB_PORT: ${{ secrets.TEST_DB_PORT }}
# DB_USERNAME: ${{ secrets.TEST_DB_USERNAME }}
# DB_PASSWORD: ${{ secrets.TEST_DB_PASSWORD }}
# DB_NAME: ${{ secrets.TEST_DB_NAME }}
# REFRESH_SECRET_KEY: ${{ secrets.REFRESH_SECRET_KEY }}
# JWKS_URI: ${{ secrets.JWKS_URI }}
# PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
# - name: Build TypeScript
# run: npm run build
# - name: SonarCloud Scan
# uses: SonarSource/sonarcloud-github-action@master
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# build-and-push-docker:
# name: Build and Push Docker Image
# needs: build-and-test
# runs-on: ubuntu-latest
# env:
# IMAGE_NAME: aakash1707/mernstack-auth-service
# IMAGE_TAG: build-${{ github.run_number }}
# if: github.ref == 'refs/heads/main' && github.event_name == 'push'
# steps:
# - name: Checkout Repository
# uses: actions/checkout@v3
# - name: Log into Docker Hub
# uses: docker/login-action@v1
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_PASSWORD }}
# - name: Build Docker Image
# run: docker build -t ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} -f docker/prod/Dockerfile .
# - name: Push Docker Image to Docker Hub
# run: docker push ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
name: CI
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build-and-test:
name: Build and Test
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install Dependencies
run: npm ci
# Uncomment this if linting is required
# - name: Run ESLint
# run: npm run lint
- name: Run Tests and Generate Coverage
run: npm run test
env:
DB_HOST: ${{ secrets.TEST_DB_HOST }}
DB_PORT: ${{ secrets.TEST_DB_PORT }}
DB_USERNAME: ${{ secrets.TEST_DB_USERNAME }}
DB_PASSWORD: ${{ secrets.TEST_DB_PASSWORD }}
DB_NAME: ${{ secrets.TEST_DB_NAME }}
REFRESH_SECRET_KEY: ${{ secrets.REFRESH_SECRET_KEY }}
JWKS_URI: ${{ secrets.JWKS_URI }}
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
- name: Build TypeScript Project
run: npm run build
- name: Run SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
build-and-push-docker:
name: Build and Push Docker Image
needs: build-and-test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event == 'push'
env:
IMAGE_NAME: aakash1707/mernstack-auth-service
IMAGE_TAG: build-${{ github.run_number }}
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build Docker Image
run: docker build -t ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} -f docker/prod/Dockerfile .
- name: Push Docker Image to Docker Hub
run: docker push ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}