🌤️ Complete GitHub Actions CI/CD Weather Forecast App on Ghaymah Cloud
A simple modern Flask-based weather forecast application that fetches real-time weather data from OpenWeatherMap and provides a beautiful, responsive UI. This project is Dockerized and supports CI/CD deployment to Ghaymah Cloud using the included shell script.
🚀 Features
- 🌍 Search weather for any city worldwide
- 🌡️ Shows temperature, feels-like, humidity, pressure, wind speed, and visibility
- 🌅 Displays sunrise and sunset times
- 📊 Auto-updating with timestamp
- 🎨 Responsive and modern UI (HTML, CSS, JS embedded in Flask)
- 🐳 Dockerized for portability
- ☁️ CI/CD ready with Ghaymah Cloud
📂 Project Structure
.
├── .github/workflows/cicd.yaml # GitHub Actions CI/CD workflow for my App
├── app.py # Flask application with weather API integration
├── CICDpipeline.sh # CI/CD pipeline script for Docker + Ghaymah Cloud
├── Dockerfile # Dockerfile to containerize the Flask app
├── requirements.txt # Python dependencies
├── templates/ # HTML templates (auto-generated by Dockerfile)
└── README.md # Documentation
⚙️ Prerequisites
Before running or deploying the app, ensure you have:
- Python 3.9+
- Docker
- Ghaymah CLI (
gy) installed and configured - An OpenWeatherMap API key
🖥️ On Your Terminal
-
Install Ghaymah CLI
curl -sSl https://cli.ghaymah.systems/install.sh | bash -
Navigate to Ghaymah Binary Directory & Create Project Files
cd /ghaymah/binCreate the following files:
Dockerfileindex.html
-
Set Project Name
gy r c p --set .name="project name" -
Initialize Project with Your Ghaymah Project ID
gy r a init -p project-id -
Copy Configuration File
- Copy the generated
.ghaymah.jsonfile to your repository.
- Copy the generated
🌩️ On Your GitPasha Account
-
Add Repository Secrets
DOCKERHUB_USERNAMEDOCKERHUB_PASSWORDGHAYMAH_EMAILGHAYMAH_PASSWORD
-
Push Your Repository
git add . git commit -m "Initial commit for Ghaymah deployment" git push origin main
✅ Now your project is ready for automatic deployment via Ghaymah Cloud!
🛠️ Local Development
-
Clone this repository:
git clone https://github.com/your-username/weather-app.git cd weather-app -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows -
Install dependencies:
pip install -r requirements.txt -
Run the app:
python app.py -
Open your browser at:
👉 http://127.0.0.1:5000
🐳 Running with Docker
-
Build the Docker image:
docker build -t weather-app:1 . -
Run the container:
docker run -p 5000:5000 weather-app:1 -
Visit the app at:
👉 http://localhost:5000
☁️ Deployment to Ghaymah Cloud uisng CICDpipeline.sh Script
This project includes a CICDpipeline.sh script that:
- Builds and tags Docker images
- Pushes them to Docker Hub
- Creates a
.ghaymah.jsonconfig - Deploys the app to Ghaymah Cloud
🔧 Steps
-
Make the script executable:
chmod +x CICDpipeline.sh -
Run the deployment script:
./CICDpipeline.sh -
Follow the prompts:
- Enter your Ghaymah Project Name
- Enter your App Name
-
If Ghaymah CLI is installed, the app will be deployed automatically.
✅ Your app will be accessible at:
https://<your-app-name>.hosted.ghaymah.systems