diff --git a/.github/workflows/clean-cicd.yml b/.github/workflows/clean-cicd.yml new file mode 100644 index 000000000..7e1be00b5 --- /dev/null +++ b/.github/workflows/clean-cicd.yml @@ -0,0 +1,68 @@ + +name: Clean CI/CD Pipeline + +on: + push: + branches: + - clean + paths-ignore: + - .github/workflows/** + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + + - name: Cache pnpm modules + uses: actions/cache@v3 + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Install dependencies + run: pnpm install + + - name: Lint code + run: pnpm lint + + - name: Build email + run: pnpm email:build + + - name: Build project + run: pnpm build + + - name: Run tests + run: pnpm run test:ci + + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Deploy to dev environment + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + ./deploy_dev.sh next \ No newline at end of file diff --git a/.github/workflows/dev-cicd.yml b/.github/workflows/dev-cicd.yml new file mode 100644 index 000000000..bc02c8e0d --- /dev/null +++ b/.github/workflows/dev-cicd.yml @@ -0,0 +1,68 @@ + +name: Development CI/CD Pipeline + +on: + push: + branches: + - dev + paths-ignore: + - .github/workflows/** + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + + - name: Cache pnpm modules + uses: actions/cache@v3 + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Install dependencies + run: pnpm install + + - name: Lint code + run: pnpm lint + + - name: Build email + run: pnpm email:build + + - name: Build project + run: pnpm build + + - name: Run tests + run: pnpm run test:ci + + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Deploy to dev environment + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + ./deploy_dev.sh next diff --git a/.github/workflows/prod-cicd.yml b/.github/workflows/prod-cicd.yml new file mode 100644 index 000000000..43feefc62 --- /dev/null +++ b/.github/workflows/prod-cicd.yml @@ -0,0 +1,67 @@ +name: Production CI/CD Pipeline + +on: + push: + branches: + - main + paths-ignore: + - .github/workflows/** + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + + - name: Cache pnpm modules + uses: actions/cache@v3 + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Install dependencies + run: pnpm install + + - name: Lint code + run: pnpm lint + + - name: Build email + run: pnpm email:build + + - name: Build project + run: pnpm build + + - name: Run tests + run: pnpm run test:ci + + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Deploy to prod environment + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + ./deploy_prod.sh next \ No newline at end of file diff --git a/.github/workflows/staging-cicd.yml b/.github/workflows/staging-cicd.yml new file mode 100644 index 000000000..5745d2ab2 --- /dev/null +++ b/.github/workflows/staging-cicd.yml @@ -0,0 +1,67 @@ +name: Staging CI/CD Pipeline + +on: + push: + branches: + - staging + paths-ignore: + - .github/workflows/** + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" + + - name: Cache pnpm modules + uses: actions/cache@v3 + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm- + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 9 + + - name: Install dependencies + run: pnpm install + + - name: Lint code + run: pnpm lint + + - name: Build email + run: pnpm email:build + + - name: Build project + run: pnpm build + + - name: Run tests + run: pnpm run test:ci + + deploy: + runs-on: ubuntu-latest + needs: build + + steps: + - name: Deploy to staging environment + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWORD }} + script: | + ./deploy_staging.sh next \ No newline at end of file