Setup Environment
For Backend Service (Go)
Setup git
Install git
For MacOS input command below to check git version
git --version
Configure Gitlab Credentials, go to any git repository and input below command:
git config --global user.name "gitlab_username"
git config --global user.email "email_address"
Export BOT_USER, BOT_PRIVATE_TOKEN
You can use bash or zsh to set up variable environment default. But suggested for you is zsh.
Install Oh-my-zsh
- Install oh-my-zsh at: oh my zsh
Check zsh version first
zsh --version
if zsh don't exist, try install zsh: Install zsh
Open zshrc file, ex:
code ~/.zshrc
Add these lines into zshrc file:
export BOT_USER=<gitlab_user_name>
export BOT_PRIVATE_TOKEN=<personal_access_token>
Note: Create person access token to get gitlab_user_name, personal_access_token
Setup Go-private
Setup Go-private can help download go private module.
Authenticate Go requests to private projects
Prerequisites
- Your GitLab instance must be accessible with HTTPS.
- You must have a personal access token.
To authenticate Go requests, create a .netrc file with the following information:
machine gitlab.nautilusgames.tech
login <gitlab_user_name>
password <personal_access_token>
On Windows, Go reads ~/_netrc instead of ~/.netrc
The go command does not transmit credentials over insecure connections. It authenticates HTTPS requests made by Go, but does not authenticate requests made through Git.
Authenticate Git requests
If Go cannot fetch a module from a proxy, it uses Git. Git uses a .netrc file to authenticate requests, but you can configure other authentication methods.
Need setup GOPRIVATE, open .zshrc and add this line:
export GOPRIVATE=gitlab.nautilusgames.tech
if still error, try it
git config --global url."https://${BOT_USER}:${BOT_PRIVATE_TOKEN}@gitlab.nautilusgames.tech/".insteadOf https://gitlab.nautilusgames.tech/
Setup ENV for Mac
Install Golang (go)
- Install Go package
- Step 1: go to: Download and install - The Go Programming Language
- Step 2: open downloads folder, and install go package
- Step 3: open terminal, input go version to check.
- Update environment’s path variable, change GOPATH to ~/go-workspace
- Open terminal, input command below:
echo '# Golang Binaries' >> ~/.zshrc
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.zshrc
# Default GOPATH
echo 'export GOPATH=~/go' >> ~/.zshrc
# Change GOPATH to ~/go-workspace
echo 'export GOPATH=~/go-workspace' >> ~/.zshrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.zshrc
source ~/.zshrc
- Then input this command to check GOPATH
vim ~/.zshrc
Install my-kit
# clone source
cd go-workspace/src/
mkdir gitlab.nautilusgames.tech
cd gitlab.nautilusgames.tech
mkdir marketplace
cd marketplace
git clone https://gitlab.nautilusgames.tech/marketplace/mykit.git
# open
code .
# open terminal
go mod tidy
go mod vendor
go install
# check command
mykit help
Setup protobuf
Manual setup
Note: Need to align version with mykit setup.
Install Protocol Compiler (protoc)
Check protoc version at protobuf
Example:
# download package
PB_REL="https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4"
curl -LO $PB_REL/download/v3.19.4/protoc-3.19.4-osx-x86_64.zip
# unzip
unzip protoc-3.19.4-osx-x86_64.zip -d $HOME/.local
cp bin/protoc $GOPATH/bin
Note: Based on your os, choose correct variant.
Install Go plugins (protoc-gen-go, protoc-gen-go-grpc) for the protocol compiler (protoc)
Install protoc-gen-go binary, protoc-gen-go-grpc binary with Go
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
Install gRPC Web protoc plugin (protoc-gen-grpc-web)
Install protoc-gen-grpc-web binary
curl -LO $PROTOC_GEN_GRPC_WEB_RL/download/v1.3.1/protoc-gen-grpc-web-1.3.1-linux-x86_64
cp ./protoc-gen-grpc-web-1.3.1-linux-x86_64 \
$GOPATH/bin/protoc-gen-grpc-web
chmod +x $GOPATH/bin/protoc-gen-grpc-web
Install gRPC-Gateway (protoc-gen-grpc-gateway, protoc-gen-openapiv2)
Install protoc-gen-grpc-gateway, protoc-gen-openapiv2 binaries with Go
go install \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.14.0 \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.14.0
Install protoc-gen-validate
Install protoc-gen-validate binary with Go
go install github.com/envoyproxy/protoc-gen-validate@v0.10.1
Setup using Mykit
After install Mykit, using below command to setup protobuf:
mykit setup
Install Ent
go install entgo.io/ent/cmd/ent@latest
Install Docker
Install docker desktop for MacOS at: Install Docker Desktop on Mac
Setup build docker local
Open terminal and run command
docker login registry.nautilusgames.tech --username $BOT_USER --password $BOT_PRIVATE_TOKEN
On Ubuntu, before build image local by Makefile
docker run --privileged --rm tonistiigi/binfmt --install all
This terminal help push new image to registry
Setup AWS SSO account
Configure AWS CLI
Install AWS CLI: Install or update the latest version of the AWS CLI - AWS Command Line Interface
Choose the local profile name that you want. Example: gameloot-carem-engineer
Run command aws configure sso --profile <profile_name> and fill parameters if required:
SSO start URL: https://nautilusgames.awsapps.com/start
SSO Region : ap-southeast-1
CLI default client Region : ap-southeast-1
CLI default output format : json
Ex: aws configure sso --profile nautilus-engineer
Login AWS CLI with AWS SSO account
Run command aws sso login --profile <profile_name> to login to AWS CLI with config above.
Ex: aws sso login --profile nautilus-engineer
Using AWS SSO account to access K8S
Prerequisites
- Complete Setup AWS SSO Account
- Kubectl(for Kubernetes CLI access) Install Tools
- Lens(Kubernetes GUI access) Lens | The Kubernetes IDE
- Helm (for deploy backend service) Helm | Installing Helm
Update Kubeconfig
After login to AWS CLI, run following command to update kubeconfig:
aws eks update-kubeconfig --name <cluster_name> --alias <cluster_name> --profile <profile_name>
Ex: aws eks update-kubeconfig --cluster nautilus-eks-stg --alias nautilus-eks-stg -profile nautilus-engineer
To verify, run command kubectl get pods --context <cluster_name>
To run helm with specific cluster, add --kube-context <cluster_name> parameter.
Ex: helm list --kube-context <cluster_name>
For Game Client (Cocos Creator)
TODO: guide on how to setup environment to handle cocos's tasks
For Frontend
Prerequisites
-
Install NodeJS: Use Volta to manage NodeJS version. (You can use NVM)
Note We use NodeJs version:
^20 -
Install Packages: Use PNPM to do it.
-
Install VS Code
Create new source code
To make it easier, we use Vite to generate a folder structure with various templates.
pnpm create vite my-react-app --template react-ts