mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	chore: Update Codespaces (#11621)
- Fix issues with the current Chatwoot development codespaces - Switch from webpacket to vite - Add additional configs to make the development easier with codespaces - toggles v4 feature true as default
This commit is contained in:
		| @@ -4,5 +4,15 @@ FROM ghcr.io/chatwoot/chatwoot_codespace:latest | |||||||
|  |  | ||||||
| # Do the set up required for chatwoot app | # Do the set up required for chatwoot app | ||||||
| WORKDIR /workspace | WORKDIR /workspace | ||||||
|  |  | ||||||
|  | # Copy dependency files first for better caching | ||||||
|  | COPY package.json pnpm-lock.yaml ./ | ||||||
|  | COPY Gemfile Gemfile.lock ./ | ||||||
|  |  | ||||||
|  | # Install dependencies (will be cached if files don't change) | ||||||
|  | RUN pnpm install --frozen-lockfile && \ | ||||||
|  |     gem install bundler && \ | ||||||
|  |     bundle install --jobs=$(nproc) | ||||||
|  |  | ||||||
|  | # Copy source code after dependencies are installed | ||||||
| COPY . /workspace | COPY . /workspace | ||||||
| RUN yarn && gem install bundler && bundle install |  | ||||||
|   | |||||||
| @@ -1,12 +1,16 @@ | |||||||
|  | ARG VARIANT="ubuntu-22.04" | ||||||
| ARG VARIANT |  | ||||||
|  |  | ||||||
| FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT} | FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT} | ||||||
|  |  | ||||||
|  | ENV DEBIAN_FRONTEND=noninteractive | ||||||
|  |  | ||||||
| ARG NODE_VERSION | ARG NODE_VERSION | ||||||
| ARG RUBY_VERSION | ARG RUBY_VERSION | ||||||
| ARG USER_UID | ARG USER_UID | ||||||
| ARG USER_GID | ARG USER_GID | ||||||
|  | ARG PNPM_VERSION="10.2.0" | ||||||
|  | ENV PNPM_VERSION ${PNPM_VERSION} | ||||||
|  | ENV RUBY_CONFIGURE_OPTS=--disable-install-doc | ||||||
|  |  | ||||||
| # Update args in docker-compose.yaml to set the UID/GID of the "vscode" user. | # Update args in docker-compose.yaml to set the UID/GID of the "vscode" user. | ||||||
| RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then \ | RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then \ | ||||||
| @@ -15,61 +19,80 @@ RUN if [ "$USER_GID" != "1000" ] || [ "$USER_UID" != "1000" ]; then \ | |||||||
|         && chmod -R $USER_UID:$USER_GID /home/vscode; \ |         && chmod -R $USER_UID:$USER_GID /home/vscode; \ | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
| RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | RUN NODE_MAJOR=$(echo $NODE_VERSION | cut -d. -f1) \ | ||||||
|  |     && curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - \ | ||||||
|  |     && apt-get update \ | ||||||
|     && apt-get -y install --no-install-recommends \ |     && apt-get -y install --no-install-recommends \ | ||||||
|         build-essential \ |         build-essential \ | ||||||
|         libssl-dev \ |         libssl-dev \ | ||||||
|         zlib1g-dev \ |         zlib1g-dev \ | ||||||
|     gnupg2 \ |         gnupg \ | ||||||
|         tar \ |         tar \ | ||||||
|         tzdata \ |         tzdata \ | ||||||
|         postgresql-client \ |         postgresql-client \ | ||||||
|         libpq-dev \ |         libpq-dev \ | ||||||
|     yarn \ |  | ||||||
|         git \ |         git \ | ||||||
|         imagemagick \ |         imagemagick \ | ||||||
|  |         libyaml-dev \ | ||||||
|  |         curl \ | ||||||
|  |         ca-certificates \ | ||||||
|         tmux \ |         tmux \ | ||||||
|     zsh \ |         nodejs \ | ||||||
|     git-flow \ |     && apt-get clean \ | ||||||
|     npm \ |     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||||||
|     libyaml-dev |  | ||||||
|  |  | ||||||
| # Install rbenv and ruby | # Install rbenv and ruby for root user first | ||||||
| RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv \ | RUN git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv \ | ||||||
|     &&  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \ |     &&  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \ | ||||||
|     &&  echo 'eval "$(rbenv init -)"' >> ~/.bashrc |     &&  echo 'eval "$(rbenv init -)"' >> ~/.bashrc | ||||||
| ENV PATH "/root/.rbenv/bin/:/root/.rbenv/shims/:$PATH" | ENV PATH "/root/.rbenv/bin/:/root/.rbenv/shims/:$PATH" | ||||||
| RUN git clone https://github.com/rbenv/ruby-build.git && \ | RUN git clone --depth 1 https://github.com/rbenv/ruby-build.git && \ | ||||||
|     PREFIX=/usr/local ./ruby-build/install.sh |     PREFIX=/usr/local ./ruby-build/install.sh | ||||||
|  |  | ||||||
| RUN rbenv install $RUBY_VERSION && \ | RUN rbenv install $RUBY_VERSION && \ | ||||||
|     rbenv global $RUBY_VERSION && \ |     rbenv global $RUBY_VERSION && \ | ||||||
|     rbenv versions |     rbenv versions | ||||||
|  |  | ||||||
| # Install overmind | # Set up rbenv for vscode user | ||||||
|  | RUN su - vscode -c "git clone --depth 1 https://github.com/rbenv/rbenv.git ~/.rbenv" \ | ||||||
|  |     && su - vscode -c "echo 'export PATH=\"\$HOME/.rbenv/bin:\$PATH\"' >> ~/.bashrc" \ | ||||||
|  |     && su - vscode -c "echo 'eval \"\$(rbenv init -)\"' >> ~/.bashrc" \ | ||||||
|  |     && su - vscode -c "PATH=\"/home/vscode/.rbenv/bin:\$PATH\" rbenv install $RUBY_VERSION" \ | ||||||
|  |     && su - vscode -c "PATH=\"/home/vscode/.rbenv/bin:\$PATH\" rbenv global $RUBY_VERSION" | ||||||
|  |  | ||||||
|  | # Install overmind and gh in single layer | ||||||
| RUN curl -L https://github.com/DarthSim/overmind/releases/download/v2.1.0/overmind-v2.1.0-linux-amd64.gz > overmind.gz \ | RUN curl -L https://github.com/DarthSim/overmind/releases/download/v2.1.0/overmind-v2.1.0-linux-amd64.gz > overmind.gz \ | ||||||
|   && gunzip overmind.gz \ |   && gunzip overmind.gz \ | ||||||
|   && sudo mv overmind /usr/local/bin \ |   && mv overmind /usr/local/bin \ | ||||||
|   && chmod +x /usr/local/bin/overmind |   && chmod +x /usr/local/bin/overmind \ | ||||||
|  |   && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ | ||||||
|  |   && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ | ||||||
| # Install gh |   && apt-get update \ | ||||||
| RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ |   && apt-get install -y --no-install-recommends gh \ | ||||||
|    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ |   && apt-get clean \ | ||||||
|    && sudo apt update \ |   && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||||||
|    && sudo apt install gh |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # Do the set up required for chatwoot app | # Do the set up required for chatwoot app | ||||||
| WORKDIR /workspace | WORKDIR /workspace | ||||||
| COPY . /workspace | RUN chown vscode:vscode /workspace | ||||||
|  |  | ||||||
| # set up ruby | # set up node js and pnpm in single layer | ||||||
| COPY Gemfile Gemfile.lock ./ | RUN npm install -g pnpm@${PNPM_VERSION} \ | ||||||
| RUN gem install bundler && bundle install |     && npm cache clean --force | ||||||
|  |  | ||||||
| # set up node js | # Switch to vscode user | ||||||
| RUN npm install n -g && \ | USER vscode | ||||||
|     n $NODE_VERSION | ENV PATH="/home/vscode/.rbenv/bin:/home/vscode/.rbenv/shims:$PATH" | ||||||
| RUN npm install --global yarn |  | ||||||
| RUN yarn | # Copy dependency files first for better caching | ||||||
|  | COPY --chown=vscode:vscode Gemfile Gemfile.lock package.json pnpm-lock.yaml ./ | ||||||
|  |  | ||||||
|  | # Install dependencies as vscode user | ||||||
|  | RUN eval "$(rbenv init -)" \ | ||||||
|  |     && gem install bundler -N \ | ||||||
|  |     && bundle install --jobs=$(nproc) \ | ||||||
|  |     && pnpm install --frozen-lockfile | ||||||
|  |  | ||||||
|  | # Copy source code after dependencies are installed | ||||||
|  | COPY --chown=vscode:vscode . /workspace | ||||||
|   | |||||||
| @@ -23,15 +23,15 @@ | |||||||
|   // 5432 postgres |   // 5432 postgres | ||||||
|   // 6379 redis |   // 6379 redis | ||||||
|   // 1025,8025 mailhog |   // 1025,8025 mailhog | ||||||
|   "forwardPorts": [8025, 3000, 3035], |   "forwardPorts": [8025, 3000, 3036], | ||||||
|  |  | ||||||
|   "postCreateCommand": ".devcontainer/scripts/setup.sh && POSTGRES_STATEMENT_TIMEOUT=600s bundle exec rake db:chatwoot_prepare && yarn", |   "postCreateCommand": ".devcontainer/scripts/setup.sh && POSTGRES_STATEMENT_TIMEOUT=600s bundle exec rake db:chatwoot_prepare && pnpm install", | ||||||
|   "portsAttributes": { |   "portsAttributes": { | ||||||
|     "3000": { |     "3000": { | ||||||
|       "label": "Rails Server" |       "label": "Rails Server" | ||||||
|     }, |     }, | ||||||
|     "3035": { |     "3036": { | ||||||
|       "label": "Webpack Dev Server" |       "label": "Vite Dev Server" | ||||||
|     }, |     }, | ||||||
|     "8025": { |     "8025": { | ||||||
|       "label": "Mailhog UI" |       "label": "Mailhog UI" | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								.devcontainer/docker-compose.base.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.devcontainer/docker-compose.base.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | # Docker Compose file for building the base image in GitHub Actions | ||||||
|  | # Usage: docker-compose -f .devcontainer/docker-compose.base.yml build base | ||||||
|  |  | ||||||
|  | version: '3' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   base: | ||||||
|  |     build: | ||||||
|  |       context: .. | ||||||
|  |       dockerfile: .devcontainer/Dockerfile.base | ||||||
|  |       args: | ||||||
|  |         VARIANT: 'ubuntu-22.04' | ||||||
|  |         NODE_VERSION: '23.7.0' | ||||||
|  |         RUBY_VERSION: '3.4.4' | ||||||
|  |         # On Linux, you may need to update USER_UID and USER_GID below if not your local UID is not 1000. | ||||||
|  |         USER_UID: '1000' | ||||||
|  |         USER_GID: '1000' | ||||||
|  |     image: ghcr.io/chatwoot/chatwoot_codespace:latest | ||||||
| @@ -5,19 +5,6 @@ | |||||||
| version: '3' | version: '3' | ||||||
|  |  | ||||||
| services: | services: | ||||||
|   base: |  | ||||||
|     build: |  | ||||||
|       context: .. |  | ||||||
|       dockerfile: .devcontainer/Dockerfile.base |  | ||||||
|       args: |  | ||||||
|         VARIANT: 'ubuntu-22.04' |  | ||||||
|         NODE_VERSION: '23.7.0' |  | ||||||
|         RUBY_VERSION: '3.4.4' |  | ||||||
|         # On Linux, you may need to update USER_UID and USER_GID below if not your local UID is not 1000. |  | ||||||
|         USER_UID: '1000' |  | ||||||
|         USER_GID: '1000' |  | ||||||
|     image: base:latest |  | ||||||
|  |  | ||||||
|   app: |   app: | ||||||
|     build: |     build: | ||||||
|       context: .. |       context: .. | ||||||
|   | |||||||
| @@ -2,12 +2,7 @@ cp .env.example .env | |||||||
| sed -i -e '/REDIS_URL/ s/=.*/=redis:\/\/localhost:6379/' .env | sed -i -e '/REDIS_URL/ s/=.*/=redis:\/\/localhost:6379/' .env | ||||||
| sed -i -e '/POSTGRES_HOST/ s/=.*/=localhost/' .env | sed -i -e '/POSTGRES_HOST/ s/=.*/=localhost/' .env | ||||||
| sed -i -e '/SMTP_ADDRESS/ s/=.*/=localhost/' .env | sed -i -e '/SMTP_ADDRESS/ s/=.*/=localhost/' .env | ||||||
| sed -i -e "/FRONTEND_URL/ s/=.*/=https:\/\/$CODESPACE_NAME-3000.githubpreview.dev/" .env | sed -i -e "/FRONTEND_URL/ s/=.*/=https:\/\/$CODESPACE_NAME-3000.app.github.dev/" .env | ||||||
| sed -i -e "/WEBPACKER_DEV_SERVER_PUBLIC/ s/=.*/=https:\/\/$CODESPACE_NAME-3035.githubpreview.dev/" .env |  | ||||||
| # uncomment the webpacker env variable |  | ||||||
| sed -i -e '/WEBPACKER_DEV_SERVER_PUBLIC/s/^# //' .env |  | ||||||
| # fix the error with webpacker |  | ||||||
| echo 'export NODE_OPTIONS=--openssl-legacy-provider' >> ~/.zshrc |  | ||||||
|  |  | ||||||
| # codespaces make the ports public | # codespaces make the ports public | ||||||
| gh codespace ports visibility 3000:public 3035:public 8025:public -c $CODESPACE_NAME | gh codespace ports visibility 3000:public 3036:public 8025:public -c $CODESPACE_NAME | ||||||
|   | |||||||
| @@ -19,6 +19,5 @@ jobs: | |||||||
|  |  | ||||||
|     - name: Build the Codespace Base Image |     - name: Build the Codespace Base Image | ||||||
|       run: | |       run: | | ||||||
|         docker-compose -f .devcontainer/docker-compose.yml build base |         docker compose -f .devcontainer/docker-compose.base.yml build base | ||||||
|         docker tag base:latest ghcr.io/chatwoot/chatwoot_codespace:latest |  | ||||||
|         docker push ghcr.io/chatwoot/chatwoot_codespace:latest |         docker push ghcr.io/chatwoot/chatwoot_codespace:latest | ||||||
|   | |||||||
| @@ -63,6 +63,15 @@ Rails.application.configure do | |||||||
|   # Disable host check during development |   # Disable host check during development | ||||||
|   config.hosts = nil |   config.hosts = nil | ||||||
|    |    | ||||||
|  |   # GitHub Codespaces configuration | ||||||
|  |   if ENV['CODESPACES'] | ||||||
|  |     # Allow web console access from any IP | ||||||
|  |     config.web_console.whitelisted_ips = %w(0.0.0.0/0 ::/0) | ||||||
|  |     # Allow CSRF from codespace URLs | ||||||
|  |     config.force_ssl = false | ||||||
|  |     config.action_controller.forgery_protection_origin_check = false | ||||||
|  |   end | ||||||
|  |  | ||||||
|   # customize using the environment variables |   # customize using the environment variables | ||||||
|   config.log_level = ENV.fetch('LOG_LEVEL', 'debug').to_sym |   config.log_level = ENV.fetch('LOG_LEVEL', 'debug').to_sym | ||||||
|  |  | ||||||
|   | |||||||
| @@ -146,7 +146,7 @@ | |||||||
|   premium: true |   premium: true | ||||||
| - name: chatwoot_v4 | - name: chatwoot_v4 | ||||||
|   display_name: Chatwoot V4 |   display_name: Chatwoot V4 | ||||||
|   enabled: false |   enabled: true | ||||||
| - name: report_v4 | - name: report_v4 | ||||||
|   display_name: Report V4 |   display_name: Report V4 | ||||||
|   enabled: true |   enabled: true | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sojan Jose
					Sojan Jose