Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 44 additions & 52 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
name: CI/CD Pipeline
name: CI Pipeline

on:
push:
branches:
- main
- master
- feature/*
- feature/**
pull_request:
branches:
- main
- master

jobs:
test:
Expand All @@ -32,17 +30,8 @@ jobs:
- name: Run tests
run: npm test --silent

- name: Check whether running under act (set output)
id: check_act_test
run: |
if [ "${IS_ACT}" = "true" ]; then
echo "is_act=true" >> $GITHUB_OUTPUT
else
echo "is_act=false" >> $GITHUB_OUTPUT
fi

- name: Upload coverage report
if: ${{ always() && steps.check_act_test.outputs.is_act != 'true' }}
if: ${{ env.IS_ACT != 'true' }}
uses: actions/upload-artifact@v4
with:
name: jest-coverage
Expand All @@ -67,36 +56,24 @@ jobs:
with:
fetch-depth: 0

- name: Check whether running under act (set output)
id: check_act_release
run: |
if [ "${IS_ACT}" = "true" ]; then
echo "is_act=true" >> $GITHUB_OUTPUT
else
echo "is_act=false" >> $GITHUB_OUTPUT
fi

- name: Setup Node.js
if: ${{ steps.check_act_release.outputs.is_act != 'true' }}
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'

- name: Install dependencies
if: ${{ steps.check_act_release.outputs.is_act != 'true' }}
run: npm ci

- name: Semantic Release
if: ${{ steps.check_act_release.outputs.is_act != 'true' }}
uses: cycjimmy/semantic-release-action@v4
with:
extra_plugins: |
@semantic-release/changelog
@semantic-release/git
@semantic-release/github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_PAT }}

deploy:
name: 📦 Deploy to Render
Expand All @@ -109,28 +86,16 @@ jobs:
with:
fetch-depth: 0

- name: Check whether running under act (set output)
id: check_act_deploy
run: |
if [ "${IS_ACT}" = "true" ]; then
echo "is_act=true" >> $GITHUB_OUTPUT
else
echo "is_act=false" >> $GITHUB_OUTPUT
fi

- name: Setup Node.js
if: ${{ steps.check_act_deploy.outputs.is_act != 'true' }}
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'

- name: Install dependencies
if: ${{ steps.check_act_deploy.outputs.is_act != 'true' }}
run: npm ci

- name: Deploy to Render
if: ${{ steps.check_act_deploy.outputs.is_act != 'true' }}
env:
RENDER_API_KEY: ${{ secrets.RENDER_API_KEY }}
RENDER_SERVICE_ID: ${{ secrets.RENDER_SERVICE_ID }}
Expand All @@ -140,27 +105,54 @@ jobs:
-H "Authorization: Bearer ${RENDER_API_KEY}" \
-d ''

notify:
name: 📢 Telegram Notification
runs-on: ubuntu-latest
needs: [test, release, deploy]
if: always()
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Send Telegram notification
if: ${{ always() && steps.check_act_deploy.outputs.is_act != 'true' }}
run: |
if [ "${IS_ACT}" = "true" ]; then
TEST_RESULT="success"
RELEASE_RESULT="success"
DEPLOY_RESULT="success"
else
TEST_RESULT="${{ needs.test.result }}"
RELEASE_RESULT="${{ needs.release.result }}"
DEPLOY_RESULT="${{ needs.deploy.result }}"
fi

STATUS="✅ *Pipeline completed successfully*"
if [ "$TEST_RESULT" != "success" ]; then
STATUS="❌ *Tests failed*"
elif [ "$RELEASE_RESULT" != "success" ]; then
STATUS="❌ *Release failed*"
elif [ "$DEPLOY_RESULT" != "success" ]; then
STATUS="❌ *Deploy failed*"
fi

VERSION=$(git describe --tags --abbrev=0 2>/dev/null || git rev-parse --short HEAD)
BRANCH=$(git rev-parse --abbrev-ref HEAD)
COMMIT=$(git rev-parse --short HEAD)
REPO_URL="https://github.com/$GITHUB_REPOSITORY"
LAST_AUTHOR=$(git log -1 --pretty=format:'%an')
LAST_COMMIT_MSG=$(git log -1 --pretty=format:'%s')

MESSAGE="✅ Deployment completed successfully on Render!
🕓 $(date)
🏷️ Version/Tag: $VERSION
🌿 Branch: $BRANCH
🔀 Commit: $COMMIT
👤 Last Commit Author: $LAST_AUTHOR
💬 Last Commit Msg: $LAST_COMMIT_MSG
🔗 Repo: $REPO_URL"


MESSAGE="$STATUS
🕓 *Date:* $(date)
🏷️ *Version/Tag:* $VERSION
🌿 *Branch:* $BRANCH
🔀 *Commit:* $COMMIT
👤 *Author:* $LAST_AUTHOR
🔗 *Repo:* $REPO_URL"

curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
-d "chat_id=${{ secrets.TELEGRAM_CHAT_ID }}" \
-d "text=$MESSAGE" \
-d "parse_mode=Markdown"

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
"test:watch": "jest --watch",
"lint": "eslint . --ext .js"
},
"repository": {
"type": "git",
"url": "https://github.com/cs-internship/CS-Queue-Bot.git"
},
"keywords": [
"telegram-bot",
"cs-queue",
Expand Down