From 0433b4798282f2a7645738596d2c31bec10ba5aa Mon Sep 17 00:00:00 2001 From: Arvind verma <7758732+techiarvind@users.noreply.github.com> Date: Tue, 27 Jan 2026 18:55:16 +0530 Subject: [PATCH] Refactor CI workflow for deployment integration Updated CI workflow to include deployment step and removed redundant jobs. --- .github/workflows/ci.yml | 192 ++++----------------------------------- 1 file changed, 20 insertions(+), 172 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 754d06ad..873e3f09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,179 +1,27 @@ ---- -name: CI -on: [push] +name: Prod Pipeline + +on: + push: + branches: ["master"] jobs: - rubocop: - name: Rubocop + Deploy: runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@v4 - - name: Install Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.4.2 - - name: Cache gems - uses: actions/cache@v4 - with: - path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gem- - - name: Install gems - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 4 - - name: Run RuboCop - run: bundle exec rubocop - erblint: - name: Erblint - runs-on: ubuntu-latest - timeout-minutes: 10 steps: - - uses: actions/checkout@v4 - - name: Install Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.4.2 - - name: Cache gems - uses: actions/cache@v4 - with: - path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gem- - - name: Install gems - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 4 - - name: Run Erblint - run: bundle exec erb_lint ./app + - name: Checkout code + uses: actions/checkout@v4 - eslint: - name: ESLint - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v1 - with: - node-version: 20.9.0 - - name: Cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v4 - id: yarn-cache - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install dependencies - run: | - yarn install - - name: Run eslint - run: | - ./node_modules/eslint/bin/eslint.js "app/javascript/**/*.js" - brakeman: - name: Brakeman - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@v4 - - name: Install Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.4.2 - - name: Cache gems - uses: actions/cache@v4 - with: - path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gem- - - name: Install gems - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 4 - yarn install - sudo apt-get update - sudo apt-get install libvips - - name: Run Brakeman - run: bundle exec brakeman -q --exit-on-warn - - rspec: - name: RSpec - runs-on: ubuntu-latest - timeout-minutes: 10 - - services: - postgres: - image: postgres:14 - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: docuseal_test - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - - steps: - - uses: actions/checkout@v4 - - name: Install Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.4.2 - - name: Set up Node - uses: actions/setup-node@v1 - with: - node-version: 20.9.0 - - name: Install Chrome - uses: browser-actions/setup-chrome@latest - with: - chrome-version: 125 - - name: Cache node_modules - uses: actions/cache@v4 - with: - path: node_modules - key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }} - - name: Cache gems - uses: actions/cache@v4 - with: - path: vendor/bundle - key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gem- - - name: Install dependencies - env: - RAILS_ENV: test - run: | - gem install bundler - bundle config path vendor/bundle - bundle install --jobs 4 --retry 4 - yarn install - sudo apt-get update - sudo apt-get install -y libvips - wget -O pdfium-linux.tgz "https://github.com/docusealco/pdfium-binaries/releases/latest/download/pdfium-linux-$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/').tgz" - sudo tar -xzf pdfium-linux.tgz --strip-components=1 -C /usr/lib lib/libpdfium.so - rm -f pdfium-linux.tgz - - name: Run - env: - RAILS_ENV: test - NODE_ENV: test - COVERAGE: true - DATABASE_URL: postgres://postgres:postgres@localhost:5432/docuseal_test - run: | - bundle exec rake db:create - bundle exec rake db:migrate - bundle exec rake assets:precompile - bundle exec rspec + - name: Deploy + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + port: ${{ secrets.SERVER_SSH_PORT }} + script: | + cd ${{ secrets.PROD_PATH }} + git stash && git pull + docker compose down + docker compose up -d --build