diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3eb5343..84304c1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -9,19 +9,50 @@ jobs: - /var/docker-web:/var/docker-web steps: - uses: actions/checkout@v4 - - name: Setup environment + - name: Edit .env run: | - chmod +x .github/scripts/setup-env.sh - .github/scripts/setup-env.sh + set -a && source .env && set +a + + changeEnvVar() { + local var_name="$1" + local new_value="$2" + local env_file=".env" + + if grep -q "^${var_name}=" "$env_file"; then + sed -i "s|${var_name}=.*|${var_name}=${new_value}|" "$env_file" + else + echo "${var_name}=${new_value}" >> "$env_file" + fi + } + + # Variables GitHub + APP_NAME="${GITHUB_REPOSITORY##*/}" + BRANCH_NAME=$GITHUB_REF_NAME + + # Configuration pour les branches non-principales + if [ "$BRANCH_NAME" != "main" ] && [ "$BRANCH_NAME" != "master" ]; then + DOMAIN="$BRANCH_NAME.$DOMAIN" + APP_NAME="$BRANCH_NAME_$APP_NAME" + PORT=$(bash /var/docker-web/src/cli.sh ALLOCATE_PORT) + sed -i "s|${GITHUB_REPOSITORY##*/}|$APP_NAME|g" docker-compose.yml + fi + + changeVar "DOMAIN" $DOMAIN + changeVar "APP_NAME" $APP_NAME + changeVar "PORT" $PORT + changeVar "APP_DIR" "/var/docker-web/apps/$APP_NAME" + + - uses: actions/checkout@v4 - name: Build app run: | - bash /var/docker-web/src/cli.sh down "${REPO_NAME}" + set -a && source .env && set +a + bash /var/docker-web/src/cli.sh down "${APP_NAME}" rm -rf "$APP_DIR" mkdir "$APP_DIR" cp -a $(find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'node_modules') "$APP_DIR/" export COMPOSE_BAKE=false - docker rmi "local/${REPO_NAME}" 2>/dev/null || true - bash /var/docker-web/src/cli.sh build "${REPO_NAME}" + docker rmi "local/${APP_NAME}" 2>/dev/null || true + bash /var/docker-web/src/cli.sh build "${APP_NAME}" deploy: runs-on: ubuntu-22.04 @@ -31,10 +62,7 @@ jobs: - /var/docker-web:/var/docker-web steps: - uses: actions/checkout@v4 - - name: Setup environment for deploy + - name: Deploy run: | - chmod +x .github/scripts/setup-env.sh - .github/scripts/setup-env.sh - - name: Deploy with docker-web - run: | - bash /var/docker-web/src/cli.sh up "${REPO_NAME}" + set -a && source .env && set +a + bash /var/docker-web/src/cli.sh up "${APP_NAME}"