name: LSTM Pipeline on: push: branches: - production tags: - '*' schedule: - cron: "0 11 * * *" # 18 - 7 = 11 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 schedulers/lstm_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 --algorithm=LSTM - name: Set Pipeline Schedule if: env.match != 'true' run: echo "$(date +'%Y-%m-%d')" > schedulers/lstm_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_CRYPTO_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_LSTM_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_LSTM_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_LSTM_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 "belajarqywok@gmail.com" 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 "alfariqyraihan@gmail.com" # git config --local user.name "qywok" # - name: Pull changes from remote # run: | # git pull https://$HF_USERNAME:$HF_TOKEN@huggingface.co/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:$HF_TOKEN@huggingface.co/spaces/$HF_USERNAME/$SPACE_NAME main --force