From 4f770d1148140d1b0c08f89668af5e509c982fa7 Mon Sep 17 00:00:00 2001 From: Daoud-Hussain Date: Fri, 15 Nov 2024 10:42:54 +0500 Subject: [PATCH] Stagging pipeline --- .github/workflows/integration.yml | 53 --------------------- .github/workflows/stagging-cicd.yml | 72 +++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 53 deletions(-) delete mode 100644 .github/workflows/integration.yml create mode 100644 .github/workflows/stagging-cicd.yml diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml deleted file mode 100644 index a7a4034..0000000 --- a/.github/workflows/integration.yml +++ /dev/null @@ -1,53 +0,0 @@ - -# name: Integration - -# on: -# push: -# branches: [ "main" ] -# pull_request: -# branches: [ "main" ] - -# jobs: -# build: - -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# node-version: [18.x, 20.x, 22.x] - -# steps: -# - uses: actions/checkout@v4 -# - name: Use Node.js ${{ matrix.node-version }} -# uses: actions/setup-node@v3 -# with: -# node-version: ${{ matrix.node-version }} -# cache: 'npm' - -# - name: "Installing Dependencies" -# run: npm i - -# - name: "Build command" -# run: npm run build - -# unit-tests: - -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# node-version: [18.x, 20.x, 22.x] - -# steps: -# - uses: actions/checkout@v4 -# - name: Use Node.js ${{ matrix.node-version }} -# uses: actions/setup-node@v3 -# with: -# node-version: ${{ matrix.node-version }} -# cache: 'npm' - -# - name: "Installing Dependencies" -# run: npm i - -# - name: "Running test cases" -# run: npm run test \ No newline at end of file diff --git a/.github/workflows/stagging-cicd.yml b/.github/workflows/stagging-cicd.yml new file mode 100644 index 0000000..b29946e --- /dev/null +++ b/.github/workflows/stagging-cicd.yml @@ -0,0 +1,72 @@ +name: Staging CI/CD Pipeline + +on: + push: + branches: + - staging + pull_request: + branches: + - dev + +env: + IMAGE_NAME: daoudhussaindev/next-js-app + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v4 + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Build Next.js application + run: npm run build + + test: + runs-on: ubuntu-latest + needs: build + strategy: + matrix: + node-version: [18.x] + + steps: + - uses: actions/checkout@v4 + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run tests + run: npm run test + + deploy: + runs-on: ubuntu-latest + needs: [test] + if: github.ref == 'refs/heads/staging' + + steps: + - uses: actions/checkout@v4 + - name: Build Docker image for staging + run: docker build -t ${{ env.IMAGE_NAME }}:staging . + - name: Login to Docker Hub + run: echo "${{ secrets.DOCKER_PASSWORD_DEV }}" | docker login -u "${{ secrets.DOCKER_USERNAME_DEV }}" --password-stdin + - name: Push Docker image to Docker Hub (staging) + run: docker push ${{ env.IMAGE_NAME }}:staging + # - name: Deploy to Staging Server + # run: | + # ssh -o StrictHostKeyChecking=no ${{ secrets.STAGING_SERVER_USER }}@${{ secrets.STAGING_SERVER_IP }} << 'EOF' + # docker pull ${{ env.IMAGE_NAME }}:staging + # docker stop staging-container || true + # docker rm staging-container || true + # docker run -d --name staging-container -p 3001:3000 ${{ env.IMAGE_NAME }}:staging + # EOF