build.yml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. ---
  2. name: build-docker-image
  3. on:
  4. pull_request:
  5. types:
  6. - opened
  7. - synchronize
  8. push:
  9. branches:
  10. - main
  11. jobs:
  12. build:
  13. name: Build Docker Image
  14. runs-on: ubuntu-latest
  15. services:
  16. postgres:
  17. env:
  18. POSTGRES_DB: flexmeasures_test
  19. POSTGRES_PASSWORD: flexmeasures_test
  20. POSTGRES_USER: flexmeasures_test
  21. image: postgres:latest
  22. options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s
  23. --health-retries 5
  24. ports:
  25. - 5432:5432
  26. steps:
  27. - name: Checkout
  28. uses: actions/checkout@v3
  29. - name: Build Docker Image
  30. run: docker build -t flexmeasures:latest -f Dockerfile .
  31. - name: Generate random secret key
  32. run: echo "SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(24))')"
  33. >> .env
  34. - name: Export SQLALCHEMY_DATABASE_URI
  35. run: echo "SQLALCHEMY_DATABASE_URI=postgresql://flexmeasures_test:flexmeasures_test@127.0.0.1:5432/flexmeasures_test"
  36. >> .env
  37. - name: Keep running flexmeasures container in background
  38. run: docker run -t -d --env-file .env --network=host --name fm-container flexmeasures:latest
  39. - name: Execute database upgrade
  40. run: docker exec --env-file .env fm-container flexmeasures
  41. db upgrade
  42. - name: Add toy user
  43. run: docker exec --env-file .env fm-container flexmeasures
  44. add toy-account
  45. - name: Generate prices dummy data
  46. run: .github/workflows/generate-dummy-price.sh
  47. - name: Copy prices dummy data
  48. run: docker cp prices-tomorrow.csv fm-container:/app/prices-tomorrow.csv
  49. - name: Add beliefs
  50. run: docker exec --env-file .env fm-container flexmeasures
  51. add beliefs --sensor 1 --source toy-user prices-tomorrow.csv --timezone Europe/Amsterdam
  52. - name: Export TOMORROW
  53. run: echo "TOMORROW=$(date --date="next day" '+%Y-%m-%d')"
  54. >> $GITHUB_ENV
  55. - name: Add schedule
  56. run: docker exec --env-file .env fm-container flexmeasures
  57. add schedule for-storage --sensor 2 --start ${TOMORROW}T07:00+01:00
  58. --duration PT12H --soc-at-start 50% --roundtrip-efficiency 90%