From e0ea126302453d13239e8701ca12df6b8cf2794e Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sat, 7 May 2022 17:10:10 +0530 Subject: [PATCH 01/12] added CI Docs + Repo Docs + Test new code Docs + PR Template --- .github/PULL_REQUEST_TEMPLATE.md | 40 +++++++++++++++++++ Contributing/How-To-Continuous-Integration.md | 14 +++++++ Contributing/How-To-Create-a-Repository.md | 20 ++++++++++ Contributing/How-To-Test-New-Code.md | 17 ++++++++ 4 files changed, 91 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 Contributing/How-To-Continuous-Integration.md create mode 100644 Contributing/How-To-Create-a-Repository.md create mode 100644 Contributing/How-To-Test-New-Code.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e598997 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,40 @@ +# Pull Request Template + +## Description + +Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. + +Fixes # (issue) + +## Type of change + +Please delete options that are not relevant. + +- [ ] 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 + +## Additional Context (Please include any Screenshots/gifs if relevant) + +... + +## 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 +- [ ] I have checked my code and corrected any misspellings +- [ ] I have tagged the reviewers in a comment below incase my pull request is ready for a review +- [ ] I have signed the commit message to agree to Developer Certificate of Origin (DCO) (to certify that you wrote or otherwise have the right to submit your contribution to the project.) by adding "--signoff" to my git commit command. + + \ No newline at end of file diff --git a/Contributing/How-To-Continuous-Integration.md b/Contributing/How-To-Continuous-Integration.md new file mode 100644 index 0000000..03a289e --- /dev/null +++ b/Contributing/How-To-Continuous-Integration.md @@ -0,0 +1,14 @@ +# Continuous Integration Tools + +Continuous integration is a DevOps software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run. + +While not yet implemented, Keploy intends to utilise Continuous Integration Tools. Continuous Integration allows multiple developers to work on a software project while integrating their changes and maintaining the stability and quality of the software. + +Continuous Integration fosters innovation by ensuring that ongoing improvements are always available and compatible to a set of users. This would allow a user developing their own countries implementation could progressively add new data and features while maintaining a functioning, reproducible system + +Two Integration Tools have been identified for Continuous Integration with Keploy: + +- Travis CI supports Continuous Integration and testing for Linux. +- AppVeyor supports Continous Integration and testing for Windows. + + diff --git a/Contributing/How-To-Create-a-Repository.md b/Contributing/How-To-Create-a-Repository.md new file mode 100644 index 0000000..82cb589 --- /dev/null +++ b/Contributing/How-To-Create-a-Repository.md @@ -0,0 +1,20 @@ +# Create Repository + +A repository contains all of your project's files and each file's revision history. You can discuss and manage your project's work within the repository. Keploy uses repositories to store files, revision history, carry out discussions, manage the project work and accept contributions from our diverse contributors. To get started with creating a repository, please follow these steps: + +If you are a member of the moja global organization, define a new repository: + +- Use a short version of your title as the repository name: Keploy/repository-name. +- Use the full title as the description of the repository. +- Make the repository public. +- Initialize it with a README file which includes the abstract of the project. +- Create your repository. +- If you are not a member of the Keploy organization, the Keploy team will create the repository for you and invite you as an external member to take charge of the project. Follow these steps: + +Navigate to the About_Keploy repository. +Click Issues. +Click the green button Get Started in the Feature Request box. +Use the title of your project as the title of the requested features. +In the body of the Issue, provide the abstract of your project first. Then follow the template to the extent it is useful and provide as much information as possible. +Attach files, screenshots and/or animated GIFs +Click the green button "Submit New Issue" at the bottom right corner. \ No newline at end of file diff --git a/Contributing/How-To-Test-New-Code.md b/Contributing/How-To-Test-New-Code.md new file mode 100644 index 0000000..1f72d1f --- /dev/null +++ b/Contributing/How-To-Test-New-Code.md @@ -0,0 +1,17 @@ +# Standard tests + +Testing needs to be performed by both developers and maintainers for new or modified code. Developers are expected to perform standard tests before submitting the pull-request, and maintainers also conduct testing when going through the process of assessing a pull-request. + +Tests suites should be included in the repositories of existing code, and test suites should be developed for new repositories where tests do not already exist. The standardised test suites are expected to be completed for all pull-requests. A standardised test suite should include: + +- Unit tests +- Integration tests +- System tests + +Unit tests are used to test individual components of the code for example a function or procedure. These should be performed by both contributors and maintainers. + +Integration tests are used to test the integration of the different units to ensure that the different functions/procedures and modules are interacting correctly. These should also be performed by both contributors and maintainers. + +System tests involve testing the complete integrated system, this includes performance tests and guidelines on speed performance to ensure that any new features or bug fixes do not compromise system performance. + +These tests need to be performed by the maintainer, and the maintainer may also use independent testers if possible. Failure of a system test, or poor performance and may result in non-acceptance, or a request to improve performance before the pull-request if performance is accepted. From f6c3d159d7a54975c20924d1c7f3178f903f7178 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sat, 7 May 2022 23:50:54 +0530 Subject: [PATCH 02/12] fix error --- Contributing/How-To-Create-a-Repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contributing/How-To-Create-a-Repository.md b/Contributing/How-To-Create-a-Repository.md index 82cb589..52f3f3a 100644 --- a/Contributing/How-To-Create-a-Repository.md +++ b/Contributing/How-To-Create-a-Repository.md @@ -2,7 +2,7 @@ A repository contains all of your project's files and each file's revision history. You can discuss and manage your project's work within the repository. Keploy uses repositories to store files, revision history, carry out discussions, manage the project work and accept contributions from our diverse contributors. To get started with creating a repository, please follow these steps: -If you are a member of the moja global organization, define a new repository: +If you are a member of the keploy organization, define a new repository: - Use a short version of your title as the repository name: Keploy/repository-name. - Use the full title as the description of the repository. From c22027eb4accefeadd30d3a521d1ea74485329bd Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sat, 7 May 2022 23:58:58 +0530 Subject: [PATCH 03/12] fix errors --- Contributing/How-To-Create-a-Repository.md | 6 +++--- ...s-Integration.md => How-To-Do-Continuous-Integration.md} | 0 Contributing/How-To-Test-New-Code.md | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) rename Contributing/{How-To-Continuous-Integration.md => How-To-Do-Continuous-Integration.md} (100%) diff --git a/Contributing/How-To-Create-a-Repository.md b/Contributing/How-To-Create-a-Repository.md index 52f3f3a..0c7968b 100644 --- a/Contributing/How-To-Create-a-Repository.md +++ b/Contributing/How-To-Create-a-Repository.md @@ -4,14 +4,14 @@ A repository contains all of your project's files and each file's revision histo If you are a member of the keploy organization, define a new repository: -- Use a short version of your title as the repository name: Keploy/repository-name. +- Use a short version of your title as the repository name: keploy/repository-name. - Use the full title as the description of the repository. - Make the repository public. -- Initialize it with a README file which includes the abstract of the project. +- Instead of initialising it with a README. We can directly select this template repository while creating a new public repo as the base. - Create your repository. - If you are not a member of the Keploy organization, the Keploy team will create the repository for you and invite you as an external member to take charge of the project. Follow these steps: -Navigate to the About_Keploy repository. +Navigate to the template repository. Click Issues. Click the green button Get Started in the Feature Request box. Use the title of your project as the title of the requested features. diff --git a/Contributing/How-To-Continuous-Integration.md b/Contributing/How-To-Do-Continuous-Integration.md similarity index 100% rename from Contributing/How-To-Continuous-Integration.md rename to Contributing/How-To-Do-Continuous-Integration.md diff --git a/Contributing/How-To-Test-New-Code.md b/Contributing/How-To-Test-New-Code.md index 1f72d1f..ec76831 100644 --- a/Contributing/How-To-Test-New-Code.md +++ b/Contributing/How-To-Test-New-Code.md @@ -1,8 +1,6 @@ # Standard tests -Testing needs to be performed by both developers and maintainers for new or modified code. Developers are expected to perform standard tests before submitting the pull-request, and maintainers also conduct testing when going through the process of assessing a pull-request. - -Tests suites should be included in the repositories of existing code, and test suites should be developed for new repositories where tests do not already exist. The standardised test suites are expected to be completed for all pull-requests. A standardised test suite should include: +Since Keploy is a testing platform that tests itself! We don't write Unit, Integration and System tests. We record and replay the test-cases via Keploy. - Unit tests - Integration tests From 980c84f6a4f0ecc64b3a595e451de52a49ca36ab Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sun, 8 May 2022 00:02:07 +0530 Subject: [PATCH 04/12] fix errors --- Contributing/How-To-Do-Continuous-Integration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contributing/How-To-Do-Continuous-Integration.md b/Contributing/How-To-Do-Continuous-Integration.md index 03a289e..b9c8205 100644 --- a/Contributing/How-To-Do-Continuous-Integration.md +++ b/Contributing/How-To-Do-Continuous-Integration.md @@ -8,7 +8,7 @@ Continuous Integration fosters innovation by ensuring that ongoing improvements Two Integration Tools have been identified for Continuous Integration with Keploy: -- Travis CI supports Continuous Integration and testing for Linux. -- AppVeyor supports Continous Integration and testing for Windows. +- We use Github Actions to supports Continuous Integration and testing . + From d254992ae42a80fe338c9e60cf73b607bde87ac5 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sun, 8 May 2022 00:12:54 +0530 Subject: [PATCH 05/12] remove file --- Contributing/How-To-Test-New-Code.md | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 Contributing/How-To-Test-New-Code.md diff --git a/Contributing/How-To-Test-New-Code.md b/Contributing/How-To-Test-New-Code.md deleted file mode 100644 index ec76831..0000000 --- a/Contributing/How-To-Test-New-Code.md +++ /dev/null @@ -1,15 +0,0 @@ -# Standard tests - -Since Keploy is a testing platform that tests itself! We don't write Unit, Integration and System tests. We record and replay the test-cases via Keploy. - -- Unit tests -- Integration tests -- System tests - -Unit tests are used to test individual components of the code for example a function or procedure. These should be performed by both contributors and maintainers. - -Integration tests are used to test the integration of the different units to ensure that the different functions/procedures and modules are interacting correctly. These should also be performed by both contributors and maintainers. - -System tests involve testing the complete integrated system, this includes performance tests and guidelines on speed performance to ensure that any new features or bug fixes do not compromise system performance. - -These tests need to be performed by the maintainer, and the maintainer may also use independent testers if possible. Failure of a system test, or poor performance and may result in non-acceptance, or a request to improve performance before the pull-request if performance is accepted. From 61ff664512d0dd3c41eac120b55ae05dafd3c1c5 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Sun, 8 May 2022 10:43:12 +0530 Subject: [PATCH 06/12] added Contribute Docs + Credit Docs + Join Keploy Docs + Report Bugs Docs + New Project Docs + Developer Workflow Directory + automated gha checks docs + Development Setup Directory + docker installation file + keploy installation file --- Contributing/How-to-Contribute-Code.md | 35 ++++++++++++++++ ...How-to-Get-Credit-for-Your-Contribution.md | 0 Contributing/How-to-Join-keploy.md | 5 +++ Contributing/How-to-Report-Bugs.md | 17 ++++++++ Contributing/How-to-Start-a-New-Project.md | 28 +++++++++++++ docs/DeveloperWorkflow/automated_checks.md | 38 ++++++++++++++++++ docs/DevelopmentSetup/docker_installation.md | 0 .../keploy.example_installation.md | 0 docs/images/all checks.png | Bin 0 -> 19869 bytes docs/images/check fails.png | Bin 0 -> 39166 bytes 10 files changed, 123 insertions(+) create mode 100644 Contributing/How-to-Contribute-Code.md create mode 100644 Contributing/How-to-Get-Credit-for-Your-Contribution.md create mode 100644 Contributing/How-to-Join-keploy.md create mode 100644 Contributing/How-to-Report-Bugs.md create mode 100644 Contributing/How-to-Start-a-New-Project.md create mode 100644 docs/DeveloperWorkflow/automated_checks.md create mode 100644 docs/DevelopmentSetup/docker_installation.md create mode 100644 docs/DevelopmentSetup/keploy.example_installation.md create mode 100644 docs/images/all checks.png create mode 100644 docs/images/check fails.png diff --git a/Contributing/How-to-Contribute-Code.md b/Contributing/How-to-Contribute-Code.md new file mode 100644 index 0000000..53d1e57 --- /dev/null +++ b/Contributing/How-to-Contribute-Code.md @@ -0,0 +1,35 @@ +## Code Contributions + +We would like to thank you for your interest in contributing. You can find below how you can get started with knowing and contributing to keploy. The first few steps are always crucial but signify how you wish to involve with the community. + +1. Get to know keploy: + + - Read the [Contributing guidelines](https://github.com/keploy/template/blob/main/CONTRIBUTING.md) + - Read the [Code of Conduct](../CODE_OF_CONDUCT.md) + - Review the [Coding Guidelines]() and the [Contribution Criteria](../CONTRIBUTING.md). + - Review the bug-list, open issues, Project Board (if you want to code a new feature) or the [Plan](). To start a new Project follow these [guidelines](How-to-Start-a-New-Project.md).) + - Contact the Maintainers, if available in the README document, or the Repository Maintainer by submitting an [Issue]() with an @mention. + +2. [Join the keploy organisation]() + +3. [Fork the repository](https://help.github.com/en/articles/fork-a-repo) if you do not want to join keploy or want to start working before your request to join has been approved. + +4. Make your contribution + + - Make changes or additions to the code. + - Ensure that your code meets the [coding style guidelines](). + - Perform relevant tests, which includes unit-testing or end-to-end testing as found fit for the repository that you will be submitting the pull-request for. + - Follow the [documentation guidelines](). + +5. Submit your contribution + + - [Submit a Pull-Request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to the Branch you want to contribute. + - Use a clear and descriptive title. + - Ensure maintainers can understand your proposed changes from the description. + - Ensure your Pull-Request passes all checks and has no conflicts. + - Click `Create Pull Request`. + - Include in the comments section the tests that you have completed and if they were a pass or fail. + +6. Get credit for your work + + - [Claim credit]() if you are not listed yet. \ No newline at end of file diff --git a/Contributing/How-to-Get-Credit-for-Your-Contribution.md b/Contributing/How-to-Get-Credit-for-Your-Contribution.md new file mode 100644 index 0000000..e69de29 diff --git a/Contributing/How-to-Join-keploy.md b/Contributing/How-to-Join-keploy.md new file mode 100644 index 0000000..eeb43e1 --- /dev/null +++ b/Contributing/How-to-Join-keploy.md @@ -0,0 +1,5 @@ +## Join keploy + +Keploy is increasingly looking for new developers to join us and help improve our processes. We can collaborate on developing new projects, improve existing pipelines or maintaining the existing projects. Please follow these steps to join keploy: + +1. You can simply Join Keploy Slack Workspace from here and introduce yourself in genral channel [Slack Workspace](https://keploy.slack.com). \ No newline at end of file diff --git a/Contributing/How-to-Report-Bugs.md b/Contributing/How-to-Report-Bugs.md new file mode 100644 index 0000000..7272993 --- /dev/null +++ b/Contributing/How-to-Report-Bugs.md @@ -0,0 +1,17 @@ +## Report a bug: + +Keploy is increasingly looking for new developers to join us and help improve our processes. We are also looking for constructive bug triage process is carried out to help us improve our software, workflows and processes. Please have a look at the below steps to get started with reporting a new bug as a user: + +1. Navigate to the main page of the repository where you found the bug. +2. Under the repository name, click **Issues**. +3. Click the green **New Issue** button +4. Click the green button **Get Started** in the Bug Report box. +5. Use a clear and descriptive title. +6. Follow the template and provide as much information as possible +7. Attach files, screenshots and/or animated GIFs +8. Click the green button **Submit New Issue** at the bottom right corner + +We would also like the users to review the following if they are not familiar with GitHub and standard bug-reporting processes: + +- [Opening an issue from code](https://help.github.com/en/articles/opening-an-issue-from-code/) +- [Creating a permanent link to a code snippet](https://help.github.com/en/articles/creating-a-permanent-link-to-a-code-snippet/) \ No newline at end of file diff --git a/Contributing/How-to-Start-a-New-Project.md b/Contributing/How-to-Start-a-New-Project.md new file mode 100644 index 0000000..4e5a0e7 --- /dev/null +++ b/Contributing/How-to-Start-a-New-Project.md @@ -0,0 +1,28 @@ +## Start a new Project + +Keploy is increasingly looking for new developers to join us and help improve our processes. We are also looking to collaborate on the development of new projects that serve our plan and mission. Please have a look at the following steps to start a new project: + +1. Avoid Duplication: + + - Before starting a new project, review whether a project based on your idea already exists: + - All projects are listed in the **Project** tab of the keploy root directory. + - Please also review the existing repositories, as not all may be listed under the "Project" tab. + - If your project idea already exists, please join forces with those already active. Else (if your project does not exist) proceed with the next step. + +2. Build on what already exists: + + - If you can build on code that is already available, coordinate your project with the maintainers of the relevant repository by [requesting a new feature](). + - If there is no existing code base to start from, [create a repository](How-To-Create-a-Repository.md) even if you are not part of the keploy organisation (yet). + +3. Create a project board to track and update your work: + + - If you are a part of the keploy organisation use the project list under `.github`. + - If you are not (yet) part of the keploy organisation, use the projects list in your repository. You can notify the wider keploy community by opening an issue under `.github` informing that you have started a new project. + +4. Invite your team: + + - [Invite your team](https://help.github.com/en/articles/adding-organization-members-to-a-team) to join the project even [if they are not part of the keploy organisation](https://help.github.com/en/articles/adding-outside-collaborators-to-repositories-in-your-organization) + - [Nest your team](https://help.github.com/en/articles/moving-a-team-in-your-organizations-hierarchy) into the right parent team, which means the repository team for new projects or the keploy team for new repositories + - Assign roles for Developers, Engineers, Editors, Maintainers (for code). Try to have at least 2 persons for each role to avoid overloading your team. + +5. Follow the [regular project implementation cycle]() \ No newline at end of file diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md new file mode 100644 index 0000000..2583dd8 --- /dev/null +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -0,0 +1,38 @@ +_DeveloperWorkflow: + +Automated Checks for pull requests +================================== + +In order to maintain the code quality and coverage of our repositories, +keploy deploys a series of tools. These tools include our +Continuous Integration Setup that runs a complete test suite, Automated +Code quality checks as well as Coverage tracking tools. + +This section focuses on how these automated tests are set up and how they can +be configured on our GitHub repositories. Currently only the +following checks are available in our `keploy`_ +repository. + +Continuous Integration +---------------------- + +Keploy uses `GitHub Actions`_ for Continuous Integration. GitHub +Actions creates an environment based on the Operating System of your +choice and runs our test suite. This Continuous +Integration script is triggered by every pull request and only passes +when all the tests run successfully. + +.. figure:: ../images/all checks.png + :alt: GitHub pull request Checks + :align: center + :width: 600px + + GitHub pull request Checks + +- In the case where tests fail, we can debug the problem from going + through the console output as displayed here. + +.. figure:: ../images/check fails.png + :alt: GitHub actions Pull Request Build Console + :align: center + :width: 600px diff --git a/docs/DevelopmentSetup/docker_installation.md b/docs/DevelopmentSetup/docker_installation.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/DevelopmentSetup/keploy.example_installation.md b/docs/DevelopmentSetup/keploy.example_installation.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/images/all checks.png b/docs/images/all checks.png new file mode 100644 index 0000000000000000000000000000000000000000..74f5438ab4a922ac3242fce2d6f54aaa9e22b3f9 GIT binary patch literal 19869 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

%TVT3GM41^9vN?AF&wr(Zp-<@ei-7ZGt)*A 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

j*$?6eQ`Fg-rwz4n?F!+qIO? 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 literal 0 HcmV?d00001 From 7d3451ef7d49c265649f90750d51238c92728f6c Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Mon, 9 May 2022 20:30:43 +0530 Subject: [PATCH 07/12] remove files --- Contributing/How-to-Get-Credit-for-Your-Contribution.md | 0 docs/DevelopmentSetup/docker_installation.md | 0 docs/DevelopmentSetup/keploy.example_installation.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Contributing/How-to-Get-Credit-for-Your-Contribution.md delete mode 100644 docs/DevelopmentSetup/docker_installation.md delete mode 100644 docs/DevelopmentSetup/keploy.example_installation.md diff --git a/Contributing/How-to-Get-Credit-for-Your-Contribution.md b/Contributing/How-to-Get-Credit-for-Your-Contribution.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/DevelopmentSetup/docker_installation.md b/docs/DevelopmentSetup/docker_installation.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/DevelopmentSetup/keploy.example_installation.md b/docs/DevelopmentSetup/keploy.example_installation.md deleted file mode 100644 index e69de29..0000000 From 2f7a04ccc9d6f31cb0ef610a68ae143398aee0b5 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Tue, 14 Jun 2022 10:56:21 +0530 Subject: [PATCH 08/12] added image --- Contributing/How-to-Join-keploy.md | 9 ++++++++- docs/DeveloperWorkflow/automated_checks.md | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Contributing/How-to-Join-keploy.md b/Contributing/How-to-Join-keploy.md index eeb43e1..c00d60b 100644 --- a/Contributing/How-to-Join-keploy.md +++ b/Contributing/How-to-Join-keploy.md @@ -2,4 +2,11 @@ Keploy is increasingly looking for new developers to join us and help improve our processes. We can collaborate on developing new projects, improve existing pipelines or maintaining the existing projects. Please follow these steps to join keploy: -1. You can simply Join Keploy Slack Workspace from here and introduce yourself in genral channel [Slack Workspace](https://keploy.slack.com). \ No newline at end of file +1. You can simply Join Keploy Slack Workspace from here and introduce yourself in genral channel [Slack Workspace](https://keploy.slack.com). + +There are other options as well! + +2. There's a Discord channel. +3. Github Discussions + +If you're looking to contribute to anything specific then please feel free to reach out to any of the collaborators of that project directly on Slack/LinkedIn etc. \ No newline at end of file diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md index 2583dd8..6660668 100644 --- a/docs/DeveloperWorkflow/automated_checks.md +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -1,4 +1,4 @@ -_DeveloperWorkflow: +# DeveloperWorkflow: Automated Checks for pull requests ================================== @@ -10,7 +10,7 @@ Code quality checks as well as Coverage tracking tools. This section focuses on how these automated tests are set up and how they can be configured on our GitHub repositories. Currently only the -following checks are available in our `keploy`_ +following checks are available in our `keploy` repository. Continuous Integration @@ -22,7 +22,7 @@ choice and runs our test suite. This Continuous Integration script is triggered by every pull request and only passes when all the tests run successfully. -.. figure:: ../images/all checks.png + :figure:: ../images/all checks.png :alt: GitHub pull request Checks :align: center :width: 600px From cb3f09cd1839ce0891da6d6529a2ae3afd0377dc Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Tue, 14 Jun 2022 11:00:59 +0530 Subject: [PATCH 09/12] correct images --- docs/DeveloperWorkflow/automated_checks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md index 6660668..d27c462 100644 --- a/docs/DeveloperWorkflow/automated_checks.md +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -22,7 +22,7 @@ choice and runs our test suite. This Continuous Integration script is triggered by every pull request and only passes when all the tests run successfully. - :figure:: ../images/all checks.png +.. :figure:: ../../images/all checks.png :alt: GitHub pull request Checks :align: center :width: 600px @@ -32,7 +32,7 @@ when all the tests run successfully. - In the case where tests fail, we can debug the problem from going through the console output as displayed here. -.. figure:: ../images/check fails.png +.. figure:: ../../images/check fails.png :alt: GitHub actions Pull Request Build Console :align: center :width: 600px From 3973625d7d69287eb202219d5f298aee93ba5355 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Tue, 14 Jun 2022 11:06:23 +0530 Subject: [PATCH 10/12] added image --- docs/DeveloperWorkflow/automated_checks.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md index d27c462..62e0fa4 100644 --- a/docs/DeveloperWorkflow/automated_checks.md +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -22,17 +22,17 @@ choice and runs our test suite. This Continuous Integration script is triggered by every pull request and only passes when all the tests run successfully. -.. :figure:: ../../images/all checks.png - :alt: GitHub pull request Checks - :align: center - :width: 600px +

+ + +

- GitHub pull request Checks +- GitHub pull request Checks - In the case where tests fail, we can debug the problem from going through the console output as displayed here. -.. figure:: ../../images/check fails.png - :alt: GitHub actions Pull Request Build Console - :align: center - :width: 600px +

+ + +

From c99fb8b47a2b033222e3d52d4574b266e1ee8425 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Tue, 14 Jun 2022 11:08:09 +0530 Subject: [PATCH 11/12] added images --- docs/DeveloperWorkflow/automated_checks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md index 62e0fa4..be3c0a5 100644 --- a/docs/DeveloperWorkflow/automated_checks.md +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -33,6 +33,6 @@ when all the tests run successfully. through the console output as displayed here.

- +

From b74badae2da401e316e2ae462ab74f47abbff207 Mon Sep 17 00:00:00 2001 From: Ayush Kumar Date: Tue, 14 Jun 2022 11:08:55 +0530 Subject: [PATCH 12/12] added code --- docs/DeveloperWorkflow/automated_checks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperWorkflow/automated_checks.md b/docs/DeveloperWorkflow/automated_checks.md index be3c0a5..b51c480 100644 --- a/docs/DeveloperWorkflow/automated_checks.md +++ b/docs/DeveloperWorkflow/automated_checks.md @@ -16,7 +16,7 @@ repository. Continuous Integration ---------------------- -Keploy uses `GitHub Actions`_ for Continuous Integration. GitHub +Keploy uses `GitHub Actions` for Continuous Integration. GitHub Actions creates an environment based on the Operating System of your choice and runs our test suite. This Continuous Integration script is triggered by every pull request and only passes