diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index aac5e928..4aabef7b 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -6,38 +6,38 @@ on: jobs: deploy-production: runs-on: ubuntu-latest - + steps: - - name: Checkout code - uses: actions/checkout@v6 + - name: Checkout code + uses: actions/checkout@v6 - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.4.8' - bundler-cache: true + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "4.0.1" + bundler-cache: true - - name: Install Kamal - run: gem install kamal + - name: Install Kamal + run: gem install kamal - - name: Set up SSH key - run: | - mkdir -p ~/.ssh - echo "${{ secrets.PRODUCTION_SSH_PRIVATE_KEY }}" > ~/.ssh/skillrx_web_production.pem - chmod 600 ~/.ssh/skillrx_web_production.pem + - name: Set up SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.PRODUCTION_SSH_PRIVATE_KEY }}" > ~/.ssh/skillrx_web_production.pem + chmod 600 ~/.ssh/skillrx_web_production.pem - - name: Deploy to production with Kamal - env: - KAMAL_REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - KAMAL_REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - DATABASE_URL: ${{ secrets.PRODUCTION_DATABASE_URL }} - SECRET_KEY_BASE: ${{ secrets.PRODUCTION_SECRET_KEY_BASE }} - RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} - AWS_ACCESS_KEY_ID: ${{ secrets.PRODUCTION_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.PRODUCTION_AWS_SECRET_ACCESS_KEY }} - AZURE_STORAGE_ACCOUNT_NAME: ${{ secrets.PRODUCTION_AZURE_STORAGE_ACCOUNT_NAME }} - AZURE_STORAGE_ACCOUNT_KEY: ${{ secrets.PRODUCTION_AZURE_STORAGE_ACCOUNT_KEY }} - SCOUT_KEY: ${{ secrets.PRODUCTION_SCOUT_KEY }} - SCOUT_LOGS_INGEST_KEY: ${{ secrets.PRODUCTION_SCOUT_LOGS_INGEST_KEY }} - run: | - bin/kamal deploy -d production --skip-push \ No newline at end of file + - name: Deploy to production with Kamal + env: + KAMAL_REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + KAMAL_REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} + DATABASE_URL: ${{ secrets.PRODUCTION_DATABASE_URL }} + SECRET_KEY_BASE: ${{ secrets.PRODUCTION_SECRET_KEY_BASE }} + RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.PRODUCTION_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.PRODUCTION_AWS_SECRET_ACCESS_KEY }} + AZURE_STORAGE_ACCOUNT_NAME: ${{ secrets.PRODUCTION_AZURE_STORAGE_ACCOUNT_NAME }} + AZURE_STORAGE_ACCOUNT_KEY: ${{ secrets.PRODUCTION_AZURE_STORAGE_ACCOUNT_KEY }} + SCOUT_KEY: ${{ secrets.PRODUCTION_SCOUT_KEY }} + SCOUT_LOGS_INGEST_KEY: ${{ secrets.PRODUCTION_SCOUT_LOGS_INGEST_KEY }} + run: | + bin/kamal deploy -d production --skip-push diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index 0bedaf18..d96d96c0 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -2,7 +2,7 @@ name: Deploy to Staging on: push: - branches: [ main ] + branches: [main] workflow_dispatch: jobs: @@ -12,38 +12,38 @@ jobs: concurrency: group: deploy-staging cancel-in-progress: false - + steps: - - name: Checkout code - uses: actions/checkout@v6 - - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.4.8' - bundler-cache: true - - - name: Install Kamal - run: gem install kamal - - - name: Set up SSH key - run: | - mkdir -p ~/.ssh - echo "${{ secrets.STAGING_SSH_PRIVATE_KEY }}" > ~/.ssh/skillrx_web_staging.pem - chmod 600 ~/.ssh/skillrx_web_staging.pem - - - name: Deploy to staging with Kamal - env: - KAMAL_REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - KAMAL_REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL }} - SECRET_KEY_BASE: ${{ secrets.STAGING_SECRET_KEY_BASE }} - RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} - AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} - AZURE_STORAGE_ACCOUNT_NAME: ${{ secrets.STAGING_AZURE_STORAGE_ACCOUNT_NAME }} - AZURE_STORAGE_ACCOUNT_KEY: ${{ secrets.STAGING_AZURE_STORAGE_ACCOUNT_KEY }} - SCOUT_KEY: ${{ secrets.STAGING_SCOUT_KEY }} - SCOUT_LOGS_INGEST_KEY: ${{ secrets.STAGING_SCOUT_LOGS_INGEST_KEY }} - run: | - bin/kamal deploy -d staging \ No newline at end of file + - name: Checkout code + uses: actions/checkout@v6 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "4.0.1" + bundler-cache: true + + - name: Install Kamal + run: gem install kamal + + - name: Set up SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.STAGING_SSH_PRIVATE_KEY }}" > ~/.ssh/skillrx_web_staging.pem + chmod 600 ~/.ssh/skillrx_web_staging.pem + + - name: Deploy to staging with Kamal + env: + KAMAL_REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + KAMAL_REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} + DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL }} + SECRET_KEY_BASE: ${{ secrets.STAGING_SECRET_KEY_BASE }} + RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_AWS_SECRET_ACCESS_KEY }} + AZURE_STORAGE_ACCOUNT_NAME: ${{ secrets.STAGING_AZURE_STORAGE_ACCOUNT_NAME }} + AZURE_STORAGE_ACCOUNT_KEY: ${{ secrets.STAGING_AZURE_STORAGE_ACCOUNT_KEY }} + SCOUT_KEY: ${{ secrets.STAGING_SCOUT_KEY }} + SCOUT_LOGS_INGEST_KEY: ${{ secrets.STAGING_SCOUT_LOGS_INGEST_KEY }} + run: | + bin/kamal deploy -d staging diff --git a/.ruby-version b/.ruby-version index a3808a49..90cdbdcb 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-3.4.8 +ruby-4.0.1 diff --git a/.tool-versions b/.tool-versions index b5cf8189..494a1a0b 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -ruby 3.4.8 +ruby 4.0.1 nodejs 24.9.0 diff --git a/Dockerfile b/Dockerfile index 781e9918..e10ebfce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ # For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html # Make sure RUBY_VERSION matches the Ruby version in .ruby-version -ARG RUBY_VERSION=3.4.8 +ARG RUBY_VERSION=4.0.1 FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base # Rails app lives here diff --git a/Dockerfile.dev b/Dockerfile.dev index f8a97be8..e573e47c 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,5 +1,5 @@ # Use Ruby 3.x with Alpine as base image for smaller size -FROM ruby:3.4.8-alpine +FROM ruby:4.0.1-alpine # Set environment variables for Rails ENV RAILS_ENV=development \ @@ -23,7 +23,8 @@ RUN apk add --no-cache \ ca-certificates \ ttf-freefont \ chromium \ - chromium-chromedriver + chromium-chromedriver \ + libffi-dev # Set Chrome environment variables ENV CHROME_BIN=/usr/bin/chromium-browser \ diff --git a/Gemfile b/Gemfile index 08366b9c..0cde951b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -ruby "3.4.8" +ruby "4.0.1" gem "active_storage_validations" gem "acts-as-taggable-on", "~> 13.0" diff --git a/Gemfile.lock b/Gemfile.lock index f6d29544..6e179400 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -176,8 +176,9 @@ GEM logger faraday-net_http (3.4.1) net-http (>= 0.5.0) - faraday-retry (2.3.2) + faraday-retry (2.4.0) faraday (~> 2.0) + ffi (1.17.2) ffi (1.17.2-aarch64-linux-gnu) ffi (1.17.2-aarch64-linux-musl) ffi (1.17.2-arm-linux-gnu) @@ -244,7 +245,7 @@ GEM actionview (>= 7.0.0) activesupport (>= 7.0.0) jmespath (1.6.2) - json (2.18.0) + json (2.18.1) jwt (2.10.2) base64 kamal (2.10.1) @@ -366,7 +367,7 @@ GEM bigdecimal (>= 3.0) pagy (9.4.0) parallel (1.27.0) - parser (3.3.10.0) + parser (3.3.10.1) ast (~> 2.4.1) racc pg (1.6.3) @@ -473,7 +474,7 @@ GEM rspec-mocks (~> 3.13) rspec-support (~> 3.13) rspec-support (3.13.6) - rubocop (1.81.6) + rubocop (1.84.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -481,12 +482,12 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.47.1, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.47.1) + rubocop-ast (1.49.0) parser (>= 3.3.7.2) - prism (~> 1.4) + prism (~> 1.7) rubocop-performance (1.26.1) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) @@ -581,7 +582,7 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (3.2.0) unicode-emoji (~> 4.1) - unicode-emoji (4.1.0) + unicode-emoji (4.2.0) uniform_notifier (1.18.0) uri (1.1.1) useragent (0.16.11) @@ -666,7 +667,7 @@ DEPENDENCIES web-console RUBY VERSION - ruby 3.4.8p72 + ruby 4.0.1 BUNDLED WITH 4.0.3