No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Desarrollo de workflow para testing

19/24
Recursos

Aportes 8

Preguntas 8

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

Estuve realizando el curso apenas ahora. A la fecha actions/checkout@v2 da problemas. Es necesario cambiarlo por actions/checkout@v3

Bueno, luego de un dia de arduo trabajo, logre emular el proceso usando AWS.
Esta dificil contextualizar un orden adecuado de como lo logre, pero lo logre y ya esta.

Iremos como jack el distripador, por partes.

Primero quisiera anexarles mi archivo .yaml, el mismo tiene algunas variantes, ya que yo no use algunas cosas usadas en el curso, el que haya visto mis comentarios en la parte de aportes sabra que es asi, al final mi archivo quedo asi:

name: Testing API
on:
  workflow_dispatch:
  push:
    branches:
      - workflow_testing_api
  pull_request:
    branches:
      - workflow_testing_api
permissions:
  id-token: write # need this for OIDC  
  contents: read
jobs:
  testing-api:
    name: Testing-api in Github Actions
    runs-on: ubuntu-latest
    # These permissions are needed to interact with GitHub's OIDC Token endpoint.
    steps:
      - name: Checkout the repo
        uses: actions/checkout@v3
      - name: Set AWS credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          role-session-name: aws_testing_session
          role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
          aws-region: ${{ secrets.AWS_REGION }}
      - name: Creating and activating pipenv
        run: |
          pip install pipenv
          pipenv install
          pipenv run python
      - name: Installing dependencies
        run: |
          pip install dvc[s3]
          pip install -r requirements_test.txt
      - name: Test API
        run: |
          dvc pull model/model.pkl -r model-tracker
          pytest tests/tests_api.py

Debo hacer ciertas acotaciones, cosas como usar el dependabot en secredos de github, ya no se puede, arroja mil errores, de eeso se pueden enterar aca:
https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/

about-billing-for-github-actions

Les comparto los costos y lo que incluye en plan free de github actions ūüėÉ

Tuve problemas cuando corría el siguiente comando:

docker run -p 8000:8000 model-api:v1

Generaba el error:

./initializer.sh: no such file or directory

Después de mucho buscar encontré la solución al cambiar la siguiente línea en el dockerfile:

ENTRYPOINT ["./initializer.sh"]

Por:

ENTRYPOINT ["/bin/bash", "/app/initializer.sh"]

Llevo 3 dias con este error y no doy con el chiste

Local funcionan los tests pero usando github actions falla ūüė¶

__________________________ ERROR collecting tests.py ___________________________
tests.py:2: in <module>
    from api.main import app
api/main.py:3: in <module>
    from .app.views import get_prediction
api/app/views.py:4: in <module>
    model = get_model()
api/app/utils.py:11: in get_model
    model = joblib.load(BytesIO(model_file.read()))
../../../.local/lib/python3.8/site-packages/joblib/numpy_pickle.py:577: in load
    obj = _unpickle(fobj)
../../../.local/lib/python3.8/site-packages/joblib/numpy_pickle.py:506: in _unpickle
    obj = unpickler.load()
/usr/lib/python3.8/pickle.py:1212: in load
    dispatch[key[0]](self)
/usr/lib/python3.8/pickle.py:1505: in load_obj
    args = self.pop_mark()
/usr/lib/python3.8/pickle.py:1219: in pop_mark
    self.stack = self.metastack.pop()
E   IndexError: pop from empty list
=========================== short test summary info ============================
ERROR tests.py - IndexError: pop from empty list
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 1.30s ===============================
Error: Process completed with exit code 2. 
Para los que hayan usado drive: hay que hacer un service account (en la pagina de dvc explica como hacerlo <https://dvc.org/doc/user-guide/data-management/remote-storage/google-drive#using-service-accounts)> y las credenciales hay que cargarlas en el .yaml con el nombre de `GDRIVE_CREDENTIALS_DATA` , quedando como: `GDRIVE_CREDENTIALS_DATA: ${{ secrets.SERVICE_ACCOUNT_KEY }}` Si por alguna razon no se puede codifcar en base64, se puede volcar directamente el contenido del json de la key en el github secret y se limina el comando de decodificacion del .yaml ( el que figura antes del dvc pull y utiliza el $(python utilities/setter.py))

Para quiénes estén trabajando desde Mac, el comando en la terminal para base64 es:

base64 -i <nombre archivo>

Para AWS al parecer el proceso que realizamos se emula con IAM role, no pude realizarlo ya que no consegui en la web como emularlo y no me atrevi por tener la tarjeta sociada a AWS, si vi que al parecer se le puede dar control acceso del s3 entre otros parametros. Por si alguien lo realiza a corto plazo dejo este checkpoints.