Skip to content

Commit

Permalink
Create CI/CD Pipeline for VS Code Extension Project (#4)
Browse files Browse the repository at this point in the history
* Create build.yml

* added base template for github workflows

* updated workflow

* updated ci

* updated build stage

* yml updated

* updated test stage

* updated to parallel processing

* updated build

* updated config file

* Cache node_modules

* updated bug report image

* updated restore key

* checking cache

* checking cache

* checking without cache

* with cache

* storing in output variable

* code updated

* final code

* removed internal document link

* updated workflow - delete cache

* pipeline fix

* removed gh and used curl in workflow

* pipeline fix

* pipeline fix

* workflow cleanup

---------

Co-authored-by: Nagarjun Sanji <[email protected]>
Co-authored-by: Rajpreet Singh <[email protected]>
  • Loading branch information
3 people authored Jul 1, 2024
1 parent 4cf0260 commit 9b6322c
Show file tree
Hide file tree
Showing 8 changed files with 393 additions and 0 deletions.
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: 🐞 Bug Report
description: Report a bug in the Debricked VS Code Extension
title: "[BUG] "
labels: [bug]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please provide as much detail as possible to help us resolve the issue.
- type: input
id: environment
attributes:
label: Environment
description: Provide details about your development environment (e.g., operating system, VS Code version).
placeholder: "Windows 10, VS Code 1.55.0"
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: "A clear and concise description of what the bug is."
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: "1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error"
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
placeholder: "A clear and concise description of what you expected to happen."
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: A clear and concise description of what actually happened.
placeholder: "A clear and concise description of what actually happened."
validations:
required: true

- type: textarea
id: screenshots
attributes:
label: Screenshots
description: Add any screenshots that might help explain your problem.
placeholder: "If applicable, add screenshots to help explain your problem."
validations:
required: false
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation_improvement.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: 📃 Documentation Improvement
description: Suggest improvements to the documentation for the Debricked VS Code Extension
title: "[DOCS] "
labels: [documentation]
body:
- type: markdown
attributes:
value: |
Thanks for helping us improve our documentation! Please provide as much detail as possible to help us understand your suggestion.
- type: input
id: title
attributes:
label: Title
description: Provide a title for your documentation improvement suggestion.
placeholder: "Title of your documentation improvement suggestion"
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of the documentation improvement.
placeholder: "A clear and concise description of the documentation improvement."
validations:
required: true

- type: textarea
id: location
attributes:
label: Documentation Location
description: Provide the location (file, section, etc.) of the documentation you suggest improving.
placeholder: "Location of the documentation (file, section, etc.)"
validations:
required: true
45 changes: 45 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: 🚀 Feature Request
description: Suggest a new feature for the Debricked VS Code Extension
title: "[FEATURE] "
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a new feature! Please provide as much detail as possible to help us understand your request.
- type: input
id: title
attributes:
label: Feature Title
description: Provide a title for your feature request.
placeholder: "Feature title"
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what you want to happen.
placeholder: "A clear and concise description of what you want to happen."
validations:
required: true

- type: textarea
id: motivation
attributes:
label: Motivation
description: Explain why this feature is important and how it would benefit users.
placeholder: "Why is this feature important? How would it benefit users?"
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives
description: Describe any alternative solutions or features you've considered.
placeholder: "Describe any alternative solutions or features you've considered."
validations:
required: false
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: 🤔 Question or Discussion
description: Ask a question or start a discussion about the Debricked VS Code Extension
title: "[QUESTION] "
labels: [question]
body:
- type: markdown
attributes:
value: |
Thanks for reaching out! Please provide as much detail as possible to help us address your question or discussion topic.
- type: input
id: title
attributes:
label: Title
description: Provide a title for your question or discussion.
placeholder: "Title of your question or discussion"
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of your question or discussion topic.
placeholder: "A clear and concise description of your question or discussion topic."
validations:
required: true
60 changes: 60 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## Prerequisites for merge, code author responsibilities
* [ ] I as the code author have ensured that acceptance criteria is met
* [ ] I as the code author have self-reviewed code and functionality
* [ ] I have added new tests/extended existing ones
* [ ] If this contains frontend changes, a design review has been requested and completed
* [ ] A security review is initialized according to Security Chapter Policy

## Prerequisites for merge, reviewer responsibilities
* [ ] I as the reviewer have ensured that acceptance criteria is met
* [ ] Code has been reviewed
* [ ] Ensured the right tests have been added
* [ ] Manual testing has been performed

## Description of changes
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.

Fixes # (issue)

## Type of change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

## How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.

### Unit Tests
These are tests that validate the functionality of a specific section of code, usually at the function level.

- [ ] Test A: Description of unit test A (e.g., "Test to verify that the input validation function correctly identifies invalid inputs")
- [ ] Test B: Description of unit test B (e.g., "Test to ensure the output formatting function produces the correct format for given inputs")

### Integration Tests
These tests verify the interaction between different pieces of code to ensure they work together as expected.

- [ ] Test C: Description of integration test C (e.g., "Test to check that the integration between the data processing module and the database module works correctly")
- [ ] Test D: Description of integration test D (e.g., "Test to verify that the API endpoint correctly integrates with the authentication module")

### End-to-End Tests
These tests simulate real user scenarios to validate the entire application flow.

- [ ] Test E: Description of end-to-end test E (e.g., "Test to ensure that a user can successfully complete the sign-up process")
- [ ] Test F: Description of end-to-end test F (e.g., "Test to verify that a user can create, update, and delete an item in the application")

### Manual Tests
These are tests that require a human to interact with the application to verify functionality.

- [ ] Test G: Description of manual test G (e.g., "Manually test the new feature to ensure it works as expected in the user interface")
- [ ] Test H: Description of manual test H (e.g., "Manually test the bug fix to ensure the issue is resolved and no new issues are introduced")

## Checklist:
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules
48 changes: 48 additions & 0 deletions .github/release_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Release Notes

## Version {VERSION_NUMBER} - {RELEASE_DATE}

### Summary
{Brief summary of the release, highlighting the key features and improvements.}

---

### New Features
- {Feature 1: Detailed description of the new feature, how it works, and its benefits.}
- {Feature 2: Detailed description of the new feature, how it works, and its benefits.}
- {Feature 3: Detailed description of the new feature, how it works, and its benefits.}

### Bug Fixes
- {Fix 1: Description of the bug that was fixed and how it was resolved.}
- {Fix 2: Description of the bug that was fixed and how it was resolved.}
- {Fix 3: Description of the bug that was fixed and how it was resolved.}

### Improvements
- {Improvement 1: Description of the improvement and its impact.}
- {Improvement 2: Description of the improvement and its impact.}
- {Improvement 3: Description of the improvement and its impact.}

### Documentation
- {Documentation update 1: Details about any updates made to the documentation.}
- {Documentation update 2: Details about any updates made to the documentation.}

### Known Issues
- {Issue 1: Description of any known issues that are not resolved in this release.}
- {Issue 2: Description of any known issues that are not resolved in this release.}

### Contributors
We would like to thank the following contributors for their efforts in this release:
- @{Contributor 1}
- @{Contributor 2}
- @{Contributor 3}

### Download Links
- [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=debricked)
- [GitHub Releases](https://github.com/debricked/VS-Code-extension/releases)

### Upgrade Instructions
{Instructions on how to upgrade to this version, if necessary. Include any breaking changes or important notes.}

---

Thank you for using debricked: VS Code extension. If you encounter any issues or have any feedback, please [open an issue](https://github.com/debricked/VS-Code-extension/issues) or [contact support](mailto:[email protected]).
90 changes: 90 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: CI

on:
push:
branches: ['**']
pull_request:
branches: [main]

jobs:
setup:
runs-on: ubuntu-latest
outputs:
package-lock-hash: ${{ runner.os }}-repo-${{ steps.hash.outputs.hash }}
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install dependencies
run: npm ci
- name: Calculate package-lock.json hash
id: hash
run: echo "hash=$(sha256sum package-lock.json | awk '{ print $1 }')" >> "$GITHUB_OUTPUT"
- name: Cache repository
uses: actions/cache@v4
with:
path: .
key: ${{ runner.os }}-repo-${{ steps.hash.outputs.hash }}

build:
runs-on: ubuntu-latest
needs: setup
steps:
- name: Restore repository cache
uses: actions/cache@v4
with:
path: .
key: ${{ needs.setup.outputs.package-lock-hash }}
fail-on-cache-miss: true
- name: Compile
run: npm run compile

test:
runs-on: ubuntu-latest
needs: setup
steps:
- name: Restore repository cache
uses: actions/cache@v4
with:
path: .
key: ${{ needs.setup.outputs.package-lock-hash }}
fail-on-cache-miss: true
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libasound2 libgbm1 libgtk-3-0 libnss3 xvfb
- name: Run tests
run: xvfb-run -a npm run test
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage
path: coverage/
retention-days: 1

cleanup:
runs-on: ubuntu-latest
needs: [setup, build, test]
if: always()
steps:
- name: Cleanup
run: npm cache clean --force
- name: Delete GitHub Actions cache
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
CACHE_KEY="${{ needs.setup.outputs.package-lock-hash }}"
if [ -n "$CACHE_KEY" ]; then
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token $GH_TOKEN" \
"https://api.github.com/repos/${{ github.repository }}/actions/caches?key=$CACHE_KEY"
echo "Cache deleted successfully"
else
echo "No matching cache found"
fi
Loading

0 comments on commit 9b6322c

Please sign in to comment.