From a0330c281f04da4426a30675637d54e125ba4e06 Mon Sep 17 00:00:00 2001 From: CristyNel Date: Sun, 6 Oct 2024 18:46:37 +0100 Subject: [PATCH] Update venom tests --- .github/workflows/D-comp.yml | 76 ------------------------ .github/workflows/git_envs.yml | 76 ++++++++++++++++++++++++ .github/workflows/venom-tests.yml | 98 +++++++++++++------------------ api/tests/e2etests.yml | 37 ++++++------ docker-compose.yml | 52 +++++++++++----- 5 files changed, 175 insertions(+), 164 deletions(-) delete mode 100644 .github/workflows/D-comp.yml create mode 100644 .github/workflows/git_envs.yml diff --git a/.github/workflows/D-comp.yml b/.github/workflows/D-comp.yml deleted file mode 100644 index 2053669..0000000 --- a/.github/workflows/D-comp.yml +++ /dev/null @@ -1,76 +0,0 @@ -# * .github/docker-compose.yml ---- -name: CI - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - build: - runs-on: ubuntu-latest - - services: - cv_db-service: - image: mysql:9.0 - env: - MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} - MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }} - MYSQL_USER: ${{ secrets.MYSQL_USER }} - MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - MYSQL_CONTAINER: ${{ secrets.MYSQL_CONTAINER }} - ports: - - 3307:3306 - options: >- - --health-cmd="mysqladmin ping -h localhost" - --health-interval=12s - --health-timeout=8s - --health-retries=5 - --health-start-period=5s - volumes: - - ./sql/schemadump.sql:/docker-entrypoint-initdb.d/dump.sql - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Build and push API service - uses: docker/build-push-action@v2 - with: - context: . - file: Dockerfile.api - push: false - tags: ${{ secrets.API_IMG }}:${{ secrets.API_TAG }} - - - name: Build and push BFF service - uses: docker/build-push-action@v2 - with: - context: . - file: Dockerfile.bff - push: false - tags: ${{ secrets.BFF_IMG }}:${{ secrets.BFF_TAG }} - - - name: Run Docker Compose - run: docker-compose up --build -d - env: - MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} - MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }} - MYSQL_USER: ${{ secrets.MYSQL_USER }} - MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - MYSQL_CONTAINER: ${{ secrets.MYSQL_CONTAINER }} - API_IMG: ${{ secrets.API_IMG }} - API_TAG: ${{ secrets.API_TAG }} - API_CONTAINER: ${{ secrets.API_CONTAINER }} - MYSQL_HOST: ${{ secrets.MYSQL_HOST }} - BFF_IMG: ${{ secrets.BFF_IMG }} - BFF_TAG: ${{ secrets.BFF_TAG }} - BFF_CONTAINER: ${{ secrets.BFF_CONTAINER }} - API_IP: ${{ secrets.API_IP }} - API_PORT: ${{ secrets.API_PORT }} diff --git a/.github/workflows/git_envs.yml b/.github/workflows/git_envs.yml new file mode 100644 index 0000000..8f91216 --- /dev/null +++ b/.github/workflows/git_envs.yml @@ -0,0 +1,76 @@ +# .github/workflows/git_envs.yml +name: Display Variables + +on: + push: + branches: + - main + +jobs: + display-vars: + runs-on: ubuntu-latest + environment: CV_project-staging + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Display Environment Variables + env: + API_CONTAINER: ${{ vars.API_CONTAINER }} + API_HOST: ${{ vars.API_HOST }} + API_IMG: ${{ vars.API_IMG }} + API_IP: ${{ vars.API_IP }} + API_PORT: ${{ vars.API_PORT }} + API_SERVICE: ${{ vars.API_SERVICE }} + API_TAG: ${{ vars.API_TAG }} + API_URL: ${{ vars.API_URL }} + BFF_CONTAINER: ${{ vars.BFF_CONTAINER }} + BFF_HOST: ${{ vars.BFF_HOST }} + BFF_IMG: ${{ vars.BFF_IMG }} + BFF_IP: ${{ vars.BFF_IP }} + BFF_PORT: ${{ vars.BFF_PORT }} + BFF_SERVICE: ${{ vars.BFF_SERVICE }} + BFF_TAG: ${{ vars.BFF_TAG }} + CV_NETWORK: ${{ vars.CV_NETWORK }} + MYSQL_ADDR: ${{ vars.MYSQL_ADDR }} + MYSQL_CONTAINER: ${{ vars.MYSQL_CONTAINER }} + MYSQL_DATABASE: ${{ vars.MYSQL_DATABASE }} + MYSQL_HOST: ${{ vars.MYSQL_HOST }} + MYSQL_IMG: ${{ vars.MYSQL_IMG }} + MYSQL_IP: ${{ vars.MYSQL_IP }} + MYSQL_LOCAL_IP: ${{ vars.MYSQL_LOCAL_IP }} + run: | + echo -e '\033[94;1m * * * 🛠️ Displaying Environment Variables' + echo "API_CONTAINER=${API_CONTAINER}" + echo "API_HOST=${API_HOST}" + echo "API_IMG=${API_IMG}" + echo "API_IP=${API_IP}" + echo "API_PORT=${API_PORT}" + echo "API_SERVICE=${API_SERVICE}" + echo "API_TAG=${API_TAG}" + echo "API_URL=${API_URL}" + echo "BFF_CONTAINER=${BFF_CONTAINER}" + echo "BFF_HOST=${BFF_HOST}" + echo "BFF_IMG=${BFF_IMG}" + echo "BFF_IP=${BFF_IP}" + echo "BFF_PORT=${BFF_PORT}" + echo "BFF_SERVICE=${BFF_SERVICE}" + echo "BFF_TAG=${BFF_TAG}" + echo "CV_NETWORK=${CV_NETWORK}" + echo "MYSQL_ADDR=${MYSQL_ADDR}" + echo "MYSQL_CONTAINER=${MYSQL_CONTAINER}" + echo "MYSQL_DATABASE=${MYSQL_DATABASE}" + echo "MYSQL_HOST=${MYSQL_HOST}" + echo "MYSQL_IMG=${MYSQL_IMG}" + echo "MYSQL_IP=${MYSQL_IP}" + echo "MYSQL_LOCAL_IP=${MYSQL_LOCAL_IP}" + + - name: Display Secrets + env: + MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} + MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} + run: | + echo -e '\033[94;1m * * * 🛠️ Displaying Secrets' + echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" + echo "MYSQL_PASSWORD=${MYSQL_PASSWORD}" diff --git a/.github/workflows/venom-tests.yml b/.github/workflows/venom-tests.yml index b195c46..05f18e2 100644 --- a/.github/workflows/venom-tests.yml +++ b/.github/workflows/venom-tests.yml @@ -15,63 +15,49 @@ on: jobs: venom-tests: runs-on: ubuntu-latest - + environment: CV_project-staging steps: - - name: checkout code - uses: actions/checkout@v4 - - - name: set up go - uses: actions/setup-go@v5 - with: - go-version: 1.23.1 - - # - name: Verify go installation - # run: | - # echo -e '\033[94;1m * * * 🔗 pwd = '$(pwd) '\n\033[94;1m * * * 🐹 Go version' - # go version - - # - name: Install dependencies - # working-directory: ./api - # run: | - # echo -e '\033[94;1m * * * 🔗 pwd = '$(pwd) '\n\033[94;1m * * * 🧰 Install dependencies' - # go mod tidy + - name: Checkout + uses: actions/checkout@main - # - name: Install docker compose - # run: | - # echo -e '\033[94;1m * * * 🐳 Installing docker compose' - # sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose - # sudo chmod +x /usr/local/bin/docker-compose - - # - name: Set up Docker Compose - # run: | - # echo -e '\033[94;1m * * * 🛠️ Set up Docker' - # docker-compose -f ./docker-compose.yml up -d - # env: - # MYSQL_CONTAINER: ${{ secrets.MYSQL_CONTAINER }} - # MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} - # MYSQL_DATABASE: ${{ secrets.MYSQL_DATABASE }} - # MYSQL_USER: ${{ secrets.MYSQL_USER }} - # MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - # API_IMG: ${{ secrets.API_IMG }} - # API_TAG: ${{ secrets.API_TAG }} - # API_CONTAINER: ${{ secrets.API_CONTAINER }} - # BFF_IMG: ${{ secrets.BFF_IMG }} - # BFF_TAG: ${{ secrets.BFF_TAG }} - # BFF_CONTAINER: ${{ secrets.BFF_CONTAINER }} - - - name: Install venom + - name: Install docker compose run: | - echo -e '\033[94;1m * * * 🐍 Installing venom' - curl https://github.com/ovh/venom/releases/download/v1.0.1/venom.linux-amd64 -L -o /usr/local/bin/venom - chmod +x /usr/local/bin/venom - - - name: Run e2e tests - working-directory: ./api/tests + echo -e '\033[94;1m * * * 🐳 Installing docker compose' + sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + - name: Set up Docker Compose + env: + MYSQL_ROOT_PASSWORD: ${{ secrets.MYSQL_ROOT_PASSWORD }} + MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} + MYSQL_ROOT_USER: ${{ secrets.MYSQL_ROOT_USER }} + MYSQL_USER: ${{ secrets.MYSQL_PASSWORD }} + API_CONTAINER: ${{ vars.API_CONTAINER }} + API_HOST: ${{ vars.API_HOST }} + API_IMG: ${{ vars.API_IMG }} + API_IP: ${{ vars.API_IP }} + API_PORT: ${{ vars.API_PORT }} + API_SERVICE: ${{ vars.API_SERVICE }} + API_TAG: ${{ vars.API_TAG }} + API_URL: ${{ vars.API_URL }} + BFF_CONTAINER: ${{ vars.BFF_CONTAINER }} + BFF_HOST: ${{ vars.BFF_HOST }} + BFF_IMG: ${{ vars.BFF_IMG }} + BFF_IP: ${{ vars.BFF_IP }} + BFF_PORT: ${{ vars.BFF_PORT }} + BFF_SERVICE: ${{ vars.BFF_SERVICE }} + BFF_TAG: ${{ vars.BFF_TAG }} + CV_NETWORK: ${{ vars.CV_NETWORK }} + MYSQL_ADDR: ${{ vars.MYSQL_ADDR }} + MYSQL_CONTAINER: ${{ vars.MYSQL_CONTAINER }} + MYSQL_DATABASE: ${{ vars.MYSQL_DATABASE }} + MYSQL_HOST: ${{ vars.MYSQL_HOST }} + MYSQL_IMG: ${{ vars.MYSQL_IMG }} + MYSQL_IP: ${{ vars.MYSQL_IP }} + MYSQL_LOCAL_IP: ${{ vars.MYSQL_LOCAL_IP }} run: | - echo -e '\033[94;1m * * * 🔗 pwd = '$(pwd) '\n\033[94;1m * * * ⭐ Run e2e tests' - venom run e2etests.yml - - # - name: Stop docker compose - # run: | - # echo -e '\033[94;1m * * * ❌ Stop docker compose' - # docker-compose -f ./docker-compose.yml down --volumes + echo -e '\033[94;1m * * * 🛠️ Set up Docker''\033[94;1m * * * 🔗 pwd = '$(pwd) '\n\033[94;1m * * * ⭐ Run e2e tests' + echo 0 > venom-status.txt + docker-compose -f ./docker-compose.yml --profile=test up --build --exit-code-from cv_venom-service || echo $$ > venom-status.txt + exit `cat venom-status.txt` + working-directory: . diff --git a/api/tests/e2etests.yml b/api/tests/e2etests.yml index a5e76e3..1bdb584 100644 --- a/api/tests/e2etests.yml +++ b/api/tests/e2etests.yml @@ -3,26 +3,26 @@ name: API E2E Tests vars: sql_ip: "" - api_ip: "" + api_ip: "cv_api-service" testcases: - - name: Fetch DB Container IP - steps: - - type: exec - script: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cv_db-container - assertions: - - result.code ShouldEqual 0 - extract: - sql_ip: result.systemout + # - name: Fetch DB Container IP + # steps: + # - type: exec + # script: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cv_db-container + # assertions: + # - result.code ShouldEqual 0 + # extract: + # sql_ip: result.systemout - - name: Fetch API Container IP - steps: - - type: exec - script: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cv_api-container - assertions: - - result.code ShouldEqual 0 - extract: - api_ip: result.systemout + # - name: Fetch API Container IP + # steps: + # - type: exec + # script: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cv_api-container + # assertions: + # - result.code ShouldEqual 0 + # extract: + # api_ip: result.systemout - name: DeleteUser steps: @@ -30,7 +30,8 @@ testcases: method: DELETE # url: "http://cv_api-service:8080/user/2" only if manualy solve ip # url: "http://172.26.0.3:8080/user/5" # merge - url: "http://{{.api_ip}}:8080/user/7" # merge + url: "http://{{.api_ip}}:8080/user/8" # merge + # url: "http://{{.api_ip}}:8080/user/7" # merge headers: Content-Type: application/json assertions: diff --git a/docker-compose.yml b/docker-compose.yml index f341eb9..cfece5c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,8 @@ # ./docker-compose.yml services: cv_db-service: - env_file: - - ./.secrets + # env_file: + # - ./.secrets environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} @@ -28,8 +28,8 @@ services: command: mysqld cv_api-service: - env_file: - - ./.secrets + # env_file: + # - ./.secrets environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} @@ -54,8 +54,8 @@ services: restart: always cv_bff-service: - env_file: - - ./.secrets + # env_file: + # - ./.secrets environment: BFF_IMG: ${BFF_IMG} BFF_TAG: ${BFF_TAG} @@ -76,6 +76,38 @@ services: cv_db-service: condition: service_healthy + cv_venom-service: + container_name: cv_venom-container + image: alpine:3.12 #curl -s https://registry.hub.docker.com/v2/repositories/ovhcom/venom/tags | jq -r '.results[] | .name + " - " + (.last_updated | split("T")[0])' | sort -t '-' -k 2 -r + profiles: [ "test" ] + # env_file: + # - ./.secrets + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + MYSQL_HOST: ${MYSQL_HOST} + # api + API_CONTAINER: ${API_CONTAINER} + API_IP: ${API_IP} + API_PORT: ${API_PORT} + # bff + BFF_IMG: ${BFF_IMG} + BFF_TAG: ${BFF_TAG} + BFF_CONTAINER: ${BFF_CONTAINER} + depends_on: + cv_db-service: + condition: service_healthy + entrypoint: [ "sh", "-c", "wget https://github.com/ovh/venom/releases/download/v1.1.0/venom.linux-amd64 -O /usr/local/bin/venom && chmod +x /usr/local/bin/venom && venom run e2etests.yml" ] + volumes: + - ./api/tests:/app + working_dir: /app + networks: + - cv-network + + + networks: cv-network: name: cv-network @@ -88,11 +120,3 @@ networks: # mysql-data: # name: cv_db-volume - # venom: - # build: - # context: tests - # container_name: venom - # profiles: [ "test" ] - # depends_on: - # api: - # condition: service_healthy