diff --git a/.github/workflows/pull-docs-admin.sh b/.github/workflows/archive/pull-docs-admin.sh similarity index 100% rename from .github/workflows/pull-docs-admin.sh rename to .github/workflows/archive/pull-docs-admin.sh diff --git a/.github/workflows/pull-docs-api.sh b/.github/workflows/archive/pull-docs-api.sh similarity index 100% rename from .github/workflows/pull-docs-api.sh rename to .github/workflows/archive/pull-docs-api.sh diff --git a/.github/workflows/pull-latest-docs.yml.old b/.github/workflows/archive/pull-latest-docs.yml similarity index 100% rename from .github/workflows/pull-latest-docs.yml.old rename to .github/workflows/archive/pull-latest-docs.yml diff --git a/.github/workflows/pull-talawa-mobile-docs.sh b/.github/workflows/archive/pull-talawa-mobile-docs.sh similarity index 100% rename from .github/workflows/pull-talawa-mobile-docs.sh rename to .github/workflows/archive/pull-talawa-mobile-docs.sh diff --git a/.github/workflows/push-schema-doc.yml b/.github/workflows/archive/push-schema-doc.yml similarity index 100% rename from .github/workflows/push-schema-doc.yml rename to .github/workflows/archive/push-schema-doc.yml diff --git a/.github/workflows/authorized-changes-detection.yml b/.github/workflows/authorized-changes-detection.yml deleted file mode 100644 index 89ad3decb2a..00000000000 --- a/.github/workflows/authorized-changes-detection.yml +++ /dev/null @@ -1,59 +0,0 @@ -############################################################################## -############################################################################## -# -# NOTE! -# -# Please read the README.md file in this directory that defines what should -# be placed in this file -# -############################################################################## -############################################################################## - -name: Checking workflow files -on: - pull_request: - branches: - - '**' - -jobs: - Check-Sensitive-Files: - if: ${{ github.actor != 'dependabot[bot]' && !contains(github.event.pull_request.labels.*.name, 'ignore-sensitive-files-pr') }} - name: Checks if sensitive files have been changed without authorization - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Get Changed Unauthorized files - id: changed-unauth-files - uses: tj-actions/changed-files@v45 - with: - files: | - .github/** - CNAME - static/CNAME - package.json - sidebar*.js - docusaurus.config.js - babel.config.js - CODEOWNERS - LICENSE - ./*md - package-lock.json - tsconfig.json - yarn.lock - static/.nojekyll - tsconfig.json - .gitignore - babel.config.js - - - name: List all changed unauthorized files - if: steps.changed-unauth-files.outputs.any_changed == 'true' || steps.changed-unauth-files.outputs.any_deleted == 'true' - env: - CHANGED_UNAUTH_FILES: ${{ steps.changed-unauth-files.outputs.all_changed_files }} - run: | - for file in ${CHANGED_UNAUTH_FILES}; do - echo "$file is unauthorized to change/delete" - done - echo "To override this, apply the 'ignore-sensitive-files-pr' label" - exit 1 diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml deleted file mode 100644 index ece1eedd25c..00000000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,94 +0,0 @@ -name: Deploy to GitHub Pages - -on: - pull_request: - branches: - - master - - develop - push: - branches: - - master - - develop - -jobs: - test-deploy: - if: github.event_name != 'push' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: yarn - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Test building the website - run: yarn build - -# checks: -# if: github.event_name != 'push' -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v3 -# - uses: actions/setup-node@v3 -# with: -# node-version: "16.x" -# - name: Test Build -# run: | -# if [ -e yarn.lock ]; then -# yarn install --frozen-lockfile -# elif [ -e package-lock.json ]; then -# npm ci -# else -# npm i -# fi -# npm run build - - deploy: - if: github.event_name != 'pull_request' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - cache: yarn - - uses: webfactory/ssh-agent@v0.5.0 - with: - ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }} - - name: Deploy to GitHub Pages - env: - USE_SSH: true - GIT_USER: git - run: | - git config --global user.email "actions@github.com" - git config --global user.name "gh-actions" - yarn install --frozen-lockfile - yarn deploy - -# gh-release: -# if: github.event_name != 'pull_request' -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v3 -# - uses: actions/setup-node@v3 -# with: -# node-version: "16.x" -# - uses: webfactory/ssh-agent@v0.5.0 -# with: -# ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }} -# - name: Release to GitHub Pages -# env: -# USE_SSH: true -# GIT_USER: git -# run: | -# git config --global user.email "actions@github.com" -# git config --global user.name "gh-actions" -# if [ -e yarn.lock ]; then -# yarn install --frozen-lockfile -# elif [ -e package-lock.json ]; then -# npm ci -# else -# npm i -# fi -# npm run deploy diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 00000000000..a9f5e1db4cd --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,128 @@ +############################################################################## +############################################################################## +# +# NOTE! +# +# Please read the README.md file in this directory that defines what should +# be placed in this file +# +############################################################################## +############################################################################## + +name: Checking workflow files +on: + pull_request: + branches: + - '**' + +jobs: + Code-Quality-Checks: + name: Performs linting, formatting, type-checking, checking for different source and target branch + runs-on: ubuntu-latest + steps: + - name: Check if the source and target branches are different + if: ${{ github.event.pull_request.base.ref == github.event.pull_request.head.ref }} + run: | + echo "Source Branch ${{ github.event.pull_request.head.ref }}" + echo "Target Branch ${{ github.event.pull_request.base.ref }}" + echo "Error: Source and Target Branches are the same. Please ensure they are different." + exit 1 + + Check-Sensitive-Files: + if: ${{ github.actor != 'dependabot[bot]' && !contains(github.event.pull_request.labels.*.name, 'ignore-sensitive-files-pr') }} + name: Checks if sensitive files have been changed without authorization + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Get Changed Unauthorized files + id: changed-unauth-files + uses: tj-actions/changed-files@v45 + with: + files: | + .github/** + CNAME + static/CNAME + package.json + sidebar*.js + docusaurus.config.js + babel.config.js + CODEOWNERS + LICENSE + ./*md + package-lock.json + tsconfig.json + yarn.lock + static/.nojekyll + tsconfig.json + .gitignore + babel.config.js + + - name: List all changed unauthorized files + if: steps.changed-unauth-files.outputs.any_changed == 'true' || steps.changed-unauth-files.outputs.any_deleted == 'true' + env: + CHANGED_UNAUTH_FILES: ${{ steps.changed-unauth-files.outputs.all_changed_files }} + run: | + for file in ${CHANGED_UNAUTH_FILES}; do + echo "$file is unauthorized to change/delete" + done + echo "To override this, apply the 'ignore-sensitive-files-pr' label" + exit 1 + + Count-Changed-Files: + if: ${{ github.actor != 'dependabot[bot]' }} + name: Checks if number of files changed is acceptable + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v45 + + - name: Echo number of changed files + env: + CHANGED_FILES_COUNT: ${{ steps.changed-files.outputs.all_changed_files_count }} + run: | + echo "Number of files changed: $CHANGED_FILES_COUNT" + + - name: Check if the number of changed files is less than 100 + if: steps.changed-files.outputs.all_changed_files_count > 100 + env: + CHANGED_FILES_COUNT: ${{ steps.changed-files.outputs.all_changed_files_count }} + run: | + echo "Error: Too many files (greater than 100) changed in the pull request." + echo "Possible issues:" + echo "- Contributor may be merging into an incorrect branch." + echo "- Source branch may be incorrect please use develop as source branch." + exit 1 + + Test-Docusaurus-Deployment: + name: Test Deployment to https://docs.talawa.io + runs-on: ubuntu-latest + needs: [Code-Quality-Checks] + # Run only if the develop branch and not dependabot + if: ${{ github.actor != 'dependabot[bot]' && github.event.pull_request.base.ref == 'develop' }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Test building the website + run: yarn build + + Check-Target-Branch: + if: ${{ github.actor != 'dependabot[bot]' }} + name: Check Target Branch + runs-on: ubuntu-latest + steps: + - name: Check if the target branch is develop + if: github.event.pull_request.base.ref != 'develop' + run: | + echo "Error: Pull request target branch must be 'develop'. Please refer PR_GUIDELINES.md" + exit 1 diff --git a/.github/workflows/push-deploy-website.yml b/.github/workflows/push-deploy-website.yml new file mode 100644 index 00000000000..ad296368434 --- /dev/null +++ b/.github/workflows/push-deploy-website.yml @@ -0,0 +1,39 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - 'develop' + +jobs: + Deploy-Docusaurus: + name: Deploy https://docs.talawa.io website + runs-on: ubuntu-latest + if: ${{ github.actor != 'dependabot[bot]' }} + environment: + # This "name" has to be the repos' branch that contains + # the current active website. There must be an entry for + # the same branch in the PalisadoesFoundation's + # "Code and automation > Environments > github-pages" + # menu. The branch "name" must match the branch in the + # "on.push.branches" section at the top of this file + name: develop + url: https://docs.talawa.io + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + - uses: webfactory/ssh-agent@v0.9.0 + with: + ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }} + - name: Deploy to GitHub Pages + env: + USE_SSH: true + GIT_USER: git + run: | + git config --global user.email "actions@github.com" + git config --global user.name "gh-actions" + yarn install --frozen-lockfile + yarn deploy