You are on page 1of 6

Integration, Interaction and Innovation Pages 1–6

2022

Final Project - Resume Insights with DevOps


CS 816 - Software Production Engineering
Name: Krishna Phalgun & Manasa Kashyap
Roll No: IMT2018038 & IMT2018040
Email: Krishna.Phalgun@iiitb.ac.in & ManasaKashyap@iiitb.ac.in

Keywords: Flutter, GitHub, Docker, GitHub Actions, Amazon EC2, Sentry, DeepSource, GuardRails

ABSTRACT resumes from other people who are interested in the same company.
A user will be able to choose the company of interest and be able to Based on the differences, the tool will suggest learning resources that
upload their resume. After that, the Resume Insights tool analyses would make it easier for the user to master new skills.
the resume and extracts useful information, which is then compared to
resumes from other people who are interested in the same company.
Based on the differences, the tool will suggest learning resources that
would make it easier for the user to master new skills.

GitHub (Public View) Docker Hub (Public View) Resume Insights


(The quality of the service is not guaranteed)

CONTENTS

Contents 1

1 Resume Insights Overview 1


1.1 Scenario . . . . . . . . . . . . . . . . . . . . . . . . . 1
Resume Insights with Announcements Section
1.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 AWS Setup and Configuration 2

3 Installation 2 1.2 Features


3.1 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 – User can browse through learning catalouge and company catalouge.
3.2 VS Code . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.3 Android SDK and Flutter . . . . . . . . . . . . . . . . 2 – User can see upcoming events in the announcements and calendar.

4 Development and Workflow 3 – Users can choose to contribute and has access to additional useful
4.1 Source Control Management: Git and GitHub . . . . . . 3 links.
4.2 Application Testing: Flutter Testing . . . . . . . . . . . 3
The lib/ directory contains the entire code for the scientific calculator
4.3 Continuous Integration: GitHub Actions . . . . . . . . 4
application.
4.4 Continuous Delivery: Ansible . . . . . . . . . . . . . . 4
4.5 Continuous Monitoring: Sentry . . . . . . . . . . . . . 5
4.6 Continuous Monitoring: DeepSource . . . . . . . . . . 5
4.7 Continuous Monitoring: GuardRails . . . . . . . . . . . 6

5 Acknowledgements 6

6 References 6

1 RESUME INSIGHTS OVERVIEW


This section provides an overview of the resume insights application and
its functionalities.

1.1 Scenario
A user will be able to choose the company of interest and be able Resume Insights with Calendar Section
to upload their resume. After that, the Resume Insights tool analyses
the resume and extracts useful information, which is then compared to

This manuscript is in the process of being reviewed and will not be published. 1
CS 816 - Software Production Engineering

2 AWS SETUP AND CONFIGURATION


AWS (Amazon Web Services) is a comprehensive, evolving cloud
computing platform provided by Amazon that includes a mixture of
infrastructure as a service (IaaS), platform as a service (PaaS) and
packaged software as a service (SaaS) offerings.

For Backend T2.medium EC2 Instance

– Platform: Ubuntu Server 18.04 LTS

– Kernel Details: Linux/UNIX

– RAM: 4 GiB

– No of vCPU: 2
3.2 VS Code
– Memory Volume: 70 GiB
sudo apt install apt-transport-https
– IPv6 Support: Yes
sudo apt update
For Monitoring and Backup C5a.xlarge EC2 Instance sudo apt install code

– Platform: Ubuntu Server 18.04 LTS

– Kernel Details: Linux/UNIX

– RAM: 8 GiB

– No of vCPU: 4

– Memory Volume: 70 GiB

– IPv6 Support: Yes

Resume Insights Technology Stack

– Frontend: Flutter

– Backend: Firebase
3.3 Android SDK and Flutter
– Database: Google Sheets
RUN apt update && apt install -y curl git unzip
– Cloud: Amazon Web Services
xz-utils zip libglu1-mesa openjdk-8-jdk wget
DevOps Tools RUN mkdir -p Android/sdk
ENV ANDROID_SDK_ROOT /home/user/Android/sdk
– Source Control Management: GitHub RUN mkdir -p .android && touch
.android/repositories.cfg
– Containerization: Docker RUN wget -O sdk-tools.zip
dl.google.com/android/repository/sdk-tools.zip
– Continuous Integration (CI): Github Actions RUN unzip sdk-tools.zip && rm sdk-tools.zip
RUN mv tools Android/sdk/tools
– Continuous Deployment (CD): Ansible RUN cd Android/sdk/tools/bin && yes |
./sdkmanager --licenses
– Monitoring: Sentry, DeepSource, GuardRails RUN cd Android/sdk/tools/bin && ./sdkmanager
"build-tools;29.0.2" "patcher;v4"
"platform-tools" "platforms;android-29"
3 INSTALLATION "sources;android-29"
This section comprises all of the commands for installing the tools ENV PATH
needed to set up the Resume Insights development environment. "$PATH:/home/user/Android/sdk/platform-tools"
RUN git clone
3.1 Git https://github.com/flutter/flutter.git
ENV PATH "$PATH:/home/user/flutter/bin"
RUN flutter doctor
RUN sudo apt-get install git-all

2
CS 816 - Software Production Engineering

4 DEVELOPMENT AND WORKFLOW Unit Testing


This section outlines each tool and how it was used to make the scientific Unit testing is the easiest method to test an application. It is based on
calculator application. ensuring the correctness of a piece of code (a function, in general) o
a method of a class. But, it does not reflect the real environment and
4.1 Source Control Management: Git and GitHub subsequently, is the least option to find the bugs.
Source control (or version control) is the practice of tracking and Widget Testing
managing changes to code. Source control management (SCM) systems
Widget testing is based on ensuring the correctness of the widget
provide a running history of code development and help to resolve
creation, rendering and interaction with other widgets as expected. It
conflicts when merging contributions from multiple sources. [4]
goes one step further and provides near real-time environment to find
more bugs.
The scientific calculator application uses Git and GitHub as source
control management. Git is software for tracking changes in any Integration Testing
set of files, usually used for coordinating work among programmers
collaboratively developing source code during software development. Its Integration testing involves both unit testing and widget testing along
goals include speed, data integrity, and support for distributed, non-linear with external component of the application like database, web service,
workflows. etc., It simulates or mocks the real environment to find nearly all bugs,
GitHub a provider of Internet hosting for software development and but it is the most complicated process.
version control using Git. It offers the distributed version control and The Resume Insights application has been tested with all kinds of testing
source code management (SCM) functionality of Git, plus its own methods supported by Flutter.
features. It provides access control and several collaboration features
such as bug tracking, feature requests, task management, continuous
integration and wikis for every project.

RUN git init # To initialize the project folder


so Git tracks it as a repository.
RUN git branch -m main # To create a new branch.
RUN git add . # To add a changes in the working
directory to the staging area.
RUN git commit -m message # To commit changes
in the staging area.
RUN git remote add origin remote-url # To add a
new remote.
RUN git push origin -u main # To push the
commits to the remote working directory.
Testing Code Snippet

Executing Git Commands


Test Cases Summary

WebDriver is an open source tool for automated testing of webapps


4.2 Application Testing: Flutter Testing across many browsers. It provides capabilities for navigating to web
Testing is very important phase in the development life cycle of an pages, user input, JavaScript execution, and more. ChromeDriver is
application. It ensures that the application is of high quality. Dart a standalone server that implements the W3C WebDriver standard.
language and Flutter framework provides extensive support for the ChromeDriver is available for Chrome on Android and Chrome on
automated testing of an application. Flutter provides extensive and Desktop (Mac, Linux, Windows and ChromeOS).
exclusive support for Widget testing.

3
CS 816 - Software Production Engineering

4.3 Continuous Integration: GitHub Actions


Continuous integration is the practice of automating the integration of
code changes from multiple contributors into a single software project.
It is a primary DevOps best practice, allowing developers to frequently
merge code changes into a central repository where builds and tests then
run. Automated tools are used to assert the new correctness of code
before integration.

Jenkins was used to build the Project CI pipeline at first, but it had to be
abandoned due to a lack of resources, such as memory. Github Actions
is one of the many options that could be used to implement continuous
integration by ensuring that a new version of a software is shipped to the
production or testing area as soon as possible.
Workflow History
A job is a set of steps in a workflow that execute on the same runner.
Each step is either a shell script that will be executed, or an action that
will be run. Steps are executed in order and are dependent on each other.

A workflow is a configurable automated process that will run one or more


jobs. Workflows are defined by a YAML file checked in to the repository
and will run when triggered by an event in the repository, or they can
be triggered manually, or at a defined schedule. The .github/workflow
directory contains all of the essential YAML files.

Workflow Build Job

the yml file are accessed during the build process. To push our image to
Docker Hub, a login to Docker is required.

4.4 Continuous Delivery: Ansible


Ansible is a software tool that provides simple but powerful automation
Main YAML for cross-platform computer support. It used for application deployment,
updates on workstations and servers, cloud provisioning, configuration
management, intra-service orchestration, and nearly anything a systems
Two jobs are configured in GitHub Actions. One is for the development, administrator does on a weekly or daily basis. It does not depend on
and the other is for deployment with ansible. Only when the development agent software and has no additional security infrastructure, so it is easy
job has completed is the deployment job executed. to deploy. Because it is all about automation, it requires instructions to
accomplish each job. With everything written down in simple script form,
The code with the ”on” tag in main.yml in the workflows is triggered it is easy to do version control.
on making a push or pull request to the main branch. The code with the
”deploy” tag is triggered to perform the ansible action. The complete
workflow can be seen in the GitHub Actions tab.
A container is a standard unit of software that packages up code and
all its dependencies so the application runs quickly and reliably from
one computing environment to another. A Docker container image is a
lightweight, standalone, executable package of software that includes
everything needed to run an application: code, runtime, system tools,
system libraries and settings. Container images become containers at
runtime and in the case of Docker containers – images become containers
when they run on Docker Engine. [7]

A file named Dockerfile with no extension is created in the root directory


to create the docker image. The node is the base image. The files are
copied from the dist folder and copied in the nginx path for serving the
web application once the build is complete. The username and password
are stored in GitHub secrets with a variable name. The secrets stored in Docker File

4
CS 816 - Software Production Engineering

In Ansible, there are two categories of computers: the control node and 4.5 Continuous Monitoring: Sentry
managed nodes. The control node is a computer that runs Ansible. There Sentry is an application monitoring platform that enables developers
must be at least one control node, although a backup control node may to monitor, diagnose, fix, and optimize the performance of their code.
also exist. A managed node is any device being managed by the control It is an open-source full-stack error tracking system which supports a
node. Ansible executes these modules over SSH and removes them when wide range of server, browser, desktop and native mobile languages and
finished. The only requirement for this interaction is that the Ansible frameworks including PHP, Node.js, Python, Ruby, C#, Java, Go, React,
control node has login access to the managed nodes. [8] Angular, Vue, JavaScript and more. The system is used by Dropbox,
AirBnB, PayPal, Uber, reddit, Mozilla, MailChimp, and Microsoft to
The Dockerfile in root folder is created to run the shell commands for monitor thousands of applications.
ansible. Alpine (a lightweight Linux) is used as the base image, with
an ansible setup applied on top of it. As noted above, the requirements
and environment setup are completed (ansible, pip3, docker, sshpass,
openssh-client). Inventory, configuration, and the shell script are all taken
care of and copied to the appropriate locations.

A slave instance of Amazon AWS EC2 is used for testing. The IP


address of the slave is saved in the host file along with a few variables
like connection with ssh, username, password. The ansible-playbook
script is executed with the yml file that was copied during the docker
build process, and the SSH password is established with secrets. The
playbook.yml file is triggered during the execution command to which
path is given once Ansible SSH to the slave is completed. If a docker Sentry Configuration in Application Lifecycle
instance already exists, the playbook will delete it and create a new one
with the latest changes. To serve the application via http, port 80 is linked
to docker port 80.

Code Snippet with an Intentional Error

Docker Container List

Sentry Log and Issues Tab

4.6 Continuous Monitoring: DeepSource


DeepSource is an automated code review tool that helps developers find
Docker Image in Docker Hub
and automatically fix bugs in code. It continuously analyzes source
code changes and identifies bugs categorized as security, performance,
anti-patterns, and potential bug-risks, and even formats code to follow

5
CS 816 - Software Production Engineering

5 ACKNOWLEDGEMENTS
I am grateful to Prof. B Thangaraju B and the CS 816 course TAs for
their assistance in completing this mini-project.

6 REFERENCES

[1] “What is DevOps? - Amazon Web Services (AWS).” Amazon Web


Services, Inc. Available at: https://aws.amazon.com/devops/what-is-
devops/. Accessed April 17, 2022.

[2] “What Is DevOps and How Does It Work? — Synopsys.” What


Sentry Dashboard Is DevOps and How Does It Work? — Synopsys. Available at:
https://www.synopsys.com/glossary/what-is-devops.html. Accessed
April 17, 2022.
style guidelines. DeepSource integrates with your existing code review
workflow in GitHub, GitLab, and Bitbucket and runs analysis on every
commit and pull request, automatically. DeepSource is free to use [3] “Angular.” Angular. Available at: https://angular.io/. Accessed April
for open-source projects and they charge a subscription fee for private 18, 2022.
projects and on-premise Enterprise deployments.
[4] “What is Source Control? - Amazon Web Services.” Amazon Web
Services, Inc. Available at: https://aws.amazon.com/devops/source-
control/. Accessed April 18, 2022.

[5] Patil, S. “Git And Github Version Control (Local And Remote
Repository).” Git And Github Version Control (Local And Remote
Repository). Available at: https://www.c-sharpcorner.com/article/git-
and-github-version-control-local-and-remote-repository/.

[6] “Testing Angular – A Guide to Robust Angular Applications.”


Testing Angular – A Guide to Robust Angular Applications. Available
at: https://testing-angular.com/. Accessed April 18, 2022.

[7] “What is a Container? - Docker.” Docker. Available at:


DeepSource Dashboard
https://www.docker.com/resources/what-container/. Accessed April
18, 2022.

4.7 Continuous Monitoring: GuardRails [8] “What is Ansible? — Opensource.com.” What Is Ansible? —
GuardRails is a continuous application security verification platform Opensource.Com. Available at: https://opensource.com/resources/what-
that empowers modern development teams to find, fix and prevent ansible. Accessed April 18, 2022.
vulnerabilities related to source code, open source libraries, secret
management and cloud configuration. [9] “Flutter - Build Apps for Any Screen.” Flutter - Build Apps for Any
Screen, flutter.dev, https://flutter.dev/. Accessed 13 May 2022.

[10] “Testing — Flutter.” Testing — Flutter, docs.flutter.dev/testing.


Accessed 13 May 2022.

[11] “Application Monitoring and Error Tracking Software.” Sentry,


sentry.io, https://sentry.io/. Accessed 13 May 2022.

[12] “DeepSource: Fast and Reliable Static Analysis Platform.”


DeepSource, deepsource.io, https://deepsource.io/. Accessed 13 May
2022.

[13] “GuardRails - Continuous Security for Your Applications.”


GaurdRails Dashboard GuardRails - Continuous Security for Your Applications.

You might also like