Skip to content

Commit 694f7da

Browse files
committed
feat: Implement Airflow CI/CD pipeline with conditional deployment, add new AWS SAA and Snowflake documentation scraper DAGs, and update related configurations.
1 parent 931371a commit 694f7da

6 files changed

Lines changed: 686 additions & 22 deletions

File tree

.env.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ TELEGRAM_CHAT_ID=your_chat_id_here
1818

1919
# Pinecone Configuration
2020
PINECONE_API_KEY=your_pinecone_api_key
21-
PINECONE_INDEX_NAME=your_pinecone_index_name
21+
PINECONE_SF_INDEX_NAME=your_pinecone_sf_index_name
22+
PINECONE_AWS_INDEX_NAME=your_pinecone_aws_index_name
2223

2324
# OpenAI Configuration
2425
OPENAI_API_KEY=your_openai_api_key

.github/workflows/deploy_airflow.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ jobs:
102102
echo "TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }}" >> .env
103103
echo "TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }}" >> .env
104104
echo "PINECONE_API_KEY=${{ secrets.PINECONE_API_KEY }}" >> .env
105-
echo "PINECONE_INDEX_NAME=${{ secrets.PINECONE_INDEX_NAME }}" >> .env
105+
echo "PINECONE_SF_INDEX_NAME=${{ secrets.PINECONE_SF_INDEX_NAME }}" >> .env
106+
echo "PINECONE_AWS_INDEX_NAME=${{ secrets.PINECONE_AWS_INDEX_NAME }}" >> .env
106107
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env
107108
echo "GITHUB_TOKEN=${{ secrets.TOKEN }}" >> .env
108109
echo "FINNHUB_API_KEY=${{ secrets.FINNHUB_API_KEY }}" >> .env
@@ -268,7 +269,8 @@ jobs:
268269
echo "TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }}" >> .env
269270
echo "TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }}" >> .env
270271
echo "PINECONE_API_KEY=${{ secrets.PINECONE_API_KEY }}" >> .env
271-
echo "PINECONE_INDEX_NAME=${{ secrets.PINECONE_INDEX_NAME }}" >> .env
272+
echo "PINECONE_SF_INDEX_NAME=${{ secrets.PINECONE_SF_INDEX_NAME }}" >> .env
273+
echo "PINECONE_AWS_INDEX_NAME=${{ secrets.PINECONE_AWS_INDEX_NAME }}" >> .env
272274
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env
273275
echo "GITHUB_TOKEN=${{ secrets.TOKEN }}" >> .env
274276
echo "FINNHUB_API_KEY=${{ secrets.FINNHUB_API_KEY }}" >> .env

README.md

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,14 @@ This Airflow infrastructure serves various personal data engineering projects:
4848
- Vector embeddings with OpenAI for semantic search
4949
- Pinecone vector database for RAG applications
5050

51-
3. **Future Projects** (Examples)
51+
3. **AWS SAA Documentation Scraper** (Knowledge Base)
52+
- Scrapes AWS SAA documentation for SnowPro Core exam prep
53+
- Delta-mode scraping (only new/updated pages)
54+
- Parallel web scraping with rate limiting
55+
- Vector embeddings with OpenAI for semantic search
56+
- Pinecone vector database for RAG applications
57+
58+
4. **Future Projects** (Examples)
5259
- ETL pipelines for personal analytics
5360
- Social media data aggregation
5461
- IoT sensor data processing
@@ -61,6 +68,7 @@ The repository includes production-ready example DAGs:
6168
- **`bitcoin_ohlcv_dataset.py`**: Bitcoin price data collection with historical backfill
6269
- **`technical_indicators_dag.py`**: Technical analysis calculations
6370
- **`snowflake_docs_db_dag.py`**: Documentation scraper with vector embeddings
71+
- **`aws_saa_docs_scraper.py`**: AWS documentation scraper for SAA certification with vector embeddings
6472

6573
These DAGs demonstrate best practices and can be used as templates for your own projects.
6674

@@ -74,6 +82,7 @@ airflow-self-hosted/
7482
│ ├── bitcoin_ohlcv_dataset.py # Bitcoin price data with backfill
7583
│ ├── technical_indicators_dag.py # Technical analysis calculations
7684
│ ├── snowflake_docs_db_dag.py # Documentation scraper + RAG
85+
│ └── aws_saa_docs_scraper.py # AWS SAA documentation scraper + RAG
7786
│ └── your_custom_dag.py # Add your own DAGs here
7887
├── config/
7988
│ └── airflow.cfg # Airflow configuration
@@ -152,14 +161,16 @@ SNOWFLAKE_DATABASE=your_database
152161
SNOWFLAKE_SCHEMA=your_schema
153162
SNOWFLAKE_ROLE=your_role
154163
155-
# Optional: Telegram Notifications
164+
# Telegram Notifications
156165
TELEGRAM_BOT_TOKEN=your_bot_token
157166
TELEGRAM_CHAT_ID=your_chat_id
158167
159-
# Optional: OpenAI & Pinecone (for documentation scraper)
168+
# OpenAI & Pinecone (for documentation scraper)
160169
OPENAI_API_KEY=your_openai_api_key
161170
PINECONE_API_KEY=your_pinecone_api_key
162-
PINECONE_INDEX_NAME=snowflake-docs
171+
PINECONE_SF_INDEX_NAME=your_pinecone_sf_index_name
172+
PINECONE_AWS_INDEX_NAME=your_pinecone_aws_index_name
173+
163174
```
164175

165176
### 3. Start Airflow Locally
@@ -759,16 +770,6 @@ This project is licensed under the MIT License - feel free to use it for your pe
759770

760771
---
761772

762-
## ✉️ Support
763-
764-
For issues and questions:
765-
- Open an issue on GitHub
766-
- Check troubleshooting section above
767-
- Review Airflow documentation
768-
- Join Airflow Slack community
769-
770-
---
771-
772773
## 🎉 Acknowledgments
773774

774775
- Apache Airflow community for excellent orchestration platform
@@ -783,5 +784,5 @@ For issues and questions:
783784
**Primary Use**: Personal data pipeline orchestration
784785
**Example Projects**: Trading agent, web scraping, IoT, analytics
785786
**Status**: Production Ready ✅
786-
**Last Updated**: January 5, 2026
787-
**Version**: 1.0.0
787+
**Last Updated**: February 2, 2026
788+
**Version**: 1.1.0

0 commit comments

Comments
 (0)