Spaces:
Running
Running
name: pipeline | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
schedule: | |
- cron: "0 13 * * *" | |
# 20 - 7 = 13 | |
jobs: | |
extraction_train_modeling: | |
name: Data Extraction, Training, and Modeling | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set global directory | |
run: git config --global --add safe.directory /github/workspace | |
- uses: actions/checkout@v3 | |
with: | |
lfs: true | |
persist-credentials: false | |
fetch-depth: 1 | |
- name: Read pipeline schedule date | |
id: read_schedule | |
run: | | |
SCHEDULE_DATE=$(cat pipeline_schedule.ctl) | |
echo "schedule_date=${SCHEDULE_DATE}" >> $GITHUB_ENV | |
- name: Get current date | |
id: get_date | |
run: echo "current_date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV | |
- name: Check if dates match | |
id: date_check | |
run: | | |
if [ "$schedule_date" = "$current_date" ]; then | |
echo "match=true" >> $GITHUB_ENV | |
else | |
echo "match=false" >> $GITHUB_ENV | |
fi | |
- name: Scraping Yahoo Finance | |
if: env.match != 'true' | |
run: | | |
mkdir datasets | |
wget https://github.com/belajarqywok/cryptocurrency_prediction/raw/main/postman/symbols.json \ | |
-O postman/symbols.json | |
go run scraper.go | |
- name: Install Libraries | |
if: env.match != 'true' | |
run: pip install -r requirements.txt | |
- name: Modeling and Training | |
if: env.match != 'true' | |
run: | | |
mkdir models | |
mkdir pickles | |
mkdir posttrained | |
python training.py | |
- name: Set Pipeline Schedule | |
if: env.match != 'true' | |
run: echo "$(date +'%Y-%m-%d')" > pipeline_schedule.ctl | |
- name: Zip Posttrained, Models, and Pickles | |
if: env.match != 'true' | |
run: | | |
zip -r models.zip models | |
zip -r pickles.zip pickles | |
zip -r datasets.zip datasets | |
zip -r posttrained.zip posttrained | |
- name: Store Datasets to Google Drive | |
if: env.match != 'true' | |
uses: adityak74/google-drive-upload-git-action@main | |
with: | |
credentials: ${{ secrets.GDRIVE_CRED }} | |
filename: datasets.zip | |
folderId: ${{ secrets.GDRIVE_ID }} | |
name: datasets.zip | |
overwrite: "true" | |
- name: Store Models to Google Drive | |
if: env.match != 'true' | |
uses: adityak74/google-drive-upload-git-action@main | |
with: | |
credentials: ${{ secrets.GDRIVE_CRED }} | |
filename: models.zip | |
folderId: ${{ secrets.GDRIVE_ID }} | |
name: models.zip | |
overwrite: "true" | |
- name: Store Pickles to Google Drive | |
if: env.match != 'true' | |
uses: adityak74/google-drive-upload-git-action@main | |
with: | |
credentials: ${{ secrets.GDRIVE_CRED }} | |
filename: pickles.zip | |
folderId: ${{ secrets.GDRIVE_ID }} | |
name: pickles.zip | |
overwrite: "true" | |
- name: Store Posttrained to Google Drive | |
if: env.match != 'true' | |
uses: adityak74/google-drive-upload-git-action@main | |
with: | |
credentials: ${{ secrets.GDRIVE_CRED }} | |
filename: posttrained.zip | |
folderId: ${{ secrets.GDRIVE_ID }} | |
name: posttrained.zip | |
overwrite: "true" | |
- name: Remove Temporarary Files and Directories | |
if: env.match != 'true' | |
run: | | |
rm models.zip | |
rm pickles.zip | |
rm datasets.zip | |
rm posttrained.zip | |
rm -rf models | |
rm -rf pickles | |
rm -rf datasets | |
rm -rf posttrained | |
- name: Commit changes | |
if: env.match != 'true' | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "belajarqywok" | |
git add -A | |
git commit -m "Data Extraction, Training, and Modeling" | |
- name: Push changes | |
if: env.match != 'true' | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GH_TOKEN }} | |
branch: main | |
model_deployment: | |
name: Model Deployment | |
runs-on: ubuntu-latest | |
needs: extraction_train_modeling | |
environment: Production | |
env: | |
HF_TOKEN: ${{ secrets.HF_TOKEN }} | |
SPACE_NAME: cryptocurrency_prediction | |
HF_USERNAME: qywok | |
steps: | |
- name: Set global directory | |
run: git config --global --add safe.directory /github/workspace | |
- uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
fetch-depth: 1000 | |
- name: Check git status | |
run: git status | |
- name: Configure git | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "qywok" | |
- name: Pull changes from remote | |
run: | | |
git pull https://$HF_USERNAME:[email protected]/spaces/$HF_USERNAME/$SPACE_NAME main || \ | |
(git merge --strategy-option theirs) | |
- name: Add and commit changes | |
run: | | |
git add -A | |
git diff-index --quiet HEAD || git commit -m "Model Deployment" | |
- name: Push to Hugging Face | |
run: | | |
git push https://$HF_USERNAME:[email protected]/spaces/$HF_USERNAME/$SPACE_NAME main --force | |