Introduction:
CI/CD is a method used in modern software development to automate the process of integrating code changes, testing them, and deploying applications. This approach ensures that code changes are continuously tested and deployed, leading to faster development cycles and more reliable applications.
In this project, we utilize CI/CD to host a personal resume website on an EC2 instance using GitHub Actions. By automating the deployment process, any updates made to the resume repository are automatically reflected on the live website. This not only reduces manual effort but also ensures that the resume is always current and available to potential employers or collaborators.By integrating GitHub Actions with AWS, you can achieve continuous deployment, ensuring that any changes made to your resume are automatically reflected online.
This article helps you understand how you can automatically deploy your code to AWS EC2 from GitHub.
Step-1: Launch an EC2 instance with the Ubuntu server. Modify the security group inbound rules to allow SSH (port 22), HTTP (port 80), and HTTPS (port 443).
Step-2: Create a public repository on GitHub for example Host-Resume-on-ec2-githubactions.
Add an index.html file containing the code for your resume website.
Add a CSS file for styling your resume.
Step-3: Add secrets to the repository for secure information storage.
EC2_SSH_KEY: Your key pair file for SSH access.
HOST_DNS: The public DNS of your EC2 instance.
USERNAME: The username for SSH (e.g., ubuntu).
TARGET_DIR: The target directory on the EC2 instance (e.g., home).
Step-4: Create a .github/workflows directory in your repository.
Add a YAML file (e.g., github-actions-ec2.yml) with the following code to automate deployment:
Add the following code so that your actions only run when you push to main branch.
# Trigger deployment only on push to main branch
on:
push:
branches:
- main
jobs:
deploy:
name: Deploy to EC2 on master branch push
runs-on: ubuntu-latest
steps:
- name: Checkout the files
uses: actions/checkout@v2
- name: Deploy to Server 1
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.EC2_SSH_KEY }}
REMOTE_HOST: ${{ secrets.HOST_DNS }}
REMOTE_USER: ${{ secrets.USERNAME }}
TARGET: ${{ secrets.TARGET_DIR }}
- name: Executing remote ssh commands using ssh key
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_DNS }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
sudo apt-get -y update
sudo apt-get install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2
cd home
sudo mv * /var/www/html
Once done with this your workflow will be created and using the public IP address if the EC2 instance you can view the resume.
If any update was done in your main branch you can able to view by refreshing the page.
Conclusion:
Hosting a resume on an EC2 instance using GitHub Actions combines the power of cloud infrastructure with the automation of CI/CD workflows. This method ensures that your resume is always up-to-date and accessible, demonstrating technical skills and modern development practices. This approach can be extended to various applications, making it a versatile solution for web hosting needs.
Top comments (0)