Merge pull request #34 from likesistemas/feature/docker-v2 #88
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PHP | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
pull_request: | |
jobs: | |
test: | |
strategy: | |
matrix: | |
PHP: [74, 80, 81, 82, 83] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare code | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
touch .env | |
echo "PHP_VERSION=${PHP_VERSION}" | |
echo "VERSAO=${PHP_VERSION}-dev" >> .env | |
echo "PASTA_WWW=www${PHP_VERSION}" >> .env | |
ln -s www80 www81 | |
ln -s www80 www82 | |
ln -s www80 www83 | |
- name: Up environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
up --build -d | |
- name: Wait environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
echo $(docker run --rm -t --network lemp jwilder/dockerize \ | |
-wait http://core_nginx/ \ | |
-timeout 60s) | |
- name: Logs environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker ps -a | |
docker logs app | |
- name: Add Config PHP Version | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
exec app add-new-config php version ${PHP_VERSION} | |
- name: Test -> Http request | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
CONTENT=$(curl -s "http://127.0.0.1/"); | |
echo "CHAMADA HTTP: ${CONTENT}"; | |
if [ "${CONTENT}" != "core|${PHP_VERSION}" ]; then | |
echo "Chamada HTTP retornou errado: ${CONTENT}" | |
exit 1; | |
fi | |
- name: Test -> App request | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
APP_CONTENT=$(docker exec app app echo); | |
echo "CHAMADA APP: ${APP_CONTENT}"; | |
if [ "${APP_CONTENT}" != "core|${PHP_VERSION}" ]; then | |
echo "Chamada APP retornou errado: ${APP_CONTENT}" | |
exit 1; | |
fi | |
- name: Down environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
down -v | |
- name: Test -> App tests | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
APP_RUN=$( | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
run -w /var/www/ --entrypoint entrypoint-app app echo | |
) | |
echo "CHAMADA APP: ${APP_RUN}"; | |
if [[ ! "${APP_RUN}" =~ "core|${PHP_VERSION}" ]]; then | |
echo "Chamada APP retornou errado: ${APP_RUN}" | |
exit 1; | |
fi | |
- name: Test -> App tests config disabled | |
if: matrix.PHP == '80' | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
-f docker-compose-config-disabled.yml \ | |
up --build -d | |
echo $(docker run --rm -t --network lemp jwilder/dockerize \ | |
-wait http://core_nginx/ \ | |
-timeout 60s) | |
docker ps -a | |
docker logs app | |
CONTENT=$(curl -s "http://127.0.0.1/"); | |
echo "CHAMADA HTTP: ${CONTENT}"; | |
if [ "${CONTENT}" != "core|${PHP_VERSION}|empty" ]; then | |
echo "Chamada HTTP retornou errado: ${CONTENT}" | |
exit 1; | |
fi | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
-f docker-compose-config-disabled.yml \ | |
down -v | |
- name: Production -> Up environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
-f docker-compose.prod.yml \ | |
up --build -d | |
- name: Production -> Wait environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
echo $(docker run --rm -t --network lemp jwilder/dockerize \ | |
-wait http://core_nginx/ \ | |
-timeout 60s) | |
- name: Production -> Wait environment | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker ps -a | |
docker logs app | |
- name: Add Config PHP Version | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
docker compose -f docker-compose.yml \ | |
-f docker-compose-${PHP_VERSION}.yml \ | |
exec app add-new-config php version ${PHP_VERSION} | |
- name: Test -> Http test | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
CONTENT=$(curl -s "http://127.0.0.1/"); | |
echo "CHAMADA HTTP: ${CONTENT}"; | |
if [ "${CONTENT}" != "core|${PHP_VERSION}" ]; then | |
echo "Chamada HTTP retornou errado: ${CONTENT}" | |
exit 1; | |
fi | |
- name: Test -> App test | |
env: | |
PHP_VERSION: ${{ matrix.PHP }} | |
run: | | |
APP_CONTENT=$(docker exec app app echo); | |
echo "CHAMADA APP: ${APP_CONTENT}"; | |
if [ "${APP_CONTENT}" != "core|${PHP_VERSION}" ]; then | |
echo "Chamada APP retornou errado: ${APP_CONTENT}" | |
exit 1; | |
fi | |
push: | |
needs: test | |
strategy: | |
matrix: | |
PHP: [74, 80, 81, 82, 83] | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
# - name: Login to GitHub Container Registry | |
# uses: docker/login-action@v1 | |
# with: | |
# registry: ghcr.io | |
# username: ${{ github.repository_owner }} | |
# password: ${{ secrets.CR_PAT }} | |
- name: Build and push | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
build-args: | | |
VERSAO_PHP=likesistemas/php:${{ matrix.PHP }} | |
push: true | |
tags: | | |
likesistemas/sistema-core:${{ matrix.PHP }} | |
# ghcr.io/likesistemas/sistema-core:${{ matrix.PHP }} |