From 7d963e0f4c73a01ce2dbddfbb6524c28784a382a Mon Sep 17 00:00:00 2001 From: SujithThirumalaisamy Date: Thu, 19 Sep 2024 20:23:00 +0530 Subject: [PATCH] Added CI/CD workflow for staging and prod --- .github/workflows/cd.yml | 43 +++++++++++++++++++++++++++++++++++ .github/workflows/cd_prod.yml | 43 +++++++++++++++++++++++++++++++++++ .github/workflows/lint.yml | 8 +++---- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/cd_prod.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 000000000..220d6d0da --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,43 @@ +name: Continuous Deployment +on: + push: + branches: [ main ] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile.prod + push: true + tags: 100xdevs/cms-staging:${{ github.sha }} + build-args: | + DATABASE_URL=${{ secrets.STAGING_DATABASE }} + + - name: Clone staging-ops repo, update, and push + env: + PAT: ${{ secrets.PAT }} + run: | + git clone https://github.com/code100x/staging-ops.git + cd staging-ops + sed -i 's|image: 100xdevs/cms-staging:.*|image: 100xdevs/cms-staging:${{ github.sha }}|' staging/cms/deployment.yml + git config user.name "GitHub Actions Bot" + git config user.email "actions@github.com" + git add staging/cms/deployment.yml + git commit -m "Update cms image to ${{ github.sha }}" + git push https://${PAT}@github.com/code100x/staging-ops.git main diff --git a/.github/workflows/cd_prod.yml b/.github/workflows/cd_prod.yml new file mode 100644 index 000000000..7d2b2c100 --- /dev/null +++ b/.github/workflows/cd_prod.yml @@ -0,0 +1,43 @@ +name: Continuous Deployment (Prod) +on: + push: + branches: [ production ] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile.prod + push: true + tags: 100xdevs/cms:${{ github.sha }} + build-args: | + DATABASE_URL=${{ secrets.PROD_DATABASE }} + + - name: Clone staging-ops repo, update, and push + env: + PAT: ${{ secrets.PAT }} + run: | + git clone https://github.com/code100x/staging-ops.git + cd staging-ops + sed -i 's|image: 100xdevs/cms:.*|image: 100xdevs/cms:${{ github.sha }}|' prod/cms/deployment.yml + git config user.name "GitHub Actions Bot" + git config user.email "actions@github.com" + git add prod/cms/deployment.yml + git commit -m "Update cms image to ${{ github.sha }}" + git push https://${PAT}@github.com/code100x/staging-ops.git main diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a08092d1a..0c412bee1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,7 +3,7 @@ on: pull_request: branches: - '**' - + jobs: Continuous-Integration: @@ -15,10 +15,10 @@ jobs: uses: actions/checkout@v3 - name: Install Dependencies - run: npm install --legacy-peer-deps + run: pnpm install --legacy-peer-deps - name: Run linting check - run: npm run lint:check + run: pnpm run lint:check - name: Check formatting - run: npm run format:check \ No newline at end of file + run: pnpm run format:check