-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 85faad4
Showing
45 changed files
with
2,378 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
name: CICD Pipeline | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
|
||
jobs: | ||
build: | ||
|
||
runs-on: self-hosted | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
cache: maven | ||
- name: Build with Maven | ||
run: mvn package --file pom.xml | ||
|
||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: Boardgame | ||
path: target/*.jar | ||
|
||
- name: Trivy FS Scan | ||
run: | | ||
trivy fs --format table -o trivy-fs-report.html . | ||
- name: SonarQube Scan | ||
uses: sonarsource/sonarqube-scan-action@master | ||
env: | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} | ||
|
||
- name: Install jq | ||
run: sudo apt-get update && sudo apt-get install -y jq | ||
|
||
# Check the Quality Gate status. | ||
- name: SonarQube Quality Gate check | ||
id: sonarqube-quality-gate-check | ||
uses: sonarsource/sonarqube-quality-gate-action@master | ||
# Force to fail step after specific time. | ||
timeout-minutes: 5 | ||
env: | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Build Docker Image | ||
run: | | ||
docker build -t adijaiswal/boardgame:latest . | ||
- name: Trivy Image Scan | ||
run: | | ||
trivy image --format table -o trivy-image-report.html adijaiswal/board:latest | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Push Docker Image | ||
run: | | ||
docker push adijaiswal/boardgame:latest | ||
- name: Kubectl Action | ||
uses: tale/kubectl-action@v1 | ||
with: | ||
base64-kube-config: ${{ secrets.KUBE_CONFIG }} | ||
- run: | | ||
kubectl apply -f deployment-service.yaml -n webapps | ||
kubectl get svc -n webapps | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
HELP.md | ||
target/ | ||
!.mvn/wrapper/maven-wrapper.jar | ||
!**/src/main/**/target/ | ||
!**/src/test/**/target/ | ||
|
||
### STS ### | ||
.apt_generated | ||
.classpath | ||
.factorypath | ||
.project | ||
.settings | ||
.springBeans | ||
.sts4-cache | ||
|
||
### IntelliJ IDEA ### | ||
.idea | ||
*.iws | ||
*.iml | ||
*.ipr | ||
|
||
### NetBeans ### | ||
/nbproject/private/ | ||
/nbbuild/ | ||
/dist/ | ||
/nbdist/ | ||
/.nb-gradle/ | ||
build/ | ||
!**/src/main/**/build/ | ||
!**/src/test/**/build/ | ||
|
||
### VS Code ### | ||
.vscode/ |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip | ||
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
FROM adoptopenjdk/openjdk11 | ||
|
||
EXPOSE 8080 | ||
|
||
ENV APP_HOME /usr/src/app | ||
|
||
COPY target/*.jar $APP_HOME/app.jar | ||
|
||
WORKDIR $APP_HOME | ||
|
||
CMD ["java", "-jar", "app.jar"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
pipeline { | ||
agent any | ||
tools { | ||
jdk 'jdk17' | ||
maven 'maven3' | ||
} | ||
|
||
stages { | ||
stage('Compile') { | ||
steps { | ||
sh 'mvn compile' | ||
} | ||
} | ||
|
||
stage('Test') { | ||
steps { | ||
sh 'mvn test' | ||
} | ||
} | ||
|
||
stage('Build') { | ||
steps { | ||
sh 'mvn package' | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
pipeline { | ||
agent {label 'slave-1'} | ||
|
||
tools { | ||
jdk 'jdk17' | ||
maven 'maven3' | ||
} | ||
|
||
stages { | ||
stage('Compile') { | ||
steps { | ||
sh 'mvn compile' | ||
} | ||
} | ||
|
||
stage('Test') { | ||
steps { | ||
sh 'mvn test' | ||
} | ||
} | ||
|
||
stage('Build') { | ||
steps { | ||
sh 'mvn package' | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# BoardgameListingWebApp | ||
|
||
## Description | ||
|
||
**Board Game Database Full-Stack Web Application.** | ||
This web application displays lists of board games and their reviews. While anyone can view the board game lists and reviews, they are required to log in to add/ edit the board games and their reviews. The 'users' have the authority to add board games to the list and add reviews, and the 'managers' have the authority to edit/ delete the reviews on top of the authorities of users. | ||
|
||
## Technologies | ||
|
||
- Java | ||
- Spring Boot | ||
- Amazon Web Services(AWS) EC2 | ||
- Thymeleaf | ||
- Thymeleaf Fragments | ||
- HTML5 | ||
- CSS | ||
- JavaScript | ||
- Spring MVC | ||
- JDBC | ||
- H2 Database Engine (In-memory) | ||
- JUnit test framework | ||
- Spring Security | ||
- Twitter Bootstrap | ||
- Maven | ||
|
||
## Features | ||
|
||
- Full-Stack Application | ||
- UI components created with Thymeleaf and styled with Twitter Bootstrap | ||
- Authentication and authorization using Spring Security | ||
- Authentication by allowing the users to authenticate with a username and password | ||
- Authorization by granting different permissions based on the roles (non-members, users, and managers) | ||
- Different roles (non-members, users, and managers) with varying levels of permissions | ||
- Non-members only can see the boardgame lists and reviews | ||
- Users can add board games and write reviews | ||
- Managers can edit and delete the reviews | ||
- Deployed the application on AWS EC2 | ||
- JUnit test framework for unit testing | ||
- Spring MVC best practices to segregate views, controllers, and database packages | ||
- JDBC for database connectivity and interaction | ||
- CRUD (Create, Read, Update, Delete) operations for managing data in the database | ||
- Schema.sql file to customize the schema and input initial data | ||
- Thymeleaf Fragments to reduce redundancy of repeating HTML elements (head, footer, navigation) | ||
|
||
## How to Run | ||
|
||
1. Clone the repository | ||
2. Open the project in your IDE of choice | ||
3. Run the application | ||
4. To use initial user data, use the following credentials. | ||
- username: bugs | password: bunny (user role) | ||
- username: daffy | password: duck (manager role) | ||
5. You can also sign-up as a new user and customize your role to play with the application! 😊 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
apiVersion: apps/v1 | ||
kind: Deployment # Kubernetes resource kind we are creating | ||
metadata: | ||
name: boardgame-deployment | ||
spec: | ||
selector: | ||
matchLabels: | ||
app: boardgame | ||
replicas: 2 # Number of replicas that will be created for this deployment | ||
template: | ||
metadata: | ||
labels: | ||
app: boardgame | ||
spec: | ||
containers: | ||
- name: boardgame | ||
image: adijaiswal/boardgame:latest # Image that will be used to containers in the cluster | ||
imagePullPolicy: Always | ||
ports: | ||
- containerPort: 8080 # The port that the container is running on in the cluster | ||
|
||
|
||
--- | ||
|
||
apiVersion: v1 # Kubernetes API version | ||
kind: Service # Kubernetes resource kind we are creating | ||
metadata: # Metadata of the resource kind we are creating | ||
name: boardgame-ssvc | ||
spec: | ||
selector: | ||
app: boardgame | ||
ports: | ||
- protocol: "TCP" | ||
port: 8080 # The port that the service is running on in the cluster | ||
targetPort: 8080 # The port exposed by the service | ||
type: LoadBalancer # type of the service. |
Oops, something went wrong.