Alliance Business Suite (ABS) Engineering Handbook
Introduction
Welcome to the Engineering Handbook for Alliance Business Suite! This handbook is designed to provide a comprehensive guide to our best practices, technologies, and workflows. It serves as a valuable resource for both new and existing team members.
Objectives of This Handbook
- Streamline the onboarding process.
- Standardize development practices.
- Serve as a reference point for technical decisions.
Who Should Read This
- Software Engineers
- Test Engineers
- DevOps Engineers
- Anybody interested in our engineering culture and practices.
How to Contribute
Feel free to contribute by creating pull requests or filing issues in the Azure DevOps repository for this handbook.
Objectives of the ABS Engineering Handbook
Purpose and Aims
The ABS Engineering Handbook serves as a centralized, comprehensive resource to guide technical decision-making, instill best practices, and streamline the development process within the Alliance Business Suite (ABS) ecosystem.
Core Objectives
1. Standardization
- Goal: To establish a standardized set of engineering practices for ABS development, applicable to both in-house and third-party engineers.
- Why: Consistency is key to maintaining a high-quality, scalable, and sustainable codebase.
2. Knowledge Sharing
- Goal: To serve as a repository of collective wisdom around the ABS architecture, tools, and services.
- Why: Effective knowledge sharing helps in rapid onboarding, reduces redundancy, and improves problem-solving.
3. Best Practices
- Goal: To codify best practices for architecture, code quality, security, and more.
- Why: Following industry best practices ensures robust, secure, and maintainable applications.
4. Efficiency and Productivity
- Goal: To improve efficiency by providing a well-documented process for various recurring tasks like DevOps, CI/CD, testing, and more.
- Why: A well-documented process eliminates guesswork, leading to faster development cycles and quicker issue resolution.
5. Skill Enhancement
- Goal: To serve as a continuous learning resource for ABS developers to enhance both their hard and soft skills.
- Why: A skilled development team is better equipped to meet the challenges of evolving technologies and user expectations.
6. Future-Proofing
- Goal: To maintain the handbook as a living document, regularly updated with new practices, tools, and objectives in sync with the ABS roadmap.
- Why: A living document adapts to new challenges and technologies, ensuring long-term utility.
Target Audience
This handbook is designed for:
- In-house developers and engineers working on ABS.
- Third-party developers integrating with ABS.
- Technical managers overseeing ABS-based projects.
- QA teams responsible for testing ABS-based applications.
- DevOps teams involved in the deployment and maintenance of ABS services.
How to Use This Handbook
- Skim through: Not all sections will be relevant to every role. Feel free to skim and jump to sections most applicable to your tasks.
- Deep Dive: Some sections, like 'Best Practices' or 'Database Management,' will benefit from a deep dive for a comprehensive understanding.
- Contribute: This is a collective resource. If you encounter a practice or tool that you think will benefit the team, contribute to the handbook.
Who Should Read This Engineering Handbook?
Overview
This engineering handbook is designed as a comprehensive guide for development, testing, and deployment within the Alliance Business Suite (ABS). As such, it is intended to be a resource for a wide range of roles within the ABS ecosystem.
Target Audience
Core Developers
Those who are directly responsible for adding new features, fixing bugs, and making architectural decisions in the ABS platform will find this handbook particularly useful. It will provide them with best practices, coding standards, and insights into the technologies we use.
Contributing Developers
Whether you are an open-source enthusiast or a partner company looking to integrate with ABS, this handbook will provide you with the necessary guidelines and procedures to contribute effectively.
QA Engineers
With dedicated sections on testing frameworks and procedures such as MSTest, ABS.SnapBind, and SpecFlow, Quality Assurance professionals will find guidelines on how to create robust test plans and cases.
DevOps Engineers
Professionals in charge of CI/CD pipelines, monitoring, and infrastructure — especially those who use Azure DevOps and Azure Cloud — will find invaluable advice and tutorials.
Technical Writers
Those responsible for documenting the codebase can understand the architecture and features more comprehensively, thus improving the quality and effectiveness of documentation.
Product Managers
While not directly involved in coding, understanding the technical capabilities, limitations, and best practices can help Product Managers make more informed decisions.
Business Stakeholders
High-level managers, business analysts, and other non-technical roles may find the sections on architecture and technology useful for gaining an overview understanding of the development process, which can aid in strategic planning.
Prerequisites
While the handbook is comprehensive, it assumes a certain level of knowledge in areas such as:
- .NET 7.0, Node.js, React+Redux, TypeScript, and Bootstrap
- Azure DevOps and Azure Cloud
- Database management systems like MySQL, MSSQL, PGSQL, ORACLE, and MongoDB
- MSTest and SpecFlow for testing
- Vault for secrets management
- Plesk for web hosting
- PowerShell scripting
Concluding Remarks
This handbook is a living document; as technologies and best practices evolve, so too will the content of this guide. Therefore, feedback and contributions from readers like you are invaluable for keeping it relevant and up-to-date.
How to Contribute to the ABS Engineering Handbook
Introduction
Your contributions are essential for keeping this engineering handbook accurate, up-to-date, and valuable to others. This guide will walk you through the process of contributing to the Alliance Business Suite (ABS) Engineering Handbook via Azure DevOps.
Prerequisites
Before you start contributing:
- Familiarize yourself with the Objectives of this handbook to ensure your contributions align with the handbook's goals.
- Make sure you have access to the Azure DevOps project where this handbook is maintained. If you don't have access, contact your DevOps administrator to grant you the necessary permissions.
Steps to Contribute
1. Fork the Repository
- Navigate to the Azure DevOps project where the handbook is stored.
- Fork the repository to your own space within Azure DevOps.
2. Clone Your Fork
- Clone your forked repository to your local machine.
git clone <Your_Forked_Repo_URL>
3. Create a New Branch
- Create a new branch to work on your feature, fix, or documentation update.
git checkout -b <New_Branch_Name>
4. Make Your Changes
- Edit, add, or remove files in your local clone as necessary, following the standards set out in this handbook.
5. Commit Your Changes
- Commit your changes with a meaningful commit message.
git add . git commit -m "Description of changes made"
6. Push to Azure DevOps
- Push your changes back to your fork on Azure DevOps.
git push origin <New_Branch_Name>
7. Create a Pull Request (PR)
- Go back to the Azure DevOps portal.
- Navigate to
Pull Requestsunder theRepostab. - Click on
New Pull Request. - Choose your fork and the new branch you've just pushed.
- Fill in the PR template, detailing the changes you made, why you made them, and any specific things you'd like reviewers to focus on.
8. Addressing Feedback
- Reviewers may provide feedback that requires changes.
- Make the necessary changes on your local machine and push the updates to the same branch.
- The PR will automatically update, and reviewers will be notified.
9. Merge PR
- Once your PR is approved, a maintainer will merge it into the main repository.
Note on Code Reviews
- Each PR will be reviewed by at least one team member with write access to the repository.
- Ensure that all automated tests pass before requesting a review.
Style Guide
- Follow the existing style guide and best practices laid out in the handbook.
- If you're contributing a major section, update the Table of Contents accordingly.
Closing Thoughts
Thank you for contributing to the ABS Engineering Handbook! Your efforts not only benefit you but also the entire ABS developer community.
Setting Up Development Environment
Development Environment Setup for the Alliance Business Suite
Version: 1.1
Date: 28/08/2023
Setting up your development environment is the first essential step for effective contribution to the Alliance Business Suite. This page aims to guide you through setting up your development environment via Remote Desktop into the Corporate Server.
Table of Contents
- Overview
- Pre-requisites
- Remote Desktop into Corporate Server
- Setting up SSH for Azure DevOps
- Cloning the Repository
- Installing VS Code
- Configuring posh-git and oh-my-posh
Overview
To develop for the Alliance Business Suite, a properly configured environment is essential. This guide will help you to set up your environment using the Corporate Server.
Pre-requisites
Before setting up your development environment, make sure you have:
- Network access to Alliance Business Suite resources
- Proper credentials (Check with your team lead if you don't have them)
- A computer that meets the system requirements
Remote Desktop into Corporate Server
Steps:
- Install RDP Client: Download and install the Remote Desktop Client for your OS.
- Request Credentials: Contact your team lead to obtain your credentials for Remote Desktop access.
- Configure RDP Client:
- Open RDP and click on
Add->PCs. - Use
fenixalliance.com.cofor the PC Name, assign it a display name, and fill in your provided credentials.
- Open RDP and click on
- Connect and Validate:
- Double-click on the newly created connection in RDP.
- Confirm that you can successfully log in.
Setting up SSH for Azure DevOps
- Generate SSH Key: Open a terminal and run
ssh-keygen -t rsa -b 4096. Follow the prompts to save the key. - Add SSH Key to Azure DevOps:
- Log into Azure DevOps
- Navigate to your profile settings -> SSH Public Keys.
- Click
Add, give your key a name, and paste the contents of your SSH public key.
- Test SSH Connection: Run
ssh -T git@ssh.dev.azure.comto confirm that SSH is set up correctly.
Cloning the Repository
- Open a Terminal: You can do this within your RDP session.
- Clone the Repository: Run
git clone git@ssh.dev.azure.com:v3/fenixalliance/ABS/ABS.
Installing VS Code
- Download: Visit the VS Code website and download the installer for your OS.
- Install: Follow the installation instructions.
- Launch: Open VS Code to confirm that it is installed correctly.
Configuring posh-git and oh-my-posh
- Install posh-git: Run
Install-Module posh-git -Scope CurrentUserin PowerShell. - Install oh-my-posh: Run
Install-Module oh-my-posh -Scope CurrentUserin PowerShell. - Configure your PowerShell profile: Run
notepad $PROFILEand add the following lines:Import-Module posh-git Import-Module oh-my-posh Set-Theme Paradox
Languages and Frameworks
This section provides an overview of the programming languages, frameworks, and libraries used in the Alliance Business Suite (ABS) development. For each language and framework, we outline the core principles, recommended practices, and important considerations to take into account during development.
Table of Contents
.NET 7.0
Overview
.NET 7.0 is a cross-platform framework developed by Microsoft. It is mainly used in ABS for server-side logic.
Best Practices
- Use dependency injection for better modularity.
- Always handle exceptions and provide meaningful logs.
Important Libraries
- Entity Framework Core
- ASP.NET Core Web API
Node.JS
Overview
Node.js allows us to run JavaScript on the server. It's primarily used in ABS for building fast, scalable network applications.
Best Practices
- Use async/await for handling asynchronous operations.
- Keep dependencies up-to-date.
Important Libraries
- Axios
- Socket.io
React+Redux
Overview
React is a library for building UIs, and Redux serves as its state management tool.
Best Practices
- Keep components small and focused.
- Use Redux Toolkit for more efficient state management.
Important Libraries
- React Router
- Redux Thunk
TypeScript
Overview
TypeScript is a superset of JavaScript that allows for optional static typing.
Best Practices
- Use interfaces to define complex types.
- Avoid using the
anytype.
Bootstrap
Overview
Bootstrap is a front-end framework that helps in responsive web development.
Best Practices
- Use utility classes to keep custom CSS to a minimum.
- Customize Bootstrap variables instead of overriding styles.
Radzen.Blazor
Overview
Radzen.Blazor is a component library for Blazor.
Best Practices
- Utilize built-in components for rapid development.
- Keep an eye on performance when using multiple components.
CSS
Overview
Cascading Style Sheets (CSS) is used for styling the UI components in ABS.
Best Practices
- Use BEM or OOCSS methodology.
- Opt for CSS variables for theme-based styling.
Blazor
Overview
Blazor is a .NET web framework for building client-side web apps using C#.
Best Practices
- Use Razor components for reusability.
- Employ Blazor WebAssembly for client-side logic where appropriate.
Communications Strategy
Overview
Effective communication is critical for any engineering team, especially one that's working on complex and interconnected projects like the Alliance Business Suite. This page outlines the various tools and platforms we use for communication, how and when to use them, and best practices for ensuring clear and efficient communication within the team.
Tools and Platforms
Microsoft Teams
Purpose: Internal Team Communication, Video Conferencing, Screen Sharing
Official Link: Engineering Team
Best Practices:
- Use channels for project-specific communications.
- Start private chats for one-on-one conversations or sensitive topics.
- Leverage video conferencing for synchronous meetings.
- Utilize Teams' built-in integration with Azure DevOps for seamless workflow.
Discord
Purpose: Casual Chat, Community Engagement
Official Link: Server
Best Practices:
- Keep conversations related to development in designated channels.
- Follow the community code of conduct.
- Use for less formal, real-time communication with team members.
Purpose: Official Communications, Customer Support
Official Link: support@fenix-alliance.com
Best Practices:
- Use for formal communications or when a paper trail is necessary.
- Include all relevant parties in CC for transparency.
- Follow proper email etiquette; be clear and concise.
Virtual Office (Gather Town)
Purpose: Virtual Collaboration, Informal Meetings
Official Link: Gather Town
Best Practices:
- Use for ad-hoc meetings or informal catch-ups.
- Ensure your camera and microphone are functioning well.
- Respect others' virtual space; don't enter meetings uninvited.
Toll-Free Number
Purpose: Customer and Vendor Communication
Official Link: +1 206-588-6716
Best Practices:
- Use for official and urgent communications.
- Record important calls for compliance and quality assurance.
When to Use What
- Use Microsoft Teams for internal team communications and project-related discussions.
- Discord is best for less formal discussions or community engagement.
- Email should be used for formal, official communications.
- Virtual Office (Gather Town) can be used for informal collaboration.
- Toll-Free Number is primarily for customer and vendor interaction.
FAQs
For common queries, refer to our Frequently Asked Questions page.
Support
For any technical issues, visit the Support Portal or track it in the Azure Issue Tracker.
Related Links
Last Updated
This page was last updated on September 9, 2023.
Microsoft Teams
Teams Communications Guide for Alliance Business Suite Development Team
Overview
Effective communication is crucial in a distributed and multi-disciplinary development team like ours working on the Alliance Business Suite. This guide aims to outline best practices, channels, and guidelines to ensure seamless communication using Microsoft Teams.
Table of Contents
- Installation and Setup
- Channel Structure
- Best Practices
- Meeting Guidelines
- Integration with Azure DevOps
- Additional Resources
- FAQs
Installation and Setup
Before diving into Teams' features, ensure that you have Microsoft Teams installed on your system. Follow the steps outlined in the Microsoft Teams User Guide for installation and initial setup.
Joining the Engineering Team Channel
Follow the Engineering Team Teams Channel to join and introduce yourself if you haven't already.
Channel Structure
Our Microsoft Teams workspace has several channels designed to categorize conversations. These include:
- General: For announcements and general discussions.
- Development: Dedicated to discussing coding issues, PR reviews, etc.
- Alliance Business Suite: Dedicated to discussing Alliance Business Suite development initiatives.
- Alliance Business Cloud: Dedicated to discussing Alliance Business Cloud development initiatives.
- Azure-DevOps: For all conversations related to Azure DevOps.
- Database: Focused on MySQL, MSSQL, PGSQL, ORACLE, and MongoDB.
- SpecFlow-SnapBind: For discussions on MSTest, ABS.SnapBind (our SpecBind replacement library), and SpecFlow.
Best Practices
- Clear & Concise Messages: Keep your messages short but informative.
- Mention: Use
@to mention people directly for immediate attention. - Threaded Conversations: Use threads to keep conversations organized.
- Use Emojis Sparingly: Use emojis to complement, not replace, the text.
Meeting Guidelines
- Scheduling: Use Teams Calendar to schedule meetings. Make sure to provide an agenda.
- Recording: Record meetings when necessary and share the recordings in the channel.
- Post-Meeting: Share meeting minutes in the appropriate Teams channel.
Integration with Azure DevOps
Teams offer powerful integrations with Azure DevOps to keep track of PRs, issues, and builds. To set it up, refer to this Azure DevOps Documentation.
Additional Resources
FAQs
Q: Who do I reach out to for Teams-related issues?
A: For any Teams-specific queries, please contact support@fenix-alliance.com.
Q: How do I integrate Teams with Azure DevOps?
A: Follow the instructions in this guide.
This guide should give you a good starting point for utilizing Teams effectively in your role at Alliance Business Suite. Feel free to contribute to this handbook as you see fit.
Developer Code of Conduct for Alliance Business Suite
The Developer Code of Conduct outlines the expected behavior and professional standards that developers working on the Alliance Business Suite (ABS) project are required to adhere to. It promotes a positive and collaborative development environment and ensures that all team members work together effectively and ethically.
Purpose
The Developer Code of Conduct serves the following purposes within the ABS development community:
-
Professionalism: It sets the expectation for developers to conduct themselves in a professional and respectful manner.
-
Collaboration: It fosters collaboration and teamwork among developers, contributors, and stakeholders.
-
Inclusivity: It promotes an inclusive environment where all contributors are welcome and valued.
-
Code Quality: It emphasizes the importance of maintaining code quality and following coding standards.
Guidelines
1. Respectful Communication
-
Communicate respectfully with fellow developers, contributors, and stakeholders. Avoid offensive or disrespectful language, comments, or behavior.
-
Listen actively and consider different perspectives and ideas, even when there are disagreements.
2. Inclusivity
-
Embrace diversity and inclusion. Respect individuals' differences, backgrounds, and experiences.
-
Ensure that all contributors, regardless of their background or identity, feel welcome and valued within the ABS community.
3. Collaboration
-
Collaborate openly and constructively with fellow developers and contributors. Share knowledge and insights for the benefit of the project.
-
Provide constructive feedback and avoid personal attacks or criticism.
4. Code Quality
-
Maintain high code quality by following ABS coding standards and best practices.
-
Document code clearly and comprehensively to aid in understanding and maintainability.
5. Accountability
-
Take responsibility for your work and contributions to the ABS project.
-
Admit mistakes and work collaboratively to rectify them.
6. Licensing and Copyright
-
Respect software licensing and copyright agreements. Ensure that all contributions comply with the applicable licenses.
-
Avoid including copyrighted materials without proper permission or attribution.
7. Security and Privacy
-
Prioritize the security and privacy of ABS users and their data. Report and address security vulnerabilities promptly and responsibly.
-
Do not engage in any activities that compromise the security or privacy of the ABS project or its users.
Reporting Violations
If you observe any violations of this Developer Code of Conduct within the ABS development community, please report them to the appropriate channel or contact the project maintainers or administrators. All reports will be treated with discretion and confidentiality.
Consequences of Violation
Violations of this Developer Code of Conduct may result in consequences such as warnings, temporary suspensions, or permanent bans from the ABS project, depending on the severity and recurrence of the violation. The ABS project maintainers and administrators will determine the appropriate course of action.
Conclusion
The Developer Code of Conduct is a fundamental framework for fostering a positive and productive development environment within the Alliance Business Suite project. By adhering to these guidelines, developers contribute to the success and growth of the ABS community while upholding professionalism and ethical standards.
This concludes the Developer Code of Conduct page for the Alliance Business Suite engineering handbook.
Definition of Ready (DoR) for Alliance Business Suite Development
The Definition of Ready (DoR) is a set of criteria that must be met before a user story or task is considered ready for development within the Alliance Business Suite (ABS) project. This page outlines the DoR guidelines to ensure that work items are well-prepared and can be effectively worked on by the development team.
Why DoR Matters
Having a clear and well-defined DoR is crucial for ABS development for several reasons:
-
Efficiency: It ensures that developers can work on tasks without encountering unexpected blockers or ambiguities.
-
Clarity: It provides clarity on what is expected from each work item, reducing misunderstandings and misinterpretations.
-
Prioritization: It allows teams to prioritize work items effectively based on their readiness for development.
-
Consistency: It promotes consistent preparation and expectations across the development team.
Definition of Ready (DoR) Criteria
The following criteria represent the DoR for ABS development:
1. User Story or Task
-
The work item is well-defined and described, whether it's a user story, task, or bug report.
-
It is clear what problem the work item is addressing or what feature it is implementing.
2. Acceptance Criteria
-
Clear and detailed acceptance criteria are defined for the work item. Acceptance criteria describe the expected behavior and outcomes.
-
Acceptance criteria are testable and unambiguous, leaving no room for interpretation.
3. Dependencies
-
Any external dependencies or prerequisites required for the work item are identified and documented.
-
If the work item depends on other work items, their statuses and progress are considered.
4. Design and Mockups
-
If applicable, design specifications and mockups are provided to help visualize the expected outcome of the work item.
-
Design assets are complete and available for reference.
5. Size and Effort Estimation
-
The size and effort required for the work item are estimated by the development team.
-
Estimations are based on historical data or team expertise and are documented.
6. Definition of Done (DoD)
- The Definition of Done (DoD) for the work item is established, outlining the criteria that must be met for it to be considered complete.
7. Stakeholder Approval
-
The work item has been reviewed and approved by relevant stakeholders or product owners.
-
Stakeholders have had the opportunity to provide feedback and clarify requirements.
Customization of DoR
It's important to note that the DoR can be customized based on the specific needs and requirements of the ABS development team and project. Teams may add additional criteria or modify existing ones to align with project goals and standards.
Conclusion
The Definition of Ready (DoR) for Alliance Business Suite development ensures that work items are well-prepared and ready for development, reducing ambiguity and potential blockers. By adhering to the DoR criteria, ABS development teams can efficiently plan and execute work items while maintaining a shared understanding of expectations.
Effective communication and collaboration among team members, stakeholders, and product owners are essential to achieving a clear and shared understanding of what constitutes "ready" in the context of ABS development.
This concludes the Definition of Ready (DoR) page for the Alliance Business Suite engineering handbook.
Definition of Done (DoD) for Alliance Business Suite Development
The Definition of Done (DoD) is a set of criteria that must be met for a user story, feature, or task to be considered complete within the Alliance Business Suite (ABS) development process. This page outlines the DoD guidelines for ABS development to ensure that work is finished to the required standards and meets the expectations of stakeholders.
Why DoD Matters
A clear and well-defined DoD is essential for ABS development for several reasons:
-
Quality Assurance: It ensures that all work meets the quality standards expected by stakeholders.
-
Transparency: It provides transparency into what is expected to be achieved by the end of a development cycle.
-
Collaboration: It encourages collaboration among team members by setting clear expectations.
-
Reduced Ambiguity: It reduces ambiguity and misunderstandings about what constitutes a complete task.
Definition of Done (DoD) Criteria
The following criteria represent the DoD for ABS development:
1. Code Complete
-
All code changes are implemented and reviewed.
-
Code adheres to ABS coding standards and style guidelines.
-
Unit tests are written and pass successfully.
2. Functional Testing
-
The feature or user story is tested thoroughly for functionality and correctness.
-
All acceptance criteria are met.
-
No critical defects or issues are present.
3. Documentation
-
Documentation is updated to reflect any changes made during development.
-
User guides, release notes, and relevant documentation are created or updated.
4. Code Review
-
Code changes have been reviewed and approved by at least one team member other than the original developer.
-
Review feedback, if any, has been addressed.
5. Integration and Deployment
-
Code changes have been integrated into the appropriate ABS environment (e.g., development, staging, production).
-
The feature or user story is ready for deployment to the production environment if applicable.
6. User Acceptance Testing (UAT)
-
The feature or user story has been tested by stakeholders or end-users in a UAT environment.
-
UAT feedback, if any, has been addressed.
7. Performance and Scalability
-
Performance tests have been conducted to ensure that the feature or user story performs well under expected load.
-
The feature or user story can scale as required to accommodate increased usage.
8. Security
-
Security checks and assessments have been performed, and any identified security issues have been resolved.
-
Access controls and permissions are correctly configured.
9. Review with Product Owner
- The completed work has been reviewed with the Product Owner or relevant stakeholders, and they have provided their approval.
Customization of DoD
It's important to note that the DoD can be customized based on the specific needs and requirements of the ABS development team and project. Teams may add additional criteria or modify existing ones to align with project goals and standards.
Conclusion
The Definition of Done (DoD) for Alliance Business Suite development serves as a crucial guide to ensure that work is completed to the expected quality and standards. By adhering to the DoD criteria, ABS development teams can deliver high-quality features and user stories that meet stakeholder expectations.
Remember that effective communication and collaboration among team members, stakeholders, and Product Owners are essential to achieving a clear and shared understanding of what constitutes "done" in the context of ABS development.
This concludes the Definition of Done (DoD) page for the Alliance Business Suite engineering handbook.
Development Guidelines for the Alliance Business Suite
Version: 1.1
Date: 28/08/2023
Contributing to the Alliance Business Suite is a collaborative endeavor, and we appreciate your interest. This guide outlines the best practices and procedures to follow when developing features or fixing bugs for the platform.
Table of Contents
- Introduction
- Development Environment
- Branching Strategy
- Coding Standards
- Code Reviews
- Testing
- Deployment
- Documentation
Introduction
This guide serves as a comprehensive overview of the expectations and requirements for developers contributing to the Alliance Business Suite. Adherence to these guidelines ensures that our codebase remains maintainable, robust, and easy to understand.
Development Environment
Refer to the Dev Env Setup guide to set up your development environment. This guide outlines steps to RDP into the Corporate Server, clone the ABS repository via SSH, install VS Code, and configure posh-git and oh-my-posh.
Branching Strategy
We follow a modified Git Flow branching strategy that includes personal branches:
mainBranch: Contains the stable release.developBranch: Is for day-to-day development.feature/<feature-name>Branches: For new features.bugfix/<bug-name>Branches: For bug fixes.<username>/personalBranches: Personal branches named after the developer for experimenting or long-term work that will eventually be merged back intodevelop.
Personal Branches
-
Naming: These branches should be named with your username, followed by
/personal. For example, if your username isdaniel, then your personal branch should be nameddaniel/personal. -
Usage: Use your personal branch for prototyping, experimental features, or work-in-progress tasks that aren't ready to be shared with the team.
-
Merging: Code from personal branches should eventually be reviewed and merged into
developor appropriate feature branches. They should not be merged directly intomaster. -
Updates: Keep your personal branch up-to-date with the
developbranch to avoid merge conflicts.
By adhering to this branching strategy, including the use of personal branches, we aim to keep our workflow organized and our codebase clean and manageable.
Coding Standards
- Language Standards: Use consistent casing, indentation, and code organization.
- Comments: Add meaningful comments that clarify code purpose and behavior.
- Commit Messages: Use descriptive commit messages that reflect the changes made.
Code Reviews
- Peer Reviews: All pull requests should be reviewed by at least one other developer.
- Automated Checks: Ensure that automated checks (tests, linters, etc.) pass before merging.
- Conflict Resolution: Resolve all merge conflicts locally before submitting a PR.
Testing
- Unit Tests: Write unit tests for all new features and bug fixes.
- Integration Tests: Ensure that your code works well with existing features.
- Regression Testing: Run existing tests to ensure new code doesn't break existing functionality.
Deployment
- Staging: Test all changes in the staging environment before deploying to production.
- Rollback Plans: Have a plan in place for rolling back code in case of errors.
- Monitoring: Monitor application logs and performance metrics after deployment.
Documentation
- Code Comments: Inline comments should be used sparingly and only when necessary to explain complex logic.
- Documentation: Update relevant documentation to reflect changes.
- Release Notes: Maintain a log of all changes made for each release.
Alliance Business Suite Code Style Guide 🚀
Introduction 📚
Welcome, Alliance engineers! This document outlines the code style, conventions, and guidelines for the Alliance Business Suite (ABS) engineering team. The aim is to ensure that our codebase remains clean, consistent, and easy to maintain.
Table of Contents 🗂️
- Introduction
- General Principles
- Naming Conventions
- Comments and Documentation
- Indentation and Spacing
- Code Organization
- Error Handling
- Language-Specific Guidelines
- Version Control
- Tools and Frameworks
- Conclusion
- Contributing
General Principles 🎯
- Clarity is King: Your code should be as straightforward as possible.
- Follow the Principle of Least Surprise: Your code should behave as other developers expect.
- DRY (Don't Repeat Yourself): Avoid code duplication at all costs.
- Keep it Simple: Unnecessary complexity is a no-no.
- Cloud First, DevOps First, Mobile First: These are our guiding principles!
Naming Conventions 🏷️
Variables and Functions
- Use
camelCasefor variables and function names in C# and JavaScript/TypeScript.
int counter;
void processData();
Classes and Interfaces
- Use
PascalCasefor class and interface names.
public class UserProfile
{
// Implementation here
}
Constants
- Use
UPPER_SNAKE_CASEfor constants.
const int MAX_COUNT = 10;
Comments and Documentation 📝
- Use XML comments for C# documentation to support IntelliSense.
- For JavaScript/TypeScript, use
//or/* */based on the length and relevance of the comment.
Indentation and Spacing 📏
- 4 spaces, not tabs. Yes, this is the way!
- Use blank lines to separate logical code blocks.
Code Organization 🗄️
File Structure
- One class or interface per file.
- File names should correspond to the class or interface names.
Functions and Methods
- Small and focused—that's how we like our functions!
- A maximum of three parameters, unless you have an extremely good reason.
Error Handling 🛑
- Use exceptions in C# and
try...catchblocks in JavaScript/TypeScript.
try
{
// Code here
}
catch (IOException e)
{
// Handle the exception
}
Language-Specific Guidelines 🌐
C#
- Use properties over public variables.
- String interpolation is the way to go.
TypeScript/JavaScript
- Stick to
letandconst. - Arrow functions are your friends for short expressions.
Version Control 🔄
- Write clear commit messages.
- For guidelines on Git Workflow and Branching Strategy, consult our internal docs.
Tools and Frameworks 🔧
- Stick to our recommended Languages and Frameworks.
Conclusion 🏁
This style guide is the holy grail for coding practices within the Alliance Business Suite. Let's stick to it to maintain a clean and efficient codebase.
For further information, check out Microsoft's C# Coding Conventions and the Airbnb JavaScript Style Guide.
Contributing 🤝
Found something amiss? Feel free to edit this document. All contributions will undergo a review for quality and coherence.
And there we have it, a comprehensive Code Style Guide tailored to the Alliance Business Suite. Happy coding, folks! 🚀
Project Structure Guide
Introduction
This guide provides an overview of the project structure for the FenixAlliance solutions, which encompass multiple sub-projects including ABM, ABP, ABS, ACL, and APS among others. Understanding the structure is crucial for efficient development and maintenance.
High-Level Structure
Here's a simplified view of the project directories:
.
├── FenixAlliance.ABM
├── FenixAlliance.ABP
├── FenixAlliance.ABS
├── FenixAlliance.ACL
├── FenixAlliance.APS
├── FenixAlliance.Docs
├── FenixAlliance.Portals
├── LICENSE.md
├── README.md
├── Scripts
└── Workspaces
Key Directories
-
FenixAlliance.ABM,FenixAlliance.ABP, etc.: These are the core solution folders, each containing various projects related to different functionalities. -
FenixAlliance.Docs: Houses all documentation files, including MkDocs configuration and versioned documentation. -
Scripts: This directory contains PowerShell scripts for various automation tasks, including build and deployment. -
Workspaces: This directory contains workspace configuration files for Visual Studio Code, specific to different aspects or components of the overall system.
Sub-Project Structure
Each solution folder, such as FenixAlliance.ABM, further contains various sub-projects:
-
Core: Contains the core logic and models. -
Data: Data-related logic, possibly separated by database type like MSSQL, MySQL, etc. -
Tests: Unit tests for the project's modules. -
SDK: Contains the software development kit for the project. -
Web: Contains the web API or UI code. -
Hub: May contain SignalR hubs or other real-time communication components. -
Models: Houses DTOs, ML models, and data mappers.
Conclusion
The architecture is designed to be modular and clean, allowing developers to locate files and directories with ease. For any specific questions related to the structure, refer to the README files in each directory or consult the documentation.
For more details on code style and best practices, please refer to the Code Style Guide.
ABS Scrum Development Guide with Azure DevOps and Git
Introduction
Welcome to the Alliance Business Suite (ABS) Scrum Development Guide. This document aims to standardize the Scrum development practices within the ABS development environment, leveraging the capabilities of Azure DevOps and Git.
Purpose
The purpose of this document is to provide a comprehensive guide to the Scrum development practices specifically tailored for the ABS platform. This guide also serves to elaborate on how Azure DevOps and Git can be efficiently utilized to align with these Scrum practices.
Scrum Basics in the Context of ABS
Scrum is an agile framework that we use to deliver high-quality software products. In the context of ABS, Scrum helps us manage complex software development with an iterative and incremental approach.
Scrum Artifacts
- Product Backlog: A prioritized list of features, enhancements, and bug fixes planned for the ABS platform.
- Sprint Backlog: A subset of the Product Backlog selected for implementation during a Sprint.
- Increment: The usable product delivered at the end of each Sprint.
Getting Started with Azure DevOps and ABS
Azure DevOps offers a variety of features like Boards, Repos, Pipelines, etc., that can be customized to fit our Scrum needs for ABS development.
Setting Up a New Project
- Log in to Azure DevOps.
- Create a new project and name it appropriately, e.g., "ABS Development."
- Navigate to "Boards" to set up your work environment.
Azure DevOps Interface for ABS
- Boards: For work items and Sprint planning.
- Repos: For source code management using Git.
- Pipelines: For CI/CD.
- Artifacts: For package management.
Roles in Scrum and Azure DevOps
Scrum Roles
- Product Owner: Manages the Product Backlog and sets priorities.
- Scrum Master: Ensures Scrum practices are followed.
- Development Team: Implements the Sprint tasks.
Azure DevOps Permissions for Scrum Roles
- Product Owner: Full access to Boards, limited access to Repos and Pipelines.
- Scrum Master: Full access to Boards, read-only access to Repos and Pipelines.
- Development Team: Write access to Repos, limited access to Boards.
Work Items and Product Backlog
Creating Work Items
- Navigate to "Boards."
- Click on "New Item" and define the type (Epic, Feature, User Story, or Task).
- Fill in the necessary details like title, description, and priority.
Managing the Product Backlog
- Prioritize the backlog items by drag-and-drop.
- Assign items to upcoming Sprints.
Sprint Planning in Azure DevOps
Setting up Sprints
- Go to "Boards" and then "Sprints."
- Create a new Sprint and define its timeline.
Allocating Work Items
- Drag work items from the Product Backlog to the Sprint Backlog.
Git Branching Strategy for ABS
mainbranch: The production-ready code.- Feature branches: Created from
mainand merged back after code review. - Sprint branches: Created to isolate the work of a specific Sprint.
Code Reviews and Pull Requests
- Use Azure DevOps' Pull Request feature to conduct code reviews.
Running the Sprint in Azure DevOps
Daily Stand-ups
- Use Azure DevOps boards to quickly view the status of each work item.
Sprint Burndown Charts
- Track Sprint progress using Azure DevOps' built-in burndown charts.
Quality Assurance within Sprints
- Automated tests should be part of the build pipeline.
- Code reviews should be conducted for each pull request.
Sprint Review and Retrospective
- Conduct these within Azure DevOps by reviewing completed work items and discussing what went well and what could be improved.
Continuous Integration/Continuous Deployment (CI/CD) with ABS
- Utilize Azure Pipelines to set up CI/CD tailored to ABS development needs.
Tips and Best Practices
- Keep all work items updated in Azure DevOps for better traceability.
- Consistently follow the branching strategy for a streamlined workflow.
FAQs and Troubleshooting
- A dedicated section to handle common queries and challenges that may arise while using Azure DevOps for Scrum in ABS.
This guide serves as a living document and will be updated regularly to include any changes or improvements to our Scrum practices and tools.
Version Control
Introduction
Version control is an integral part of any software development project, especially when working with a team. It allows multiple people to work on a project at the same time, provides a history of changes, and helps in reverting to a previous state in case of mistakes or bugs. In the Alliance Business Suite (ABS), we use Azure DevOps for our version control needs, focusing on a Git-based workflow.
Git Workflow
We primarily use a feature-based Git workflow. Developers work on feature branches, which are then reviewed and merged into the main branch upon completion. The primary branches in our repository are:
main: The production-ready version of the applicationdevelop: The staging branch that contains features that are under review- Personal branches: Every developer can have a personal branch named after themselves (e.g.,
daniel-lozano), for work that doesn't directly relate to current feature development.
Feature Branches
When starting work on a new feature, it is good practice to create a new branch off develop:
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-name
Commit Messages
Commit messages should be clear and indicate what the commit achieves. Please use the following format:
[Task/Feature ID] Short description
Optional long description.
Pull Requests
All changes are introduced to the develop and main branches through pull requests (PRs). A PR should be reviewed by at least one other team member before being merged.
Creating a Pull Request in Azure DevOps
- Go to the 'Repos' section in Azure DevOps.
- Choose 'Pull requests' from the sidebar.
- Click on 'New Pull Request'.
- Choose the source branch (your feature branch) and the target branch (usually
develop). - Fill in the necessary details and create the pull request.
Branching Strategy
Given that every developer has a personal branch, you're encouraged to perform initial tests and reviews there before creating a pull request to develop.
- Feature branches:
feature/feature-name - Bugfix branches:
bugfix/bug-name - Hotfix branches:
hotfix/issue-name
Azure DevOps Repos
We use Azure DevOps Repos for hosting our code repository. Here are some key features and guidelines:
- SSH Authentication: We use SSH for secure access to our repository. If you haven't already set this up, please refer to the Setting Up Development Environment page for a guide on SSH setup.
- Code Reviews: Every pull request must go through a code review process in Azure DevOps. Please tag the appropriate people for code reviews.
- Policies and Permissions: Access to
mainanddevelopis restricted, and merging can only happen through PRs.
For more information, refer to our Azure DevOps Guidelines.
Git Workflow
Introduction
Our Git workflow serves as a guideline for how code changes flow through our system, from your local machine to our production environment. Adhering to this workflow ensures a smooth and consistent development process for everyone on the Alliance Business Suite (ABS) team.
Workflow Steps
1. Clone the Repository
Initially, you'll need to clone the ABS repository hosted on Azure DevOps.
git clone git@dev.azure.com:fenixalliance/ABS.git
2. Checkout to a New Branch
Always work on a separate branch when you're adding a feature, fixing a bug, or making some other kind of improvement. Check out to a new branch using:
git checkout -b <branch-name>
3. Make Changes Locally
Perform code changes, add new files, and generally make the code changes necessary for your task. After each significant change or logical commit point, stage and commit your changes.
git add .
git commit -m "Descriptive commit message"
4. Keep Your Branch Updated
It's crucial to regularly update your local branch with changes from the remote develop branch. This minimizes conflicts later on.
git fetch origin
git rebase origin/develop
5. Push Your Changes
After making your changes and committing them locally, push the changes to the remote repository.
git push origin <branch-name>
6. Open a Pull Request (PR)
Once your feature is complete and you've pushed your branch to Azure DevOps, create a Pull Request (PR) from the Azure DevOps portal.
- Source branch: Your feature branch
- Target branch:
develop(ormainfor hotfixes)
7. Code Review
Before your PR is merged, it will be reviewed by at least one other team member. Address any comments or requested changes during this phase.
8. Merge and Clean Up
Once the PR is approved, it will be merged into the target branch. After a successful merge, delete the feature branch from both your local environment and the remote repository.
git branch -d <branch-name>
git push origin --delete <branch-name>
Best Practices
- Always pull the latest changes from the
developbranch before starting any new work. - Keep your commits small and focused. Each commit should represent a single logical change.
- Write clear, concise commit messages.
- Resolve any conflicts as soon as possible.
- Ensure your code conforms to our style guidelines.
Conclusion
By adhering to this Git workflow, you contribute to maintaining an efficient and effective version control system that benefits everyone involved in the project.
For further understanding of our branching strategy, consult our Branching Strategy document.
Feel free to contribute to this document to keep it updated and relevant.
Branching Strategy
Introduction
Understanding the branching strategy is crucial for seamless collaboration and version management within the Alliance Business Suite (ABS) project. This document outlines the branching strategy we follow for developing and releasing features, fixes, and updates.
Main Branches
main
This is the production branch, and it's always deployable. Code that lands in main has been thoroughly tested and is considered stable.
develop
This is the development branch where features, improvements, and fixes are merged. The code in develop should always be in a deployable state but may contain bugs and unfinished features.
Feature Branches
Feature branches are branched off from develop and are used to implement new features or improvements. Their names should describe the feature or improvement being implemented.
feature/<feature-name>: for example,feature/authentication-improvements
Hotfix Branches
Hotfix branches are created from the main branch and are meant to fix issues that cannot wait for the next release cycle.
hotfix/<issue-name>: for example,hotfix/security-vulnerability
Release Branches
When develop reaches a state that it can be released, a release branch is created off develop.
release/<version-number>: for example,release/2.0
Once the code is ready, it is merged into main and tagged with the version number.
Personal Branches
In addition to these common branches, each developer can have personal branches. These branches should be named after the developer and can be used for experimental code or tasks that don't directly relate to current feature development.
<your-name>: for example,Daniel
Merging Strategy
- Feature branches are merged into
develop. - Hotfix branches are merged into both
mainanddevelop. - Release branches are merged into
mainand tagged. They can also be merged back intodevelopif necessary.
Branch Policies
We've configured branch policies for main and develop to ensure:
- Minimum one code reviewer.
- All build and test policies pass.
- No direct commits; only pull requests are allowed.
Tools and Commands
You'll be primarily using git commands to manage branches. Here's a quick refresher:
- Create a new branch:
git checkout -b <branch-name> - Switch to an existing branch:
git checkout <branch-name> - Update your local branches:
git fetch origin - Delete a local branch:
git branch -d <branch-name>
Conclusion
Following this branching strategy will help maintain an efficient, organized, and conflict-free codebase. Please adhere to this strategy for a consistent development experience across the team.
For more details about version control, refer to our Version Control page.
Feel free to contribute to this document to keep it updated and relevant.
Azure DevOps Repos
Introduction
Azure DevOps Repos provide a secure, enterprise-grade, and integrated version control for your codebase. In the Alliance Business Suite (ABS) development cycle, we use Azure DevOps Repos to store our code, manage pull requests, and control versioning. This document outlines how to effectively use Azure DevOps Repos for your work within ABS.
Repository Structure
Our main repository is structured as follows:
main: The production-ready version of the application.develop: The staging branch containing features that are under review.- Personal branches: Every developer can have a personal branch named after themselves for work that doesn't directly relate to current feature development.
Setting up SSH Authentication
SSH provides a secure way to access your repositories. To set up SSH authentication:
- Open a command prompt and run
ssh-keygen -t rsa -b 4096 -C "your-email@example.com". - Follow the on-screen instructions to generate the SSH keys.
- Open the SSH public key file (commonly
id_rsa.pub) with a text editor and copy its content. - Go to Azure DevOps, and navigate to
User settings > SSH public keys. - Click
+ New Key, paste your copied SSH public key, and save.
Now you should be able to clone, pull, and push to Azure DevOps Repos without entering your username and password each time.
Pull Requests (PRs)
Pull Requests are the primary mechanism by which code changes are reviewed and added to the main repository. A PR should be reviewed by at least one other team member before being merged.
Creating a Pull Request
- Go to Azure DevOps and navigate to
Repos > Pull Requests. - Click
New Pull Request. - Select the source (your feature branch) and the target branch (
developormain). - Fill in the PR details and create the pull request.
Reviewing a Pull Request
- Go to
Repos > Pull Requestsin Azure DevOps. - Select the pull request you wish to review.
- Review the code changes and either approve or request changes.
Code Reviews
Code reviews are mandatory for every pull request. You can add reviewers under the Reviewers section while creating a pull request. Azure DevOps also supports inline comments and a rich set of annotations to aid in the review process.
Policies and Permissions
-
Branch Policies: We have set up specific branch policies for
mainanddevelopto ensure code quality. This includes a minimum number of reviewers and passing build checks. -
Access Permissions: Permission levels are set according to roles. For example, only certain team members can merge into
main.
Additional Features
- Wikis: Azure DevOps also offers a Wiki feature which we use for documentation.
- Tags: Utilize tags to mark important points in the repository’s history, like software versions or milestones.
Conclusion
Azure DevOps Repos is a robust tool that integrates seamlessly with our development cycle. Adhering to the guidelines outlined in this document ensures a smoother, more secure development process.
For more information on other DevOps practices, please refer to the Development Guidelines.
Feel free to contribute to this document to keep it updated and relevant.
Testing and Quality Assurance (QA) at Alliance Business Suite 🚀🔍🛡️
Hello, revered artisans of the Alliance Business Suite! In this kingdom of code, quality reigns supreme. This guide aims to arm you with the techniques and tools necessary for a gallant quest in testing and Quality Assurance (QA).
From fledgling junior developers to the wise, old senior devs, this page is your enchanted scroll of wisdom. Found a hidden gem of knowledge or see room for improvement? Contribute away! We're all ears (and eyes 👀) for your insights.
Table of Contents
- Introduction
- Our Testing Arsenal
- Functional Testing
- Exploratory Testing
- Performance Testing
- Quality Assurance
- Best Practices
- Contribution
Introduction 🌟
Quality is not an act; it's a habit! In the Alliance Business Suite, we're in the business of crafting legendary software, and our testing game is strong. 🛡️🗡️
Our Testing Arsenal 🛠️
- Unit Testing: MSTest
- Behavior-Driven Development (BDD): ABS.SnapBind, SpecFlow
- Functional Testing: SpecFlow
- Exploratory Testing: Manual methods
- Performance Testing: Siege
Functional Testing 🎯
For functional testing, we trust SpecFlow. SpecFlow allows us to write human-readable descriptions of software behaviors without detailing how that functionality is implemented.
How to Use SpecFlow
- Installation: Install the SpecFlow extension from the Visual Studio marketplace.
- Writing Tests: Create a new SpecFlow feature file and define your test cases using Gherkin language.
Feature: Login Feature Scenario: Successful Login Given the login page is open When the user enters correct credentials Then the dashboard page should be shown - Running Tests: Tests will appear in your Test Explorer, ready to be executed.
Exploratory Testing 🔍
Exploratory testing is our secret sauce. It's an ad-hoc approach, where we let our test engineers loose on the application, like knights on a treasure hunt. The goal is to discover uncharted territories in our application that might need a closer look.
Tips for Effective Exploratory Testing
- Touring: Familiarize yourself with the application's landscape.
- Take Notes: Document your findings for detailed bug reporting.
- Use Tools: Browser developer tools are your best friends for client-side debugging.
Performance Testing ⚙️
To test the mettle of our application under stress, we use Siege. Siege is a powerful tool that allows us to measure code execution time, simulate multiple users, and analyze memory usage.
How to Use Siege
- Installation: Download and install Siege from the official website.
- Configuration: Edit the
siegercfile to match your testing environment. - Running Tests: Use the command line to run your Siege tests. For example,
siege -c 25 -r 10 https://absuite.net.
Quality Assurance 🛡️
QA is not just about finding bugs; it's about creating a culture of excellence.
QA Techniques
- Peer Reviews: Each piece of code is reviewed by at least one other developer.
- Automated Testing: Our CI/CD pipeline automatically runs a suite of tests before deployment.
- Manual Testing: The QA team performs manual checks to catch any elusive bugs.
Best Practices 🏆
- Write Tests Early: Early in the development cycle is the best time to write tests.
- Be Comprehensive: Cover as many edge cases as you can.
- Keep It Simple: Tests should be easy to read and understand.
- DRY (Don't Repeat Yourself): Reuse test code whenever possible.
Filing Bugs Using Azure DevOps 🐞🛠️
Ah, the infamous bug! 🐜 A foe we've all crossed swords with at some point. But worry not, champions of the Alliance Business Suite. Azure DevOps is our trusty sidekick in bug tracking and management.
Why Azure DevOps?
Azure DevOps offers an end-to-end solution that aligns perfectly with our Cloud-First, DevOps-First mantra. With its Work Item Tracking system, we can easily manage, track, and prioritize bugs, linking them directly to code changes and deployments.
How to File a Bug 📝
Step 1: Accessing the Work Items Tab
- Open the Azure DevOps Project for the Alliance Business Suite.
- Navigate to the "Boards" tab and select "Work Items".
Step 2: Creating a New Bug Item
- Click on the "New Work Item" button, usually located at the top right corner.
- From the dropdown, select "Bug".
Step 3: Filling in the Details 🕵️♀️
-
Title: Create a descriptive but succinct title.
- Bad Example: "It doesn't work"
- Good Example: "Login fails when password contains special characters"
-
Description: Describe the bug in detail, including what you expected to happen and what actually happened. Attach screenshots or logs if possible.
-
Repro Steps: Enumerate the steps to reproduce the bug. Be as detailed as possible.
1. Navigate to login page 2. Enter username 'JohnDoe' 3. Enter password 'Pa$$w0rd!' 4. Click on 'Login' button -
Severity: Indicate how harmful this bug is to the project.
- Options usually range from "Critical" to "Low".
-
Area and Iteration Path: If applicable, specify the area of the software where the bug occurs and the iteration path for when this bug should be addressed.
-
Assigned To: Assign the bug to a team member for fixing or leave it unassigned for triaging.
Step 4: Save and Share 📤
- Click the "Save" or "Save & Close" button to log the bug.
- Once saved, a unique ID is generated for the bug. Share this ID with your team for easy tracking.
Pro Tips 🌟
- Link Related Work Items: If this bug is related to any user story, task, or other bug, make sure to link them.
- Tag It: Use tags like "UI", "backend", "urgent", etc., to easily filter and categorize bugs.
- Use Templates: For common types of bugs, create a template to save time.
Filing bugs is a team sport, people! 🏆 Let's make sure to log them clearly and concisely, setting the stage for quicker resolutions and a stronger, more reliable Alliance Business Suite. 🛡️🗡️
Feel free to contribute any tips or tools you use for bug tracking in Azure DevOps. Together, we can compile the ultimate bug-slaying guide. 😎🚀
Contribution 💡
Contributions are the lifeblood of this guide. Feel empowered to add your two cents, and make sure to check our Engineering Handbook's contribution guidelines.
Saddle up, brave devs! The journey to code excellence awaits. 🚀🌈🏆🛡️
MSTest
ABS.SnapBind
SpecFlow
Azure DevOps Test Plans
DevOps for Alliance Business Suite 🚀
Introduction
Continuous Integration/Continuous Deployment (CI/CD) is the backbone of modern DevOps environments. This page serves as the definitive guide for the CI/CD practices followed by the Alliance Business Suite (ABS) engineering team.
Objectives 🎯
- Ensure rapid and reliable code changes.
- Automate the software delivery process.
- Enforce code quality and testing standards.
Tools Used 🛠️
- Azure DevOps: For orchestrating our CI/CD pipeline.
- GitHub: Source code repository.
- MSTest and ABS.SnapBind: For automated testing.
- Azure Cloud: Deployment environment.
Pipeline Overview 📋
Continuous Integration
- Code Commit: Developers commit their changes to GitHub.
- Automated Build: Azure DevOps triggers an automated build and runs unit tests.
- Code Review: Team reviews the code for quality.
- Merge: Code is merged into the main branch.
Continuous Deployment
- Automated Testing: MSTest and ABS.SnapBind run integration and end-to-end tests.
- Staging: Code is deployed to a staging environment.
- Manual Review: The team reviews the staging environment.
- Production Deployment: Code is deployed to the production environment.
Best Practices 🎩
Coding
- Code Quality: Always maintain high-quality code. Low-quality code will not pass the automated checks.
Testing
- Comprehensive Tests: Write unit, integration, and E2E tests for every new feature and bug fix.
Deployment
- Immutable Infrastructure: Always provision new infrastructure for each deployment, rather than updating existing resources.
Common Issues and Troubleshooting 🚨
- Failed Tests: Check the error logs for specifics. A failed test will block the pipeline.
- Staging Issues: Always verify on staging before pushing to production.
Monitoring and Reporting 📊
- New Relic: For performance monitoring.
- Azure Monitoring: For system and application insights.
Conclusion 🏁
This CI/CD guide should act as a playbook for anyone involved in the software delivery process for the Alliance Business Suite. Automation, reliability, and speed are the tenets of our pipeline.
Got an idea to improve our CI/CD process? Feel free to contribute to this guide. Your input is highly valuable! 😄
For more details, consult our official Azure DevOps documentation.
Let's build something awesome—automatically! 🚀
Azure DevOps Pipelines
Azure DevOps Pipelines Guidelines for Alliance Business Suite Engineering
Overview
Azure DevOps provides an end-to-end DevOps toolchain for developing and deploying software. In the context of Alliance Business Suite (ABS), we heavily utilize Azure DevOps Pipelines for our CI/CD (Continuous Integration/Continuous Deployment) operations. This guide aims to walk you through the basics of setting up and configuring pipelines tailored to the ABS ecosystem.
Table of Contents
- Introduction
- Getting Started
- Creating a New Pipeline
- Understanding YAML
- Variables
- Stages, Jobs, and Steps
- Triggers
- Branch Policies
- Artifact Staging
- Best Practices
- Additional Resources
Introduction
For those new to Azure DevOps, Pipelines is a cloud service that you can use to automatically build and test your code project and make it available to other users.
Getting Started
-
Navigate to ABS Azure DevOps Project: Access our ABS Azure DevOps project by following this link.
-
Go to Pipelines: On the left sidebar, click on
Pipelines.
Access to Pipeline ID 19
To directly navigate to the specific pipeline with ID 19, you can use this link.
Creating a New Pipeline
- New Pipeline: Click on
New Pipelinein the Pipelines section. - Source Control: Choose the repository where your code resides.
- Configuration: Select a pipeline template or configure it using YAML.
Understanding YAML
YAML is a human-readable data serialization format. In Azure Pipelines, YAML is used to define the pipeline steps.
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo Hello, world!
Variables
You can define variables to make your pipelines easier to maintain and understand.
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
Stages, Jobs, and Steps
Pipelines are organized into stages, jobs, and steps.
- Stages: A division within a pipeline, containing one or more jobs.
- Jobs: A series of steps run by an agent.
- Steps: Individual tasks that run commands, scripts, or actions.
Triggers
Pipelines can be triggered manually, through code commits, or via scheduled runs.
trigger:
- master
Branch Policies
To protect important branches, consider applying branch policies like requiring a pull request review before merging.
Artifact Staging
After the build process, you'll usually want to archive your build output (artifacts) for deployment. Azure Pipelines allows easy staging of these artifacts.
Best Practices
- Reuse YAML templates for common build configurations.
- Make use of caching to speed up your pipelines.
- Limit the scope of secrets and environment variables to only the stages and jobs that require them.
Additional Resources
For more specific queries and deeper understanding, feel free to reach out on our Engineering Team's Teams Channel.
Release Strategies for Alliance Business Cloud
Introduction
Welcome to the comprehensive guide on release strategies for Alliance Business Cloud (ABC). Utilizing Plesk and IIS as our primary deployment and hosting platforms, this guide will walk you through the approaches to software releases that minimize risks and optimize efficiency. Following these strategies will help the engineering team at Alliance Business Suite to ensure the smooth roll-out of features and updates to our cloud environment.
Objectives
- Gain an understanding of the key release strategies.
- Learn how to implement each strategy on Plesk and IIS.
- Choose the right release strategy based on the project needs.
Key Release Strategies
1. Blue-Green Deployment
Overview: Two identical environments ("Blue" and "Green") are set up to switch between for releases.
Implementation on Plesk and IIS
- Create two environments (e.g., Blue and Green) on Plesk.
- Deploy the new version to the inactive environment (say, Green).
- Perform tests on Green.
- Switch the active domain to Green using IIS.
2. Canary Releases
Overview: Release the new feature to a subset of users before making it available to everyone.
Implementation on Plesk and IIS
- Create a subdomain in Plesk for the canary release.
- Deploy the new features to this subdomain.
- Use IIS URL Rewrite rules to divert a percentage of traffic to the canary release.
3. Rolling Deployment
Overview: Incrementally replace instances of the previous version with the new version.
Implementation on Plesk and IIS
- Use Plesk to set up multiple instances of the same application.
- Gradually replace older instances with the new version.
- Use IIS to manage load balancing across instances.
4. Feature Flags
Overview: Deploy features in a dormant state and activate them later.
Implementation on Plesk and IIS
- Use a feature flagging library within your application code.
- Deploy as normal via Plesk.
- Activate the feature through the flag when ready.
Pre-Release and Post-Release Best Practices
Pre-Release Checklist
- Testing: Ensure all automated tests are passed.
- Backup: Take a full backup of the current production environment.
- Communication: Notify all stakeholders about the upcoming release.
Post-Release Checklist
- Monitoring: Observe system behavior through Plesk and IIS logs.
- Rollback Plan: Have a rollback plan in case of failure.
- Feedback Loop: Collect feedback for continuous improvement.
Common Issues and Troubleshooting
- Failed Release: Use Plesk backups for immediate rollback.
- Performance Degradation: Check IIS logs and metrics.
- Broken Features: Investigate using Plesk’s debug toolset and IIS diagnostics.
Conclusion
Each release strategy comes with its advantages and drawbacks. The key is to choose the one that fits your project’s needs and risk profile. By understanding and effectively implementing these release strategies on Plesk and IIS, we aim to make software delivery a robust, predictable, and streamlined process.
For more detailed guidelines and procedures, consult our Deployment Guide and Error Handling Practices.
Happy Releasing! 🚀
Deploying to Alliance Business Cloud 🌩️
Introduction
Welcome, engineers of the Alliance Business Suite! This guide will walk you through the process of deploying your applications to our infrastructure, the Alliance Business Cloud (ABC). Our ABC infrastructure is built on top of Plesk and Azure Cloud to offer a robust, secure, and scalable environment for our services.
Objectives 🎯
- Understand ABC infrastructure components.
- Learn to deploy applications using Plesk and Azure.
- Grasp best practices for deployments.
Technology Stack 🛠️
- Plesk: For managing web operations.
- Azure Cloud: For cloud resources and services.
- Azure DevOps: For CI/CD pipelines.
- PowerShell: For scripting and automation.
Before You Start 🚦
- Check Dependencies: Ensure that your application's dependencies match the technology stack mentioned.
- Configuration Files: Keep your configuration files ready, including database credentials from HashiCorp Vault.
- Test, Test, Test: Make sure all automated tests (MSTest, ABS.SnapBind, SpecFlow) are successful.
Deployment Steps 🛠️
Pre-Deployment Checklist ✔️
- Backup: Always take a backup of the current production environment.
- Update Plesk: Ensure that Plesk is updated to the latest version.
- Resource Allocation: Check CPU, memory, and disk usage in Azure to ensure sufficient resources.
Using Plesk for Deployment 🖥️
- Login: Access ABC through the official link.
- Select Subscription: Go to
Websites & Domainsand select your subscription. - Git Deployment: Under the
Gitsection, choosePullto get the latest version from your repository. - Database Configuration: Navigate to
Databasesand set up the database connection using credentials from HashiCorp Vault. - Deployment Script: Use the
Plesk Deployment Scriptoption to run custom PowerShell scripts, if necessary.
Using Azure App Services for Deployment ☁️
- Azure Portal: Log in to the Azure Portal.
- Navigate: Go to
App Servicesand find your project. - Deployment Center: Use Azure DevOps as the source and configure build and release pipelines.
- Resource Checks: Monitor the resource usage, scale up or down as needed.
Post-Deployment ✔️
- Verify: Ensure that the application is working as expected in the production environment.
- Monitoring: Set up necessary alerts and monitoring through New Relic and Grafana.
Best Practices 🎩
- Zero Downtime: Aim for zero downtime during deployments.
- Rollback Plan: Always have a rollback plan.
- Documentation: Document any custom configurations or settings.
Common Troubleshooting 🚨
- 500 Internal Server Error: Check server logs in Plesk.
- Resource Limits: If the application is slow, you might need to allocate more resources in Azure.
- Database Connection Issues: Ensure that HashiCorp Vault is up and running.
Conclusion 🏁
Congrats! You're now equipped to deploy applications to the Alliance Business Cloud. Remember, the cloud is not in the sky; it's in our data centers, and it’s our shared responsibility to keep it nimble and secure.
Think you can enhance this guide? Your contributions are always welcome! 😄
For more details, please refer to our official documentation.
Happy Deploying! 🚀
Database Management Guide for Alliance Business Suite
Introduction
Welcome to the database management guide specifically designed for Alliance Business Suite (ABS). In this guide, we'll go through how ABS integrates with various database providers and how Vault is used for automated credential rotation.
Supported Database Providers
- MySQL
- MS SQL
- PostgreSQL (PGSQL)
- Oracle
Using Vault for Secure Credential Rotation
About Vault in ABS
Alliance Business Suite leverages Vault for securing and rotating database credentials. The Vault server is hosted at https://vault.absuite.net.
Initial Configuration Steps
-
Access the Vault Server: Open your web browser and navigate to https://vault.absuite.net:8200/.
-
Login to Vault: Use your Corporate credentials to log in. If you don't have them, please contact your system administrator.
-
Navigate to the ABS Secrets Engine: Once logged in, find the section dedicated to Alliance Business Suite.
-
Configure ABS to Use Vault: In your Alliance Business Suite configurations, set the Vault server URL to
https://vault.absuite.net.
Automated Credential Rotation
Once Vault is set up, ABS will automatically perform credential rotations at intervals defined in your Vault policies. This ensures that your database credentials remain secure without manual intervention.
Configuring Database Providers
ABS uses the suitesettings.json file to configure database providers. You don't need to install any additional providers.
Here's an example configuration for each supported provider:
MySQL
{
"DatabaseProviders": {
"MySQL": {
"ConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
}
}
}
MS SQL
{
"DatabaseProviders": {
"MsSQL": {
"ConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"
}
}
}
PostgreSQL
{
"DatabaseProviders": {
"PGSQL": {
"ConnectionString": "Host=myServerAddress;Database=myDataBase;Username=myUsername;Password=myPassword;"
}
}
}
Oracle
{
"DatabaseProviders": {
"Oracle": {
"ConnectionString": "User Id=myUsername;Password=myPassword;Data Source=myOracleDB;"
}
}
}
Conclusion
This guide provides an overview of database management in the Alliance Business Suite, with specific emphasis on Vault for credential management. For more advanced configurations or troubleshooting, please refer to the official documentation.
By adhering to this guide, you are ensuring a more secure and robust database management system for your applications running on Alliance Business Suite.
MySQL
MSSQL
PGSQL
ORACLE
MongoDB
Infrastructure for Alliance Business Suite
The infrastructure supporting the Alliance Business Suite is a critical component of its reliability, performance, and security. In this section, we'll provide an overview of the key infrastructure elements that make up the Alliance Business Suite environment.
Cloud Infrastructure
Alliance Business Cloud
The Alliance Business Suite is hosted on Alliance Business Cloud, a robust and highly scalable cloud platform designed to support ABS applications. Alliance Business Cloud provides the necessary infrastructure and services to ensure the availability and scalability of your ABS applications.
Development Stack
.NET 7.0
The core backend technology of the Alliance Business Suite is .NET 7.0, a powerful and versatile framework for building web applications, APIs, and more. It forms the foundation for the server-side components of ABS.
Node.JS, React+Redux, TypeScript, Bootstrap
On the frontend, ABS utilizes a modern tech stack, including Node.js, React with Redux for state management, TypeScript for static typing, and Bootstrap for responsive web design. These technologies enable the creation of dynamic and user-friendly web interfaces.
Testing Frameworks
MSTest
MSTest is the chosen testing framework for ABS, providing a reliable and efficient way to perform unit and integration testing for your applications.
ABS.SnapBind and SpecFlow
ABS.SnapBind is used as a SpecBind replacement library for behavior-driven development (BDD) and end-to-end testing. SpecFlow enhances collaboration between developers and non-developers through easily readable specifications.
Credential Management
Vault
Vault is employed for secure credential management, ensuring sensitive information such as database access credentials are stored and managed in a highly secure manner. It offers automated credential rotation, enhancing security.
Web Hosting
Plesk
Plesk is used for web hosting management, providing a user-friendly interface to manage web applications and services. It simplifies server and website management tasks, making it easier to deploy and maintain ABS.
Automation and Scripting
PowerShell with posh-git and oh-my-posh
PowerShell, with the enhancements provided by posh-git and oh-my-posh, is utilized for automation, scripting, and command-line operations. This powerful combination streamlines various tasks within the ABS environment.
Collaboration and Communication
Microsoft Teams
Microsoft Teams serves as a hub for collaboration and communication among ABS development and operations teams. It facilitates real-time communication, file sharing, and collaboration on projects.
Monitoring and Performance
NewRelic
NewRelic is used for monitoring the performance of ABS applications. It provides insights into application performance, helping to identify and resolve issues quickly.
Database Drivers
ABS contains drivers for various databases, ensuring compatibility and seamless integration with different database management systems:
- MySQL
- MSSQL (Microsoft SQL Server)
- PGSQL (PostgreSQL)
- ORACLE
- MongoDB (for non-relational data)
These drivers enable ABS to work with a wide range of database systems to meet the diverse needs of its users.
Conclusion
The infrastructure components mentioned above collectively form the robust foundation that supports the Alliance Business Suite. They contribute to the reliability, scalability, and security of your ABS applications, ensuring they perform optimally and meet the demands of modern business environments.
For detailed setup and configuration instructions related to these infrastructure components, refer to the respective sections of the official Alliance Business Suite documentation.
To learn more about Alliance Business Suite and its capabilities, visit the official documentation.
This concludes the overview of the infrastructure that powers the Alliance Business Suite on Alliance Business Cloud.
Alliance Business Suite and Azure Cloud
Azure Cloud is a powerful cloud computing platform offered by Microsoft. This page will guide you through the process of using Azure Cloud to deploy and manage your Alliance Business Suite (ABS) applications in the cloud.
Introduction to Azure Cloud
Azure Cloud, commonly referred to as Microsoft Azure, is a comprehensive cloud platform that provides a wide range of cloud services, including virtual machines, databases, AI and machine learning, and more. It is a scalable and flexible cloud solution that allows ABS applications to run efficiently and securely.
Prerequisites
Before you begin, ensure you have the following prerequisites in place:
-
Azure Cloud Subscription: You should have access to an Azure Cloud subscription. If you don't have one, you can sign up for a free trial or contact your organization's Azure administrator.
-
Alliance Business Suite Application: Make sure you have a fully developed and tested ABS application ready for deployment.
Deploying ABS with Azure Cloud
Follow these steps to deploy your ABS application using Azure Cloud:
1. Access Azure Portal
-
Open your web browser and navigate to the Azure Portal.
-
Sign in to your Azure Cloud account using your credentials.
2. Create a Virtual Machine (VM)
- In the Azure Portal, create a virtual machine to host your ABS application. Configure the VM's specifications, including the operating system and resources.
3. Configure Networking
- Set up networking configurations for your VM. This includes defining inbound and outbound rules for communication, setting up virtual networks, and configuring security groups.
4. Install Web Server
- Install a web server (e.g., Internet Information Services - IIS) on your virtual machine. This server will be responsible for hosting your ABS application.
5. Upload Your ABS Application
- Use tools like FTP or Azure File Storage to upload your ABS application's files to your VM.
6. Set Up Database
- Create a database in Azure SQL Database or another suitable Azure database service to support your ABS application's data storage needs.
7. Configure Web Server
- Configure the web server (e.g., IIS) on your VM to serve your ABS application. This includes specifying the document root and application settings.
8. Set Up Database Connection
- Modify your ABS application's configuration to connect to the Azure database you created earlier. Use the database connection string provided by Azure.
9. Secure Your Application
- Implement security measures such as Azure Security Center, identity and access management, and encryption to secure your ABS application.
10. Test Your ABS Application
- Access your ABS application through the public IP address or domain associated with your Azure VM. Ensure that everything is functioning as expected.
Advanced Azure Cloud Features
Azure Cloud offers various advanced features that can enhance your ABS hosting experience:
-
Scalability: Use Azure's auto-scaling and load balancing features to handle increased traffic and ensure high availability.
-
Data Services: Leverage Azure's data services for analytics, big data, and machine learning to enhance your ABS application.
-
Monitoring and Analytics: Use Azure Monitor and Azure Application Insights to gain insights into the performance of your ABS application.
Conclusion
Azure Cloud provides a robust and scalable environment for hosting Alliance Business Suite applications. By following this guide and leveraging Azure Cloud services, you can deploy and manage your ABS applications in the cloud with confidence.
For more advanced configurations and troubleshooting, refer to the official Azure documentation or consult with your Azure cloud administrator.
This concludes the Azure Cloud page for the Alliance Business Suite engineering handbook.
Alliance Business Suite and Plesk (Alliance Business Cloud)
Alliance Business Cloud (https://cloud.absuite.net) is the instance of Plesk used for hosting Alliance Business Suite (ABS) applications. This page will guide you through the process of using Alliance Business Cloud (Plesk) to manage and host your ABS applications.
Introduction to Alliance Business Cloud (Plesk)
Alliance Business Cloud, powered by Plesk, is a user-friendly web hosting control panel that simplifies website and server management. It provides a web-based interface for tasks such as setting up websites, configuring email services, and managing databases. ABS applications can be hosted on servers managed through Alliance Business Cloud, making it a convenient choice for ABS application deployment.
Prerequisites
Before you begin, ensure you have the following prerequisites in place:
-
Alliance Business Cloud Access: You should have access to the Alliance Business Cloud (https://cloud.absuite.net) instance. You will need the login credentials provided for this environment.
-
Alliance Business Suite Application: Make sure you have a fully developed and tested ABS application ready for deployment.
Deploying ABS with Alliance Business Cloud (Plesk)
Follow these steps to deploy your ABS application using Alliance Business Cloud:
1. Access Alliance Business Cloud (Plesk)
-
Open your web browser and navigate to https://cloud.absuite.net.
-
Log in to Alliance Business Cloud using your provided credentials.
2. Create a New Subscription
- In the Alliance Business Cloud control panel, create a new subscription or domain, which will host your ABS application. Specify the domain name and other relevant details.
3. Set Up a Database
- In Alliance Business Cloud (Plesk), create a new database for your ABS application. Ensure that you have the necessary database credentials handy.
4. Upload Your ABS Application
- Use the file manager in Alliance Business Cloud (Plesk) to upload your ABS application's files to the domain or subscription you created. Make sure to place the files in the correct directory.
5. Configure Web Settings
- In Alliance Business Cloud (Plesk), configure the web settings for your ABS application. Ensure that you specify the correct document root and other web-related settings.
6. Set Up Database Connection
- Modify your ABS application's configuration to connect to the database you created in Alliance Business Cloud (Plesk). Use the database credentials you set up earlier.
7. Configure SSL/TLS (Optional)
- If you want to secure your ABS application with SSL/TLS, you can use Alliance Business Cloud (Plesk) to install and configure SSL certificates for your domain.
8. Test Your ABS Application
- Access your ABS application via the domain or subscription URL in Alliance Business Cloud (Plesk) to ensure that everything is functioning as expected.
Advanced Alliance Business Cloud (Plesk) Features
Alliance Business Cloud (Plesk) offers various advanced features that can enhance your ABS hosting experience:
-
Backup and Restore: Use Alliance Business Cloud's backup and restore features to protect your ABS application and data.
-
Security: Implement security measures provided by Alliance Business Cloud (Plesk) to protect your ABS application from threats.
-
Scaling: As your ABS application grows, consider scaling your Alliance Business Cloud hosting environment to accommodate increased traffic and resource demands.
Conclusion
Alliance Business Cloud, powered by Plesk, simplifies the process of hosting and managing Alliance Business Suite applications. By following this guide and using Alliance Business Cloud (Plesk), you can deploy your ABS application with ease, ensuring that it runs smoothly and securely.
For more advanced configurations and troubleshooting, refer to the official Alliance Business Cloud (Plesk) documentation or consult with your hosting provider.
This concludes the Alliance Business Cloud (Plesk) page for the Alliance Business Suite engineering handbook.
Alliance Business Suite and IIS
The Alliance Business Suite (ABS) is designed to work seamlessly with Internet Information Services (IIS), Microsoft's web server software. In this guide, we'll walk you through the essential steps to configure IIS for hosting your ABS applications.
Introduction to IIS
Internet Information Services (IIS) is a web server software package developed by Microsoft. It's a robust and versatile platform for hosting web applications, websites, and services. ABS leverages IIS to serve web applications and provide a secure and scalable web hosting environment.
Prerequisites
Before configuring IIS for your ABS applications, ensure that you have the following prerequisites in place:
-
Windows Server: You should have a Windows Server machine where you plan to host your ABS applications. IIS is typically used on Windows Server editions.
-
ABS Application: You should have an Alliance Business Suite application ready for deployment. Make sure your application is built and tested.
Configuring IIS for ABS
Follow these steps to configure IIS for hosting your ABS application:
1. Install IIS
If IIS is not already installed on your Windows Server, you can install it by following these steps:
- Open the "Server Manager" on your Windows Server.
- Click on "Add roles and features."
- Select the "Web Server (IIS)" role and follow the installation wizard to complete the installation.
2. Create a New Site
Once IIS is installed, you can create a new website for your ABS application:
- Open the "Internet Information Services (IIS) Manager."
- In the Connections pane on the left, expand your server's node.
- Right-click on "Sites" and choose "Add Website."
3. Configure the Website
Configure the website settings as follows:
- Site Name: Give your website a name (e.g., ABSApp).
- Physical Path: Set the path to your ABS application's root folder.
- Binding: Specify the binding information (e.g., IP address and port) for your website.
- Host Name: If you want to use a specific domain name, enter it here.
4. Application Pool Configuration
Create a new application pool for your ABS application:
- In the IIS Manager, go to "Application Pools."
- Right-click and choose "Add Application Pool."
- Give it a name (e.g., ABSAppPool) and choose the .NET version appropriate for your ABS application.
5. Assign the Application Pool
Assign the newly created application pool to your ABS website:
- In the IIS Manager, go to your website's "Advanced Settings."
- Under the "General" section, select the application pool you created earlier.
6. Test Your ABS Application
Once configured, you can test your ABS application by navigating to the website's URL in your web browser. Make sure everything is working as expected.
Additional Considerations
SSL/TLS Configuration
For enhanced security, consider configuring SSL/TLS certificates for your ABS applications in IIS. This ensures that data exchanged between clients and your server is encrypted.
Scaling and Load Balancing
As your ABS application grows, you may need to implement load balancing and scaling strategies in IIS to handle increased traffic and ensure high availability.
Conclusion
Configuring IIS for hosting Alliance Business Suite applications is a fundamental step in deploying ABS solutions. By following this guide, you'll have your ABS application up and running in an IIS environment, ready to serve your users.
For more advanced configurations or troubleshooting, refer to the official IIS documentation or consult with your server administration team.
This concludes the IIS page for the Alliance Business Suite engineering handbook.
PowerShell and Desired State Configuration (DSC) for Infrastructure 🛠️
Introduction 🌟
Greetings, Code Wizards! Today, we're diving into one of the mystical arts of DevOps: PowerShell with Desired State Configuration (DSC). For those new to the game, PowerShell DSC is a management platform in PowerShell that helps us bring scalable, robust infrastructure straight to the Alliance Business Suite (ABS). Get ready to automate all the things!
The Tech Stack 🛠️
- PowerShell: Our go-to scripting language for automating tasks.
- PowerShell DSC: An extension of PowerShell aimed at automating the setup of Windows and Linux machines.
Extensions 📲
- posh-git: A set of PowerShell scripts which provide Git/PowerShell integration.
- oh-my-posh: A prompt theming engine for those who like their console to have some pizzazz!
Why PowerShell DSC? 🤔
- Consistency: Maintain a uniform configuration across multiple nodes.
- Scalability: Ideal for handling small to large infrastructure setups.
- Ease of Use: Since it's PowerShell-based, you get to work in a language you're already comfortable with.
How It Works 🔧
Configuration Scripts 📜
DSC uses declarative PowerShell scripts where you specify what you want to accomplish rather than how to accomplish it.
Example:
Configuration WebServerSetup {
Node 'WebServer' {
WindowsFeature 'WebServerRole' {
Ensure = 'Present'
Name = 'Web-Server'
}
}
}
Pull and Push Modes 🔄
- Push Mode: Manually send configurations to target nodes.
- Pull Mode: Nodes automatically fetch configurations from a central location.
Key Strategies for ABS Infrastructure 🏗️
1. Automating Server Setups 🔄
- Use DSC to install necessary software and services like .NET 7.0, Node.js, etc., on new machines.
2. Managing Security Policies 🛡️
- Apply security policies, configure firewalls, and install security software like BitDefender GravityZone and Windows Defender.
3. Continuous Monitoring 📊
- Use PowerShell scripts to fetch performance data and send it to monitoring tools like New Relic and Grafana.
4. Cloud Infrastructure as Code 🌩️
- With Azure Cloud as our playground, DSC helps us keep our cloud configurations consistent and version-controlled.
Best Practices 🏆
- Idempotence: Write scripts that are re-runnable without side effects.
- Version Control: Store your DSC configurations alongside your source code.
- Compliance Checks: Periodically test your nodes to ensure they comply with your configurations.
Resources 📚
Contribute! 🌱
Think we missed something? Feel free to add your two cents! Contributions are welcome and will be reviewed thoroughly.
So that's the scoop on PowerShell and DSC for ABS's infrastructure. May your scripts be ever-efficient and your configurations forever stable! 🧙♂️# PowerShell and Desired State Configuration (DSC) for Infrastructure 🛠️
Introduction 🌟
Greetings, Code Wizards! Today, we're diving into one of the mystical arts of DevOps: PowerShell with Desired State Configuration (DSC). For those new to the game, PowerShell DSC is a management platform in PowerShell that helps us bring scalable, robust infrastructure straight to the Alliance Business Suite (ABS). Get ready to automate all the things!
The Tech Stack 🛠️
- PowerShell: Our go-to scripting language for automating tasks.
- PowerShell DSC: An extension of PowerShell aimed at automating the setup of Windows and Linux machines.
Extensions 📲
- posh-git: A set of PowerShell scripts which provide Git/PowerShell integration.
- oh-my-posh: A prompt theming engine for those who like their console to have some pizzazz!
Why PowerShell DSC? 🤔
- Consistency: Maintain a uniform configuration across multiple nodes.
- Scalability: Ideal for handling small to large infrastructure setups.
- Ease of Use: Since it's PowerShell-based, you get to work in a language you're already comfortable with.
How It Works 🔧
Configuration Scripts 📜
DSC uses declarative PowerShell scripts where you specify what you want to accomplish rather than how to accomplish it.
Example:
Configuration WebServerSetup {
Node 'WebServer' {
WindowsFeature 'WebServerRole' {
Ensure = 'Present'
Name = 'Web-Server'
}
}
}
Pull and Push Modes 🔄
- Push Mode: Manually send configurations to target nodes.
- Pull Mode: Nodes automatically fetch configurations from a central location.
Key Strategies for ABS Infrastructure 🏗️
1. Automating Server Setups 🔄
- Use DSC to install necessary software and services like .NET 7.0, Node.js, etc., on new machines.
2. Managing Security Policies 🛡️
- Apply security policies, configure firewalls, and install security software like BitDefender GravityZone and Windows Defender.
3. Continuous Monitoring 📊
- Use PowerShell scripts to fetch performance data and send it to monitoring tools like New Relic and Grafana.
4. Cloud Infrastructure as Code 🌩️
- With Azure Cloud as our playground, DSC helps us keep our cloud configurations consistent and version-controlled.
Best Practices 🏆
- Idempotence: Write scripts that are re-runnable without side effects.
- Version Control: Store your DSC configurations alongside your source code.
- Compliance Checks: Periodically test your nodes to ensure they comply with your configurations.
Resources 📚
Contribute! 🌱
Think we missed something? Feel free to add your two cents! Contributions are welcome and will be reviewed thoroughly.
So that's the scoop on PowerShell and DSC for ABS's infrastructure. May your scripts be ever-efficient and your configurations forever stable! 🧙♂️
HashiCorp Vault Guide for Alliance Business Suite
HashiCorp Vault is a crucial component of the Alliance Business Suite's infrastructure, providing secure credential management and automation for various sensitive data. This guide will walk you through the setup and usage of HashiCorp Vault within the ABS environment.
Introduction to HashiCorp Vault
HashiCorp Vault is a secrets management platform that helps organizations secure, store, and control access to sensitive data such as API keys, passwords, certificates, and more. In the context of the Alliance Business Suite, Vault is used for securing and rotating database credentials, ensuring the highest level of security for your ABS applications.
Initial Configuration
Accessing the Vault Server
-
Open your web browser and navigate to the Vault server hosted at
https://vault.absuite.net. -
Log in to Vault using your credentials. If you don't have access, contact your system administrator to obtain the necessary permissions.
Configuring ABS to Use Vault
To configure Alliance Business Suite to use HashiCorp Vault for credential management, follow these steps:
-
Open the ABS configuration file (
suitesettings.json). -
Locate the section related to credential management or secrets storage.
-
Set the Vault server URL to https://vault.absuite.net.
-
Save the configuration file.++--
Note: In PowerShell, you can set the VAULT_ADDR environment variable using the Set-Item cmdlet. Here's how you can do it:
# Set the VAULT_ADDR environment variable
$env:VAULT_ADDR = "https://vault.absuite.ne:8200"
Once you've executed this command, the VAULT_ADDR environment variable will be set for the current PowerShell session, and you can use it in your script to interact with Vault at the specified address.
Automated Credential Rotation
One of the key benefits of using HashiCorp Vault is its ability to automate credential rotation. This process enhances security by regularly changing credentials for critical components such as database access. Vault will rotate credentials at intervals defined in your Vault policies, reducing the risk of unauthorized access.
Best Practices
Here are some best practices for using HashiCorp Vault effectively within the Alliance Business Suite:
- Regularly review and update Vault policies to align with your security requirements.
- Train your team on how to interact with Vault securely and efficiently.
- Monitor Vault's logs and audit trails to detect and respond to security events.
Conclusion
HashiCorp Vault is a fundamental component of the Alliance Business Suite's infrastructure, ensuring the highest level of security for your applications. By following this guide, you can configure and utilize Vault to its full potential, enhancing the security of your ABS environment.
For more advanced configurations, consult the official HashiCorp Vault documentation. If you encounter any issues or have specific questions related to Vault in ABS, refer to the ABS support resources for assistance.
This concludes the HashiCorp Vault guide for the Alliance Business Suite.
Monitoring and Logging Handbook for Alliance Business Suite
Overview
Monitoring and logging are crucial for maintaining high performance and reliability in our systems. This handbook outlines the Alliance Business Suite's standard practices and technologies for monitoring system health and application performance, as well as logging critical information for debugging and analytics.
Table of Contents
Why Monitoring and Logging?
Both monitoring and logging serve critical functions in a production environment:
- Early Detection of Issues: Real-time monitoring helps detect system inefficiencies and issues before they affect users.
- Debugging: Logs provide the data needed to diagnose and troubleshoot issues.
- Performance Tuning: Monitoring and logs help us understand how systems are performing and where bottlenecks occur.
- Audit and Compliance: Logs can be critical for audit trails and compliance with legal and business policies.
Technology Stack
We employ the following technology stack for our monitoring and logging needs:
- Monitoring Tools: NewRelic, Grafana
- Logging Tools: Stackify, Azure DevOps
- Official Resources
Monitoring
- Why: For real-time application and infrastructure monitoring.
- Tools: NewRelic for application monitoring, Grafana for custom dashboards.
- How-To Guide: Monitoring tools are integrated into our system. For application performance metrics, log in to the New Relic Dashboard.
- Learn More: New Relic Official Docs, Grafana Official Docs
Logging
- Why: To capture and store event and error data for debugging, analytics, and audits.
- Tools: Stackify for application-level logging, Azure DevOps for pipeline logging.
- How-To Guide: Logging is automatically configured in our development environment. To access logs, visit Azure DevOps Project.
- Learn More: Stackify Documentation, Azure DevOps Official Docs
Best Practices
- Continuous Monitoring: Always keep an eye on system health.
- Regular Log Reviews: Schedule regular reviews of logs to detect anomalies.
- Alerts: Set up alerts for critical events and performance metrics.
- Documentation: Document any special logging or monitoring requirements for new features or services.
Getting Started
- Check out the Engineering Handbook.
- Clone the Source Code.
For any queries or clarifications, please connect with the Engineering Team via Microsoft Teams.
Whether you are a junior or a senior developer, this handbook aims to provide you with all the necessary information to seamlessly integrate with Alliance Business Suite's monitoring and logging ecosystem. For further support, don't hesitate to reach out to the engineering team.
New Relic Monitoring in Alliance Business Suite
New Relic is a comprehensive monitoring and observability platform used within the Alliance Business Suite (ABS). This page provides an overview of New Relic's role in monitoring the performance and health of ABS applications.
Introduction to New Relic
New Relic is a widely recognized monitoring and observability solution designed to help organizations gain insights into the performance and behavior of their applications. Within the Alliance Business Suite, New Relic plays a vital role in ensuring the reliability, scalability, and optimal performance of ABS applications.
Key Features of New Relic Monitoring
Real-Time Performance Monitoring
New Relic provides real-time monitoring capabilities, allowing developers and operations teams to monitor the performance of ABS applications as they run in production. This includes tracking response times, error rates, and other key metrics.
Application Dependency Mapping
New Relic automatically maps the dependencies between various components of your ABS application. This visual representation helps identify bottlenecks and issues within the application's architecture.
Error Detection and Alerting
New Relic's error detection and alerting features notify you of any anomalies or errors in your ABS applications. This proactive approach enables rapid issue resolution, minimizing downtime and user impact.
Custom Dashboards and Insights
You can create custom dashboards and gain insights tailored to your ABS applications' specific needs. Visualize data, set up custom alerts, and track the performance of critical components.
Use Cases for New Relic in ABS
Performance Optimization
New Relic is instrumental in optimizing the performance of ABS applications. By identifying performance bottlenecks and areas for improvement, developers can enhance the user experience.
Troubleshooting and Debugging
When issues arise, New Relic provides valuable data for troubleshooting and debugging. It helps pinpoint the root cause of problems and facilitates faster resolution.
Capacity Planning
By analyzing historical performance data, New Relic assists in capacity planning. This enables organizations to scale their ABS applications effectively as user demand grows.
Integration with ABS Modules
New Relic seamlessly integrates with various ABS modules, ensuring that monitoring and observability are available for all aspects of your applications. Whether you're using ABS Content Portals (CMS) or ABS ContactSight (CRM), New Relic provides valuable insights.
Conclusion
New Relic is an essential tool in the Alliance Business Suite ecosystem, providing real-time monitoring and observability for ABS applications. By leveraging New Relic's features, ABS developers and operations teams can proactively address performance issues, ensure high availability, and deliver a superior user experience.
For in-depth documentation and tutorials on setting up and utilizing New Relic within the Alliance Business Suite, refer to the official ABS documentation.
This concludes the overview of New Relic monitoring in the Alliance Business Suite.
Grafana Guidelines for Alliance Business Suite Engineering
Overview
Grafana is a leading open-source platform for monitoring and observability. At the Alliance Business Suite (ABS), we use Grafana to visualize metrics, logs, and traces from multiple data sources. This guide outlines how to effectively use Grafana within our development ecosystem.
Table of Contents
- Getting Started
- Dashboard Configuration
- Data Sources
- Panels
- Alerting
- Best Practices
- Additional Resources
Getting Started
Installation
For local development, you can download Grafana and follow the installation instructions for your operating system.
Accessing Grafana in ABS Environment
- Navigate to the Grafana instance configured within our ABS environment (link to be provided by the system admin).
Logging In
- Use your ABS credentials to sign in.
Dashboard Configuration
Dashboards are collections of visualizations, panels, and data points that provide a unified view of different metrics and key performance indicators (KPIs).
Creating a Dashboard
- Click on the
+icon in the sidebar and selectCreate Dashboard. - Add panels and select the data source you'd like to visualize.
Best Practices
- Give your dashboard a meaningful name.
- Use folders to organize dashboards by team or project.
Data Sources
Grafana supports various data sources like MySQL, MSSQL, PGSQL, ORACLE, MongoDB, etc. As ABS contains drivers for these databases, it simplifies the integration.
Adding a Data Source
- Go to
Settings>Data Sources. - Click
Add data sourceand select from the available options.
Panels
Panels are the building blocks of Grafana and can be of different types: graphs, tables, maps, clocks, etc.
Creating a Panel
- Go to the dashboard where you want to add the panel.
- Click
Add Paneland choose the visualization type. - Configure the panel's query to fetch the data from your chosen data source.
Alerting
Grafana alerts notify you when specific conditions are met. Alerts can be sent to email, Slack, and other notification channels.
Creating an Alert
- Go to the panel you want to create an alert for.
- Click on the
Alerttab. - Set the conditions and configure your notification settings.
Best Practices
- Ensure that only relevant team members have access to sensitive or critical data.
- Regularly update Grafana to the latest version to benefit from new features and security patches.
- Make use of template variables for creating dynamic and reusable dashboards.
Additional Resources
For any questions, concerns, or contributions, you can reach out to the Engineering Team on the Engineering Team's Teams Channel.
Security Guidelines for Alliance Business Suite Development
Version: 1.1
Date: 28/08/2023
Security is a cornerstone of any reliable software, and this is especially true for the Alliance Business Suite. This guide outlines the essential security protocols and practices to be followed during development.
Table of Contents
- Introduction
- Access Control
- Secure Coding Practices
- Data Protection
- Auditing and Monitoring
- Security Testing
- Reporting Security Issues
Introduction
Ensuring the security of the Alliance Business Suite is a shared responsibility. Every developer is expected to adhere to the practices laid out in this guide to maintain the integrity, confidentiality, and availability of the platform.
Access Control
- Least Privilege Principle: Always operate under the least privilege principle. Don't request or use more permissions than necessary for a given task.
- Multi-Factor Authentication (MFA): MFA is required for accessing any secure or production environment related to the Alliance Business Suite.
- Remote Desktop Security: Always use secure channels and credentials while connecting to the Corporate Server via RDP.
Secure Coding Practices
- Code Reviews: Each pull request should be reviewed by at least one other developer with security in mind.
- Static Code Analysis: Use automated tools for analyzing the codebase to find security vulnerabilities.
- Dependency Scanning: Always scan dependencies for vulnerabilities.
- Avoid Hardcoding Credentials: Never hardcode sensitive information like passwords, API keys, or secret tokens.
Data Protection
- Encryption: Always use encryption for storing and transmitting sensitive data.
- Data Masking: Mask sensitive data in logs and debugging information.
- Data Access: Limit access to sensitive data to authorized personnel only.
Auditing and Monitoring
- Logs: Maintain detailed logs to monitor all access and modifications to sensitive data.
- Regular Audits: Perform regular security audits to identify vulnerabilities.
- Alerts: Configure and monitor alerts for any suspicious activities.
Security Testing
- Penetration Testing: Conduct penetration tests at regular intervals.
- Code Scanning Tools: Utilize automated tools for security checks.
- External Reviews: Consider third-party security assessments for critical modules.
Reporting Security Issues
If you discover a security issue, report it immediately to the security team. Never disclose the issue publicly until it is resolved.
GravityZone Handbook for Alliance Business Suite
Overview
Bitdefender GravityZone is an essential part of our cybersecurity infrastructure at Alliance Business Suite. This handbook aims to offer a comprehensive guide on how we utilize GravityZone to protect our IT assets and data, as well as ensuring secure and streamlined operations.
Table of Contents
- Why GravityZone?
- Technology Stack
- Getting Started
- Features
- Best Practices
- Troubleshooting
- Additional Resources
Why GravityZone?
GravityZone provides robust security solutions that include:
- Advanced Threat Protection
- Network Security
- Data Protection
- Real-time Monitoring
By using GravityZone, we ensure that all layers of our network are protected, thus enabling:
- Data Integrity
- Secure Transactions
- Compliance with Security Protocols
- Reduced Risk of Cyber Attacks
Technology Stack
Bitdefender GravityZone is integrated into our existing technology stack:
- Security: Hashicorp Vault (with Database Rotation)
- Monitoring: NewRelic, Grafana
- Server Management: Plesk
- Scripting: PowerShell
- Official Resources
Getting Started
- Access: Log in to the GravityZone Control Center.
- Setup: Follow the setup wizard to install and configure your GravityZone solution.
Features
- Endpoint Security: Comprehensive protection for Windows, macOS, and Linux systems.
- Network Protection: Secure all entry points in your network.
- Data Encryption: Ensure data integrity and confidentiality.
- Reporting and Analytics: Real-time dashboards and detailed reports for ongoing assessment.
Best Practices
- Regular Scans: Perform regular vulnerability scans on all assets.
- Policy Configuration: Customize GravityZone policies to align with our specific security needs.
- Updates: Keep your GravityZone instances up to date.
- User Training: Educate all team members on cybersecurity best practices.
Troubleshooting
- If you encounter issues, consult the Troubleshooting Guide.
- For critical issues, contact the Engineering Team via Microsoft Teams.
Additional Resources
This handbook provides both junior and senior developers with the guidelines needed to understand and utilize Bitdefender GravityZone effectively. Should you have any questions, the engineering team is always available to assist you.
Workflows and Monitoring
Overview
Workflows and monitoring are key elements in the development process at the Alliance Business Suite. This page guides understanding how we automate repetitive tasks, maintain the quality of our codebase, and keep track of various system metrics.
Table of Contents
- Why Workflows and Monitoring?
- Technology Stack
- PowerShell Scripting
- Azure DevOps Pipelines
- Elsa Workflows
- Monitoring with NewRelic
- Best Practices
Why Workflows and Monitoring?
Effective development isn't just about writing code. Automated workflows and real-time monitoring help us to:
- Increase efficiency
- Reduce errors
- Maintain code quality
- Ensure uptime
Technology Stack
- Scripting: PowerShell (extended with posh-git and oh-my-posh)
- CI/CD: Azure DevOps
- Workflow Engine: Elsa Workflows
- Monitoring: NewRelic, Grafana
Refer to the official resources for documentation on each technology.
PowerShell Scripting
- Why?: Automate repetitive tasks, set up environments, and more.
- How-To Guide: To get started, ensure that PowerShell is properly set up. We use a specific startup script (
start.ps1) that prepares your environment. - Learn More: PowerShell Official Docs
Azure DevOps Pipelines
- Why?: Automate building, testing, and deploying your code.
- How-To Guide: Pipelines are defined in
azure-pipelines.yml. Learn to create or modify pipelines by referring to Azure DevOps Project. - Learn More: Azure DevOps Official Docs
Elsa Workflows
- Why?: Execute long-running, fault-tolerant, and scalable workflows.
- How-To Guide: Elsa workflows are integrated into our solutions. To modify or create a new workflow, refer to Elsa's documentation.
- Learn More: Elsa Official Docs
Monitoring with NewRelic
- Why?: Keep an eye on application performance, troubleshoot errors, and monitor uptime.
- How-To Guide: New Relic is integrated into our solutions. To monitor real-time data, log in to New Relic Dashboard.
- Learn More: New Relic Official Docs
Best Practices
- Always document your code and workflows.
- Regularly update workflow dependencies.
- Follow naming conventions for files and pipelines.
- Use monitoring data for continuous improvement.
Additional Resources
For junior developers or anyone needing further clarification, feel free to contact the Engineering Team via Microsoft Teams.
Elsa Workflows in Alliance Business Suite
Elsa is a powerful workflow automation library and engine used within the Alliance Business Suite (ABS). This page provides an overview of Elsa workflows and their role in enhancing the functionality and automation capabilities of ABS applications.
Introduction to Elsa Workflows
Elsa is an open-source workflow library and engine for .NET applications, and it plays a crucial role in the Alliance Business Suite ecosystem. Elsa enables developers to create, manage, and execute complex workflows seamlessly. These workflows define a series of steps, decisions, and actions that automate various processes within ABS applications.
Key Features of Elsa Workflows
Visual Workflow Designer
Elsa includes a visual workflow designer that allows developers and business users to design workflows graphically. This intuitive interface simplifies the creation and modification of workflows without the need for extensive coding.
Workflow Persistence
Elsa workflows support persistence, which means that the state of a workflow can be saved and restored at any point in its execution. This feature is essential for handling long-running processes and ensuring data integrity.
Extensibility
Elsa is highly extensible, allowing developers to add custom activities and actions to workflows. This extensibility enables the integration of ABS-specific functionalities and third-party services seamlessly.
Event-Driven
Elsa workflows are event-driven, meaning they can be triggered by various events, such as user actions, system events, or external triggers. This flexibility allows ABS applications to respond dynamically to changing conditions.
Use Cases for Elsa Workflows in ABS
Business Process Automation
Elsa workflows are instrumental in automating complex business processes within ABS applications. From order processing to approval workflows, Elsa helps streamline operations and reduce manual tasks.
Notification Workflows
Elsa can be used to create notification workflows that send alerts, emails, or messages based on specific events or conditions. This enhances communication and keeps users informed in real-time.
Data Processing
Elsa workflows can be employed for data processing tasks, including data validation, transformation, and synchronization. This ensures data consistency and accuracy within ABS applications.
Integration with ABS Modules
Elsa workflows seamlessly integrate with various ABS modules, allowing developers to incorporate workflow automation into different aspects of their applications. Whether you're using ABS ContactSight (CRM) or ABS Content Portals (CMS), Elsa workflows can enhance the functionality of these modules.
Relevant Resources
To learn more about Elsa workflows in the Alliance Business Suite and explore in-depth documentation and tutorials, check out the following resources:
-
Official ABS Documentation: Access comprehensive guides and tutorials on working with Elsa workflows within ABS applications.
-
Elsa GitHub Repository: Explore the official Elsa GitHub repository for the latest updates, issues, and contributions.
-
Elsa Workflow Designer: Dive into the Elsa Workflow Designer, a visual tool for designing and managing workflows.
-
ABS Community Forums: Join discussions and connect with the ABS community to share insights and get support for Elsa workflows and other ABS-related topics.
This concludes the overview of Elsa workflows in the Alliance Business Suite, along with relevant resources for further exploration and learning.
PowerShell Maintenance Scripts Page
Overview
PowerShell scripting is an essential part of our DevOps and server management strategy for the Alliance Business Suite. The following page provides a detailed description of the PowerShell functions that are most often used in our development environment. These functions are located in the Scripts folder within our main code repository and are designed to be self-explanatory and easy to use.
How to Access the Scripts
The scripts are located at the following path:
.\Scripts
Importance of Running start.ps1
Running the start.ps1 script is a crucial initial step for setting up your Alliance Business Suite development environment. This script accomplishes several important tasks:
-
Enables Suite PowerShell Functions: The script activates a range of functions designed to streamline your development workflow, from building and testing to deploying Alliance Business Suite projects.
-
Updates PowerShell Profile: If you already have a PowerShell profile, the script will append a line to it. This ensures that the Suite PowerShell functions are loaded every time you start a new PowerShell session. If the profile doesn't exist, the script will create one for you.
-
Ensures Consistency: By standardizing the environment setup, we ensure that every developer, whether junior or senior, has access to the same set of tools and functionalities. This minimizes errors and inconsistencies that can occur due to environment differences.
-
Time-Saving: Without the script, you'd have to manually configure your environment, a process that could be error-prone and time-consuming. The script automates these tasks, allowing you to focus on development work.
-
Simplicity: Even for those who are not familiar with PowerShell or our development workflow, running a single script makes the setup process as straightforward as possible.
So, before diving into any development tasks, make sure you've run start.ps1 to set yourself up for success.
How to Run start.ps1
Running the start.ps1 script is straightforward and can be accomplished through a few simple steps. Here's how to do it:
-
Open PowerShell: Navigate to the 'Start' menu, type in 'PowerShell', and select the Windows PowerShell application.
-
Run as Administrator: Right-click on the Windows PowerShell and choose 'Run as administrator' to launch PowerShell with administrative privileges. This may be required to modify the PowerShell profile.
-
Navigate to the Script's Directory: Use the
cdcommand to navigate to the directory where yourstart.ps1script is located. For example:cd path\to\your\script\directory -
Run the Script: Execute the script by typing the following command and pressing Enter:
.\start.ps1Note: The dot (
.) before the backslash is important; it's used to source the script in the current session. -
Follow On-screen Prompts: The script may provide on-screen prompts or messages. Read them carefully and proceed as directed.
-
Verify Installation: Once the script finishes executing, you should see a 'Done' message or something similar. You can also open a new PowerShell window and check if the functions are available by typing one of the function names and pressing Enter.
-
Restart PowerShell: Finally, it's a good idea to close and reopen PowerShell to ensure that all changes are effectively loaded into your profile.
By following these steps, you'll enable a suite of functions and features that will streamline your development workflow in the Alliance Business Suite.
Listing available Maintenance Commands
To list all the available SuiteCommands, you can run the following command:
Get-SuiteCommands
Common Functions
Update-SuitePackageVersion
Synopsis: Updates the version of a package within the Suite.
Start-SuiteOperation
Synopsis: Initiates a given Suite operation.
Get-SuiteHelp
Synopsis: Provides help documentation for Suite functions.
Write-SuiteVariable
Synopsis: Writes a variable to the Suite environment.
New-SuiteDatabaseBackup
Synopsis: Creates a new database backup.
Remove-SuiteDatabaseMigration
Synopsis: Removes a specified database migration.
Build-SuiteApi
Synopsis: Builds the Suite API.
Restore-Suite
Synopsis: Restores the Suite to a previous state.
Test-Suite
Synopsis: Runs the test sequences for the Suite.
Publish-Suite
Synopsis: Publishes the Suite.
Install-SuiteNodeModules
Synopsis: Installs Node modules required for the Suite.
New-SuiteBastionHost_PSSession
Synopsis: Creates a new PowerShell session for the Bastion Host.
Update-SuiteCDN
Synopsis: Updates the Suite's Content Delivery Network.
Update-SuiteStudioTheme
Synopsis: Updates the Suite's UI theme.
Push-SuiteRepos
Synopsis: Pushes changes to the Suite repositories.
Set-SuiteBranch
Synopsis: Switches to a different Suite branch.
Release-SuiteWebsiteVersion
Synopsis: Releases a new version of the Suite website.
Build-SuiteEngineeringHandbook
Synopsis: Builds the engineering handbook.
Best Practices
- Follow Naming Conventions: Ensure that function names are self-explanatory and stick to a consistent naming pattern.
- Modularize Code: Make sure to break down tasks into smaller, reusable functions.
- Comment: Add comments to the scripts for better understanding and easier debugging.
Related Links
- PowerShell Extended with Posh-Git and Oh-My-Posh
- Alliance Business Cloud Azure Repository
- Engineering Handbook
FAQs
For common queries about PowerShell scripting, refer to the Frequently Asked Questions page.
Support
If you encounter any issues, please use the Azure Issue Tracker.
Last Updated
This page was last updated on September 9, 2023.
This handbook page aims to serve as a comprehensive guide for all levels of developers, from junior to senior, on how to utilize the PowerShell functions for the Alliance Business Suite effectively. Feel free to add or modify sections as needed.
Additional Resources
This section provides a curated list of additional resources to help you further understand, deploy, and contribute to the Alliance Business Suite.
Official Resources
- Suite UI Theme: Studio ABS
- Staging Environment: Staging ABS
- Production Environment: ABS Suite
- Repository: Dev Azure Repository
Cloud Resources
- Azure: Azure Portal
- Azure DevOps: Azure DevOps Documentation
- Azure Cloud: Azure Cloud Documentation
Technology Stack
- .NET 7.0: .NET Documentation
- Node.js: Node.js Documentation
- React + Redux: React Documentation, Redux Documentation
- TypeScript: TypeScript Documentation
- Bootstrap: Bootstrap Documentation
- MSTest: MSTest Documentation
- SpecFlow: SpecFlow Documentation
- Vault: Vault Documentation
- Plesk: Plesk Documentation
- PowerShell: PowerShell Documentation
- Teams: Microsoft Teams User Guide
- NewRelic: NewRelic Documentation
General Development
- Stack Overflow: Stack Overflow for Alliance Business Suite
- GitHub: GitHub Repository
Documentation
- Official Documentation: ABS Documentation
Learning
- Video Tutorials: YouTube Channel
- Courses: Udemy Courses on ABS
Community
- Forums: Alliance Business Suite Forums
Support
- FAQs: Frequently Asked Questions
- Customer Support: Support Portal
- Report Issues: Issue Tracker
Glossary
| Term | Definition |
|---|---|
| ABS | A Full-Stack, Low-Code, Modular, and Multi-Tenant Business Application Framework. |
| ABM | A declarative specification and definition of standard entities used in the ABS. |
| API | A set of rules and protocols for building and interacting with software applications. |
| Azure DevOps | Microsoft's cloud service for collaborating on code development. |
| Azure Cloud | Microsoft's public cloud computing platform. |
| Bootstrap | A free and open-source CSS framework. |
| CI/CD | Practices that enable automatically building, testing, and deploying applications. |
| DevOps | A set of practices that involve both development and operations to shorten the system development life cycle. |
| Driver | A program that enables a specific type of software to work with a specific type of hardware. |
| GrPC | A high-performance, open-source, universal remote procedure call framework. |
| MSTest | Microsoft's test framework. |
| MongoDB | A NoSQL database. |
| MySQL | An open-source relational database management system. |
| MSSQL | Microsoft's relational database management system. |
| Multi-Tenancy | A software architecture where a single instance of a software application serves multiple customers. |
| NewRelic | A performance management solution for real-time monitoring and analytics. |
| Node.JS | A JavaScript runtime built on Chrome's V8 JavaScript engine. |
| ORACLE | A commercial database commonly used in enterprise setups. |
| Oh-My-Posh | A prompt theming engine for PowerShell. |
| Plesk | A control panel for web hosting. |
| PostgreSQL (PGSQL) | An open-source object-relational database management system. |
| PR (Pull Request) | A method of submitting contributions to an open development project. |
| PowerShell | A cross-platform task automation solution. |
| posh-git | A PowerShell environment for Git. |
| React+Redux | JavaScript libraries for building user interfaces and state management. |
| REST | An architectural style for designing networked applications. |
| SignalR | A library for adding real-time web functionality to applications. |
| SpecFlow | A tool for writing tests in natural language and executing them with an automation framework. |
| SQL | A standard language for relational database management systems. |
| Teams | Microsoft Teams, a collaboration app that helps your team stay organized. |
| TypeScript | A superset of JavaScript that compiles to clean JavaScript output. |
| TS | Short for TypeScript. |
| Vault | A tool for securely managing secrets. |