Project Profile

Purpose

Project Profile is starting point of storing all information for a project including source code, released packages. Project Profile also have life cycle of the product implemented on a single instance of Magento System of a Store Owner.

Relationship

Principles

Principles 1: A single instance of a Magento System have one and only one Project Profile. Therefore:

  • If a Store Owner update to a new Magento System, we must create a new Project Profile and archive the old Project Profile.
  • If a Customer is an Agency having many Store Owners, we must create many Project Profiles for each Store Owner.

Principles 2: Each Project on My Magestore have a single equiva;ent Project on GitLab. Never create project from GitLab.

Project Stage

Notice: A Project Profile have forever life cycle. The life cycle stop only if the Store Owner stop their using our Product or change to another Project Profile. Any customized package required by the customer later will never change the project stage.

  • Kick-off: Start immediately after customer paid and finish only if every plan for each project stage is fulfilled and approved by the customer.
  • Doing: Start immediately while the team begins doing the first user story and finishes while the last user story need to be acceptance.
  • Acceptance: Start while the last package is installed on the acceptance site nd waiting for the final acceptance. Finish while the customer accepts the final user story.
  • Prepare Live: Start while customer having requirement to live.
  • Live: Start while project is lived successfully
  • Upgrade: While the store owner build anoher site, such as update to another Magento Line Version. A new project is created to repplaced the current project.
  • Cancel: While the Store Owner drop project and request refund.
  • Stop: While the Store Owner decided stop using. They do not request refund because expired date!

Type

  • Implement Project: Is implemented for the customer such as installation, fix bug, customize...
  • Contribution Project: Is contributed to Magesstore Core Prodcut. Is forked from project of Core Product.
  • Internal Project: Is used to team internal operation such as resource storing, or tools installation.

Gitlab File Structure of Implement Project

Name Type Required ? Description
<Repository Root Directory> Root Directory Thư mục gốc của project trên gitlab hoặc khi clone về, những thư mục được khai báo ở phần bên dưới có đường dẫn tương đối tính từ thư mục này
Source/server/ Directory Thư mục chứa code Magento của bộ sản phẩm POS
Source/client/ Directory Thư mục chưa code React chưa được build của bộ sản phẩm POS
Environment/ Directory Không Thư mục chứa các file cấu hình về môi trường để triển khai
.gitignore File Không File cấu hình của git
.gitlab-ci.yml File File cấu hình chạy các job tự động của dự án, hiện tại đang áp dụng cho việc chạy Coding Standard
.gitlab-runner/ Directory Thư mục chứa các script phục vụ cho việc chạy Coding Standard (bao gồm tất cả các file trong thư mục này).
.gitlab/issue_templates/ Directory Thư mục chứa các file template cho Issue trong Project
.gitlab/issue_templates/bug_report.md File Issue Template cho Report Bug
.gitlab/issue_templates/installation.md File Issue Template cho Install POS
.gitlab/issue_templates/user_story.md File Issue Template cho User Story

Activity

Create new

Using this guide while a customer want to create Project Profile. Example: First time buy Magestore Product/Service or Update their Magento System

Prerequisite: Make sure you are a Project Manager in your accessing right of My Magestore

Notice: Never create project from GitLab

  • Step 1: If you want to create Project from Sale Order, go to My Magestore > Sales > Order > Favourite: Wait for Project and Open an Sale Order

Or you can click directly to the link of Order Notification in #project-manager Slack channels

  • Step 2: On an Order, point to Project Field, and choose Create & Edit or choose one.

  • Step 3: On the Project, fill required information such as Project Name, Team, Project Manager, Account Manager, Product Lines and Appprover Customer to help you search important information better.

Notice: The Project Name is the domain name of the customer's site. The Account Manager is name of Business Consultant (Sales). Appprover Customer is the customer who has the rights to Accept the US to calculate our Income/Revenue.

  • Step 4: Go to GitLab and find with Project Name to make sure that you you have synchhronized Project on GitLab Project-Gitlab-Search.png

  • Step 5: Update link of Project GitLab to the GitLab URL of a Project on My Magestore

Checkling a right creating Project Profile

Gitlab Project Settings

  1. Create "README.md" file

    1. From project page click into "add README" button
    2. Click into "Commit" button
    3. Click to another "Commit" button
    4. Go back to the project page, you will have the README file
  2. Create develop branch

    1. Go to Repository > Branches, click into "New branch" button
    2. Fill "develop" in to Branch name field, then click in to "Create branch" button
    3. You will get below result
  3. Default branch

    From left menu go to Project > Settings > Repository > Default branch

    • Default branch select "develop"
    • Uncheck "Auto-close referenced issues on default branch" , then click into "Save changes" button
  4. Protected branches

    In the same screen as above step scroll down to "Protected branches" section

    1. Fill below information

      • Branch: release*
      • Allowed to merge: Maintainer
      • Allowed to push: Maintainer
      • Click into "Protect" button
    2. Do the same thing with below branches

      • develop
      • delivery*

      We will get result as below image

  5. Protected Tags

    From same screen with step above, scroll down to "Protected Tags" section

    1. Fill below information
      • Tag: v*
      • Allowed to create: Maintainer
    2. Click into "Protect" button, then you will get below result

Planning Stage

  • Step 1: Go to My Magestore > Project and Open one
  • Step 2: Change to Stage Logs
  • Step 3: Click Edit and Input some Stages with the Planning Start Date

planning-stage.png

Find a Project Profile

Cancel a Project Profile

Using this guide while a customer want to drop a project. Example: Refund. Notice: The cancel Project still will lost the income.

Archive a Project Profile

Using this guide while a customer want update their system with a new Project. Example: Update MAgento Version. Notice: The archived Project still has income

Find must-tracking Stage Project Profile

Using this guide if you want to find which project that you forget to plan the stage.

Change Team Owner

Connect Project to Slack Channel

  • Step 1: Go to the Slack Channel and choose type /mage connect

  • Step 2: Find and select the Slack Channel name

  • Step 3: Click to Connect button

Send email to Customer from Project Proile

  • Step 1: Go to My Magestore > Project. Find to your Project

  • Step 2: Scroll down then click to Send Message. Type the email content then Click Send

Tips: You can click the Full Composer at the right bottom corner to write a rich format content.

  • Step 3: Check that email has been sent by see the list of success.

Tips: If lacking of contract point to receive email, you need to add follower, then re-send again

Send email by Template to Customer from Project Proile

  • Step 1: Go to My Magestore > Project. Find to your Project

  • Step 2: Scroll down then click to Send Message, then click the Full Composer button at the right bottom corner to write a rich format content.

  • Step 3: Choose a template from Use Template dropdown, then click Send

  • Step 4: Check that email has been sent by see the list of success.

Tips: If lacking of contract point to receive email, you need to add follower, then re-send again

Add follower to receive email from Project Proile

  • Step 1: Go to My Magestore > Project. Find to your Project

  • Step 2: Scroll down then click to add follower

  • Step 3: Search in Recipients by email or name of contract point, then click to Add Followers

Tips: If you can not found email or name of contract point, you should Add Contract Point to Customer by this guide

Create email template to Customer in Project Proile

Contact to System Aministrator to create and edit template

Standardize GitLab

Standardize GitLab with new Project

This is used to struture file and git organization for all Implement Project.

  • Step 1 Get the latest POS package according to Product Line
  • Step 2 Checkout branch develop to local
  • Step 3 Unzip POS package in Source folder
  • Step 4 Implement Coding Standard on develop branch
  • Step 5 Download latest version of Magestore Deli Releases Module to your desire format
  • Step 6 Commit and Push to develop branch
  • Step 7 Config default branch
    • Go to Project > Setting > Repository look into "Default Branch" section
    • Select Default Branch is "develop"
    • Uncheck "Auto-close referenced issues on default branch"
    • Click "Save changes" button
  • Step 8 config protected branch
    • Scroll down to "Protected Branches" section
    • Create wilcard "release*"
    • "Allow to push" and "Allow to merge" is "Maintainers", then click "Protect" button
  • Step 9 Config protected tag
    • Scroll down to "Protected Tags" section
    • Type wilcard "v*"
    • Click "Create wilcard" button
    • Select "Allow to create" is "Maintainers", then click "Protect" button.

Checklist:

Standardize GitLab with old Project

This is used to struture file and git organization for old Implement Project.

  • Step 1 Create an Issue with Standardize Git and assign to this by yourselves
  • Step 2 Create a new branch named standardize-git from develop branch
  • Step 3 Checkout standardize-git branch to local
  • Step 4 Download source code from UAT site at folder <magento_root>/app/code/Magestore then move to equivalent folder on local
  • Step 4 Migrate code download to current code on standard-git branch then commit with message sync code from customer UAT.
  • Step 5 Implement Coding Standard on standardize-git branch
  • Step 6 Download latest version of Magestore Deli Releases Module to your desire format
  • Step 7 Commit and Push to standardize-git branch
  • Step 8 Create Merge Request from standardize-git branch to develop branch. Assign name then Merge.
  • Step 9 Config default branch
    • Go to Project > Setting > Repository look into "Default Branch" section
    • Select Default Branch is "develop"
    • Uncheck "Auto-close referenced issues on default branch"
    • Click "Save changes" button
  • Step 10 config protected branch
    • Scroll down to "Protected Branches" section
    • Create wilcard "release*"
    • "Allow to push" and "Allow to merge" is "Maintainers", then click "Protect" button
  • Step 11 Config protected tag
    • Scroll down to "Protected Tags" section
    • Type wilcard "v*"
    • Click "Create wilcard" button
    • Select "Allow to create" is "Maintainers", then click "Protect" button.

Checklist:

Create Implement Project Wiki Home from template

Gitlab Project Wiki Home is description some most important information of a project. Wiki file of each project is stored at: https://gitlab.com/<team_name>/<project_name>/-/wikis/

Copy this wiki home templates to your implement project wiki home page

Apply Coding Standard on Implement Project

  • Step 1 Clone the Repo that need to implement Coding Standard on local.

  • Step 2 Checkout the branch that need to implement Coding Standard (usually is master branch)

  • Step 3 Access Magestore Standard Code Package to download the latest version

  • Step 4 Unzip the above downloaded package and copy file .gitlab-ci.yml and folder .gitlab-runner to root forlder of project

  • Step 5 Find in file .gitlab-ci.yml the keyworld your-group-runner-tag and chante to sửa thành magestore-noodle-gitlab-runner as below screen

  • Step 6 Create file <repo_root_directory>/<server_dir>/app/tests/static/Webpos/Test/Php/_files/phpcpd/blacklist/magestore.txt with the content:

    app/code/Magestore
    app/tests/Magestore
    
  • Step 7. Commit files and folders with message: Implement Coding Standard

    • .gitlab-ci.yml
    • .gitlab-runner
    • <repo_root_directory>/<server_dir>/app/tests/static/Webpos/Test/Php/_files/phpcpd/blacklist/magestore.txt
  • Step 8 Push to the branch which was checked out at step 2

  • Step 9 Valid the Pipeline of Project by accessing: https://gitlab.com/noodle_team/<project_name>/pipelines

    • Where <project_name> là tên project tương ứng.
  • Step 10 All jobs must be green. If you have any failed job, call support.

Manage the WebHook on GitLab

Purpose: We need synchronize information from GitLab to MyMagestore. Some time we need to adđ some webhook manually

  • Step 1: Open Gitab > Project > Setttings > Webhooks
  • Step 2: Add three below WebHooks:
    URL = https://my.magestore.com/release
    Triger = Tag push events
    SSL Verification = Enable SSL verification
    
    URL = https://my.magestore.com/message_creator
    Triger = Comments
    SSL Verification = Enable SSL verification
    
    URL = https://my.magestore.com/task_update
    Triger = Issues events
    SSL Verification = Enable SSL verification
    

Define Customer

Define Customer of Project

  • Step 1: Go to My Magestore > Project(https://my.magestore.com/web#action=131&model=project.project) and Open one

  • Step 2: Fill the Customer drop down by a Company

Notice: The Customer must a Company

Define Approver Customer

Approver Customer is a person have resonbility to approve project acceptance request.

Notice: The Approver must a Contact. And the Contact must belong to a Company on the Customer dropdown

Connect Approver Customer Contact to Slack Support

Approver Customer is a person have resonbility to approve project acceptance request. You must define approver customer first

  • Step 1: Open the chat windown of the Approver on Slack, choose View Profiles

  • Step 2: Click More... button then press Copy Member ID

  • Step 3: Go to My Magestore > Project and Open one

  • Step 4: Click to open Approver Customer

  • Step 5: Fill the Slack ID field by the Member ID coppied from Step 1 to Step 2

Project Stage

List All Project Stage

Here is Project Stage

Update Project Stage

  • Step 1: List all Project Stage
  • Step 2: Click Name to open Slack of Project

  • Step 3: On Slack channel, type /mage relationship

  • Step 4: Click Evaluate

  • Step 5: Choose the Stage with Description then Submit

Project Relationship

List All Project Relationship

Here is all Project Relationship

Update Project Relationship

  • Step 3: On Slack channel, type /mage relationship

  • Step 4: Click Evaluate

  • Step 5: Choose the Reltionship with Description then Submit