name: CI/CD - develop on: push: branches: - develop pull_request: branches: - develop env: IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[A-Z]' '[a-z]')/aimingmed-ai-backend jobs: build: name: Build Docker Image runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v3 with: ref: main - name: Log in to GitHub Packages run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin ghcr.io env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Pull image run: | docker pull ${{ env.IMAGE }}:latest || true - name: Build image run: | docker build \ --cache-from ${{ env.IMAGE }}:latest \ --tag ${{ env.IMAGE }}:latest \ --file ./app/backend/Dockerfile.prod \ "./app/backend" - name: Push image run: | docker push ${{ env.IMAGE }}:latest test: name: Test Docker Image runs-on: ubuntu-latest needs: build steps: - name: Checkout uses: actions/checkout@v3 with: ref: main - name: Log in to GitHub Packages run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin ghcr.io env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Pull image run: | docker pull ${{ env.IMAGE }}:latest || true - name: Build image run: | docker build \ --cache-from ${{ env.IMAGE }}:latest \ --tag ${{ env.IMAGE }}:latest \ --file ./app/backend/Dockerfile.prod \ "./app/backend" - name: Run container run: | docker run \ -d \ --name backend \ -e PORT=8765 \ -e ENVIRONMENT=dev \ -e TESTING=0 \ -p 8004:8765 \ ${{ env.IMAGE }}:latest - name: Pytest run: docker exec backend pipenv run python -m pytest . # - name: Flake8 # run: docker exec backend pipenv run python -m flake8 . # - name: Black # run: docker exec backend pipenv run python -m black . --check # - name: isort # run: docker exec backend pipenv run python -m isort . --check-only