when: - event: push branch: woodpecker steps: - name: code-tests image: python:3.11.7-alpine commands: - cd api - python3 -m venv env - source env/bin/activate - pip install -r requirements.txt pytest - python3 -m pytest --junit-xml=pytest_junit.xml - name: build image: docker:dind privileged: true environment: ACR_USERNAME: marcin00 ACR_PASSWORD: from_secret: acr_password commands: - dockerd-entrypoint.sh & - sleep 10 # czas na uruchomienie usługi Docker - DOCKER_IMAGE=marcin00.azurecr.io/user-microservice:$CI_COMMIT_SHA - echo "===> Building Docker image" - docker build -t $DOCKER_IMAGE . - echo "===> Installing bash" - apk add --no-cache bash - echo "===> Installing goss" - wget https://github.com/aelsabbahy/goss/releases/latest/download/goss-linux-amd64 -O goss - chmod +x goss - echo "===> Starting container for test" - "CONTAINER_ID=$(docker run --rm -d -e SQLALCHEMY_DATABASE_URI=sqlite:///:memory: $DOCKER_IMAGE)" - sleep 3 # czas na uruchomienie - echo "===> Copying goss.yaml to container" - docker cp goss.yaml $CONTAINER_ID:/goss.yaml - echo "===> Running goss tests" - docker exec $CONTAINER_ID ./goss -g /goss.yaml validate --format junit > ../goss_junit.xml - echo "===> Cleaning up test container" - docker stop $CONTAINER_ID - echo "===> Logging in to ACR" - echo "$ACR_PASSWORD" | docker login marcin00.azurecr.io -u $ACR_USERNAME --password-stdin - echo "===> Pushing image to ACR" - docker push $DOCKER_IMAGE