From 4a156692d865ea027ed8b1c45a691d0932f049fb Mon Sep 17 00:00:00 2001 From: Leon Date: Thu, 12 Mar 2026 14:24:17 +0100 Subject: [PATCH] pipeline --- .gitea/workflows/deploy.yml | 33 +++++---- .gitlab-ci.yml | 135 ------------------------------------ 2 files changed, 16 insertions(+), 152 deletions(-) delete mode 100644 .gitlab-ci.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 35bada6..1e7212a 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -10,26 +10,25 @@ jobs: test: name: "Tests Unitaires" runs-on: ubuntu-latest - container: - image: laravelsail/php84-composer:latest - env: - APP_ENV: testing - APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - DB_CONNECTION: sqlite - DB_DATABASE: ":memory:" + # On ne met pas le container ici au sommet ! steps: - name: Checkout code - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - apt-get update && apt-get install -y libicu-dev - docker-php-ext-configure intl && docker-php-ext-install intl - composer install --no-interaction --prefer-dist - - - name: Run Tests - run: php artisan test + uses: actions/checkout@v4 # Ici, ça tournera sur l'hôte qui a Node + - name: Run Tests in PHP container + # On utilise "uses: docker://..." ou on définit le container pour cette étape + uses: docker://laravelsail/php84-composer:latest + env: + APP_ENV: testing + APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + DB_CONNECTION: sqlite + DB_DATABASE: ":memory:" + with: + args: | + bash -c "apt-get update && apt-get install -y libicu-dev && \ + docker-php-ext-configure intl && docker-php-ext-install intl && \ + composer install --no-interaction --prefer-dist && \ + php artisan test" build: name: "Build & Push Docker" needs: test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index df62293..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,135 +0,0 @@ -stages: - - test - - build - - deploy - -test: - stage: test - image: laravelsail/php84-composer - - variables: - APP_ENV: testing - APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - DB_CONNECTION: sqlite - DB_DATABASE: ":memory:" - - before_script: - - apt-get update && apt-get install -y libicu-dev - - docker-php-ext-configure intl && docker-php-ext-install intl - - composer install --no-interaction --prefer-dist - - script: - - php artisan test - - rules: - - when: always - -docker-build-push: - stage: build - image: docker:24 - services: - - docker:24-dind - - variables: - DOCKER_TLS_CERTDIR: "/certs" - IMAGE_TAG: "$CI_REGISTRY_IMAGE:${CI_COMMIT_SHORT_SHA}" - IMAGE_LATEST: "$CI_REGISTRY_IMAGE:latest" - - before_script: - - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - - script: - - docker build -t "$IMAGE_TAG" -t "$IMAGE_LATEST" . - - docker push "$IMAGE_TAG" - - docker push "$IMAGE_LATEST" - - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - -deploy-to-portainer: - stage: deploy - image: alpine:latest - needs: - - docker-build-push - - before_script: - - apk add --no-cache curl jq gettext - - script: - - envsubst < docker-compose.prod.yml > docker-compose.rendered.yml - - - | - set -eu - - PORTAINER_BASE_URL="${PORTAINER_URL%/}" - - for required_var in PORTAINER_URL PORTAINER_API_KEY PORTAINER_ENDPOINT_ID PORTAINER_STACK_NAME; do - eval "required_value=\${$required_var:-}" - if [ -z "$required_value" ]; then - echo "Missing required CI variable: ${required_var}" - exit 1 - fi - done - - STACKS_RESPONSE=$(curl -sS -w "\n%{http_code}" \ - -H "X-API-Key: $PORTAINER_API_KEY" \ - "$PORTAINER_BASE_URL/api/stacks") - STACKS_HTTP_CODE=$(echo "$STACKS_RESPONSE" | tail -n1) - STACKS_JSON=$(echo "$STACKS_RESPONSE" | sed '$d') - - if [ "$STACKS_HTTP_CODE" -ge 400 ]; then - echo "Failed to list stacks on Portainer (HTTP $STACKS_HTTP_CODE)" - echo "$STACKS_JSON" - exit 1 - fi - - echo "$STACKS_JSON" | jq -e . >/dev/null - STACK_ID=$(echo "$STACKS_JSON" | jq ".[] | select(.Name == \"$PORTAINER_STACK_NAME\") | .Id") - STACK_FILE_PATH="docker-compose.rendered.yml" - - if [ -z "$STACK_ID" ]; then - JSON_PAYLOAD=$(jq -n \ - --arg name "$PORTAINER_STACK_NAME" \ - --rawfile content "$STACK_FILE_PATH" \ - '{name: $name, stackFileContent: $content, prune: true, fromAppTemplate: false}') - - CREATE_RESPONSE=$(curl -sS -w "\n%{http_code}" \ - -X POST "$PORTAINER_BASE_URL/api/stacks/create/standalone/string?endpointId=$PORTAINER_ENDPOINT_ID" \ - -H "X-API-Key: $PORTAINER_API_KEY" \ - -H "Content-Type: application/json" \ - --data "$JSON_PAYLOAD") - CREATE_HTTP_CODE=$(echo "$CREATE_RESPONSE" | tail -n1) - CREATE_BODY=$(echo "$CREATE_RESPONSE" | sed '$d') - - if [ "$CREATE_HTTP_CODE" -ge 400 ]; then - echo "Portainer stack creation failed (HTTP $CREATE_HTTP_CODE)" - echo "$CREATE_BODY" - exit 1 - fi - - echo "Stack created successfully." - else - JSON_PAYLOAD=$(jq -n \ - --arg id "$STACK_ID" \ - --rawfile content "$STACK_FILE_PATH" \ - '{id: ($id|tonumber), stackFileContent: $content, prune: false, pullImage: true}') - - UPDATE_RESPONSE=$(curl -sS -w "\n%{http_code}" \ - -X PUT "$PORTAINER_BASE_URL/api/stacks/$STACK_ID?endpointId=$PORTAINER_ENDPOINT_ID&method=string" \ - -H "X-API-Key: $PORTAINER_API_KEY" \ - -H "Content-Type: application/json" \ - --data "$JSON_PAYLOAD") - UPDATE_HTTP_CODE=$(echo "$UPDATE_RESPONSE" | tail -n1) - UPDATE_BODY=$(echo "$UPDATE_RESPONSE" | sed '$d') - - if [ "$UPDATE_HTTP_CODE" -ge 400 ]; then - echo "Portainer stack update failed (HTTP $UPDATE_HTTP_CODE)" - echo "$UPDATE_BODY" - exit 1 - fi - - echo "Stack updated successfully." - fi - - rules: - - if: '$CI_COMMIT_BRANCH == "main"'