name: Deploy App on: [push] jobs: build: runs-on: ubuntu-22.04 container: volumes: - /var/docker-web:/var/docker-web steps: - uses: actions/checkout@v4 - name: Edit .env run: | 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 changeEnvVar "DOMAIN" $DOMAIN changeEnvVar "APP_NAME" $APP_NAME changeEnvVar "PORT" $PORT changeEnvVar "APP_DIR" "/var/docker-web/apps/$APP_NAME" set -a && source .env && set +a cat .env echo $APP_NAME - name: Upload .env file uses: actions/upload-artifact@v3 with: name: env-file path: .env - uses: actions/checkout@v4 - name: Download .env file uses: actions/download-artifact@v3 with: name: env-file path: . - name: Build app run: | set -a && source .env && set +a cat .env echo $APP_NAME # 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/${APP_NAME}" 2>/dev/null || true # bash /var/docker-web/src/cli.sh build "${APP_NAME}" deploy: runs-on: ubuntu-22.04 needs: build container: volumes: - /var/docker-web:/var/docker-web steps: - uses: actions/checkout@v4 - name: Download .env file uses: actions/download-artifact@v3 with: name: env-file path: . - name: Deploy run: | set -a && source .env && set +a # bash /var/docker-web/src/cli.sh up "${APP_NAME}"