Skip to content

ci: bump actions/checkout from 4.1.4 to 4.1.6 #82

ci: bump actions/checkout from 4.1.4 to 4.1.6

ci: bump actions/checkout from 4.1.4 to 4.1.6 #82

name: Integration Tests
on:
push:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatch
workflow_dispatch:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
permissions:
contents: read # for "git clone"
defaults:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun
run:
# Enable fail-fast behavior using set -eo pipefail
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
shell: bash
jobs:
run-integration-tests:
name: Integration Tests
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
runs-on: ubuntu-20.04
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs
strategy:
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#handling-failures
fail-fast: false
matrix:
# https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#example-adding-configurations
include:
# "docker-service-name" must match "services.$name" from docker-compose.yaml
# "database-service-name" must match "services.$name" from docker-compose.yaml
# "application-port" must match "services.$name.environment:PORT" from docker-compose.yaml
- docker-service-name: 'express-js'
database-service-name: 'mysql'
application-port: 3010
skip_500_error_testing: false
- docker-service-name: 'express-ts'
database-service-name: 'mysql'
application-port: 3020
skip_500_error_testing: false
- docker-service-name: 'chi'
database-service-name: 'mysql'
application-port: 3030
skip_500_error_testing: true
- docker-service-name: 'fastapi'
database-service-name: 'postgres'
application-port: 4040
skip_500_error_testing: false
env:
# Prevent interference between builds by setting the project name to a unique value. Otherwise
# "docker compose down" has been stopping containers (especially database) from other builds.
# https://docs.docker.com/compose/project-name/
# https://docs.docker.com/compose/environment-variables/envvars/#compose_project_name
COMPOSE_PROJECT_NAME: ${{ matrix.docker-service-name }}
steps:
- name: Clone source code
uses: actions/[email protected] # https://github.com/actions/checkout
with:
# Whether to configure the token or SSH key with the local git config. Default: true
persist-credentials: false
- name: Show docker version
run: docker version
- name: Show docker compose version
run: docker compose version
- name: Start containers
working-directory: docker
run: >-
docker compose up \
--build \
--detach \
--wait \
--quiet-pull \
${{ matrix.docker-service-name }}
- name: Show container statuses
if: '!cancelled()'
working-directory: docker
run: docker compose ps
- name: Install Hurl
run: |
VER=4.3.0
DEB=hurl_${VER}_amd64.deb
curl --location --no-progress-meter --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VER/$DEB
sudo dpkg --install $DEB
- name: Show Hurl version
run: hurl --version
- name: Run integration tests
run: >-
hurl \
--error-format long \
--variable SERVER_URL=http://127.0.0.1:${{ matrix.application-port }} \
--variable skip_500_error_testing=${{ matrix.skip_500_error_testing }} \
--test \
tests/crud.hurl \
tests/misc.hurl
- name: Show application logs
if: failure()
working-directory: docker
run: >-
docker compose logs \
--no-log-prefix \
--timestamps \
${{ matrix.docker-service-name }}
- name: Show database logs
if: failure()
working-directory: docker
run: >-
docker compose logs \
--no-log-prefix \
--timestamps \
${{ matrix.database-service-name }}
- name: Stop containers
if: always()
working-directory: docker
run: >-
docker compose down \
--volumes \
--remove-orphans \
--rmi local