[转]gitlab之source tree使用方法

gitlab之source tree使用方法

提交错了,回滚到上一次修改之前的重新提交。

 

 

如何使用Git命令(对SourceTree图形工具使用的补充)

复制代码
#列出所有本地git分支
git branch
#列出所有远程git分支
git branch -r
#列出所有本地和远程git分支
git branch -a
#切换本地dev分支
git checkout -b dev
#切换远程dev分支
git checkout -b remotes/origin/dev
#列出所有tag
git tag
#重新提交git信息
git commit --amend -m "按照规范要求书写git提交信息"   --相当于上次提交git的信息被重新覆盖了
#还原git操作(适用于:还没有提交到本地git暂存区和本地git仓库里)
git checkout .          --回滚所有文件,之前修改的代码都没有了,等同于放弃之前所有修改操作
#回滚git操作(适用于:已经提交到本地git仓库里,还没有提交到远程git仓库里)
git reflog 查看git提交的history日志
git reset --soft  xxx   --从本地git仓库里回滚到本地暂存区里,之前修改的代码还能保留
git reset --hard  xxx   --从本地git仓库里回滚到远程git仓库history上的某一个版本,之前本地所有更改代码都没有了,等同于放弃之前所有修改操作,等同于git checkout .(退回最后一个历史版本)
#本地git搁置区
git stash list          --查看本地git搁置区里面的搁置记录
git stash               --将本地修改的代码放入本地git搁置区,如果已经放到本地git暂存区里面的代码也会放到搁置区里,同时把已经放入本地git暂存区里面的代码清空
git stash pop           --取出最后一次放入本地git搁置区里面的代码,相当于把代码从本地git搁置区里拿出来,放到本地git未暂存区里面
git stash stash@{0}     --取出最后一次放入本地git搁置区里面的代码的另外一种写法,这种写法可以取出某一次放入本地git搁置区里面的代码
git stash --help
#删除本地git未跟踪文件和目录(只适用于本地新增文件和目录的操作)
git clean -f            --删除本地git未跟踪文件 untracked files
git clean -fd           --删除本地git未跟踪文件连 untracked 的目录也一起删掉
git clean -nf           --在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nfd          --在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
复制代码

 

触发项目CI自动构建

本地git push自动触发gitlab的ci

#单个项目构建
git push -o ci.variable="MESHOP_BUILD_ONLY=api" origin
#多个项目构建
git push -o ci.variable="MESHOP_BUILD_ONLY=api,sso,front,crm" origin
# 所有项目构建
git push -o ci.variable="MESHOP_BUILD_ONLY=王云鹏是帅哥" origin

.gitlab-ci.yml

复制代码
 1 default:
 2   image: docker.tidebuy.net/dotnet/core/sdk:3.1
 3   tags:
 4     - docker
 5     - company
 6 
 7 variables:
 8   # docker in docker
 9   DOCKER_DRIVER: "overlay2"
10   DOCKER_HOST: tcp://localhost:2375
11   # docker private rigist
12   CI_REGISTRY: private-docker.tidebuy.net
13   CI_REGISTRY_USER: rancher
14   CI_REGISTRY_PASSWORD: rancher
15   # cache
16   NUGET_PACKAGES_DIRECTORY: ".nuget"
17   OBJECTS_DIRECTORY: "obj"
18   SOURCE_CODE_PATH: "*/*/"
19   #code quality
20   #SONAR_URL: "http://sonarqube-sonarqube.sonarqube.svc.cluster.local:9000/"
21   #SONAR_TOKEN: "95ef769de8164d8e6e4c2841f425fcc227b43bf8"
22   #SONAR_KEY: "tlz.shopify.admin.core"
23 
24 stages:
25   - restore
26   - analyze
27   - compile
28   - version
29   - build
30   - deploy
31 
32 restore:
33   stage: restore
34   extends: .nuget_cache
35   cache:
36     policy: pull-push
37   script:
38     - echo "dotnet restore..."
39     - dotnet restore
40       $CI_PROJECT_DIR/meshop/MeShop.sln
41       --packages $NUGET_PACKAGES_DIRECTORY
42       --runtime linux-x64
43       --configfile $CI_PROJECT_DIR/.ci/nuget.config
44 
45 .nuget_cache:
46   cache:
47     key: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_SLUG}"
48     paths:
49       - "$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/project.assets.json"
50       - "$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/*.csproj.nuget.*"
51       - "$NUGET_PACKAGES_DIRECTORY"
52 
53 .docker_build:
54   image: "docker:stable"
55   services:
56     - docker:stable-dind
57   variables:
58     DOCKER_TLS_CERTDIR: ""
59   before_script:
60     - echo "Logging to GitLab Container Registry with CI credentials..."
61     - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
62 
63 .kube_deploy:
64   image: boxboat/kubectl:1.17.4
65   variables:
66     HELM_TOKEN: ${HELM_USER_TOKEN}
67     K8S_API_SERVER: ${KUBE_API_ADDRESS}
68     K8S_API_SERVER_CERT: ${KUBE_API_CA}
69   before_script:
70     - mkdir -p /home/alpine/.kube
71     - cp .ci/kube-config-template /home/alpine/.kube/config
72     - sed -i "s/{{ HELM_USER_TOKEN }}/${HELM_TOKEN}/g" /home/alpine/.kube/config
73     - sed -i "s/{{ KUBE_API_ADDRESS }}/${K8S_API_SERVER}/g" /home/alpine/.kube/config
74     - sed -i "s/{{ KUBE_API_CA }}/${K8S_API_SERVER_CERT}/g" /home/alpine/.kube/config
75 
76 workflow:
77   rules:
78     - if: $MESHOP_BUILD_ONLY != null
79       when: always
80     - if: "$CI_PIPELINE_SOURCE  == 'merge_request_event' || $CI_COMMIT_REF_NAME =~ /^master|alpha$/"
81       when: always
82       
83 include:
84   - local: .ci/templates/sso-gitlab-ci.yml
85   - local: .ci/templates/api-gitlab-ci.yml
86   - local: .ci/templates/front-gitlab-ci.yml
87   - local: .ci/templates/crm-gitlab-ci.yml
88   - local: .ci/templates/alpha-release-gitlab-ci.yml
.gitlab-ci.yml
复制代码

.ci/templates/api-gitlab-ci.yml

复制代码
 1 .api:
 2   variables:
 3     MESHOP_PROJECT_ABBREVIATION: api
 4     MESHOP_PROJECT_PUBLISH_PATH: publish/${MESHOP_PROJECT_ABBREVIATION}
 5     MESHOP_PROJECT_NAME: MeShop.View.API
 6   rules:
 7     - if: '$MESHOP_BUILD_ONLY =~ /api/i'
 8       when: on_success
 9     - if: '$MESHOP_BUILD_ONLY == "王云鹏是帅哥"'
10       when: on_success
11 
12 
13 
14 api_compile:
15   stage: compile
16   extends:
17     - .nuget_cache
18     - .api
19   cache:
20     policy: pull
21   script:
22     - echo "compile ${MESHOP_PROJECT_ABBREVIATION} project."
23     - dotnet publish meshop/${MESHOP_PROJECT_NAME}/${MESHOP_PROJECT_NAME}.csproj --no-restore
24       --runtime linux-x64 -c Release -o ${CI_PROJECT_DIR}/${MESHOP_PROJECT_PUBLISH_PATH}
25   artifacts:
26     name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
27     paths:
28       - publish/
29     expire_in: 1 days
30     when: on_success
31 
32 api_build:
33   stage: build
34   extends:
35     - .docker_build
36     - .api
37   script:
38     - image_version="${CI_APPLICATION_TAG:-$(date +%Y%m%d%H%M%S)}"
39     - image_name="${CI_REGISTRY}/meshop/shop/${MESHOP_PROJECT_ABBREVIATION}"
40     - docker build -f .ci/Dockerfile
41       --build-arg APP_PATH="${MESHOP_PROJECT_PUBLISH_PATH}"
42       --build-arg MAIN_DLL="${MESHOP_PROJECT_NAME}.dll"
43       --build-arg PORT="7777"
44       --tag "$image_name:$image_version"
45       --tag "$image_name:latest"
46       .
47     - docker push "$image_name:$image_version"
48     - docker push "$image_name:latest"
49   needs: 
50     - job: api_compile
51       artifacts: true
52 
53 api_deploy:
54   stage: deploy
55   extends:
56     - .kube_deploy
57     - .api
58   script:
59     #- kubectl patch deployment test-meshop-shop-api -p  "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"
60     - kubectl rollout restart deployment/meshop-api
61   needs: 
62     - job: api_build
63       artifacts: false
api-gitlab-ci.yml
复制代码

ci/templates/alpha-release-gitlab-ci.yml

复制代码
  1 compile:
  2   stage: compile
  3   extends:
  4     - .nuget_cache
  5   cache:
  6     paths:
  7       - "$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/project.assets.json"
  8       - "$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/*.csproj.nuget.*"
  9       - "$NUGET_PACKAGES_DIRECTORY"
 10       - publish
 11   script:
 12     - echo "compile api project."
 13     - dotnet publish 
 14       meshop/MeShop.View.API/MeShop.View.API.csproj 
 15       --no-restore
 16       --runtime linux-x64 
 17       -c Release -o ${CI_PROJECT_DIR}/publish/api
 18     - echo "compile front project."
 19     - dotnet publish 
 20       meshop/MeShop.View.WWW/MeShop.View.WWW.csproj 
 21       --no-restore
 22       --runtime linux-x64 
 23       -c Release -o ${CI_PROJECT_DIR}/publish/front
 24     - echo "compile sso project."
 25     - dotnet publish 
 26       meshop/MeShop.View.SSO/MeShop.View.SSO.csproj 
 27       --no-restore
 28       --runtime linux-x64 
 29       -c Release -o ${CI_PROJECT_DIR}/publish/sso
 30   only:
 31     refs:
 32       - master
 33       - alpha
 34       - merge_requests
 35       
 36 version:
 37   stage: version
 38   image: meshop/semantic-release:17.1.1
 39   script:
 40     - semantic-release
 41     - cat .version
 42   artifacts:
 43     paths:
 44       - .version
 45     expire_in: 10 hours
 46   rules:
 47     - if: "$CI_PIPELINE_SOURCE  == 'merge_request_event'"
 48       when: never
 49     - if: "$CI_COMMIT_REF_NAME == 'alpha'"
 50       when: on_success
 51     - if: "$CI_COMMIT_REF_NAME  == 'master'"
 52       when: on_success
 53 
 54 build:
 55   stage: build
 56   extends:
 57     - .docker_build
 58     - .nuget_cache
 59   before_script:
 60     - echo "Logging to GitLab Container Registry with CI credentials..."
 61     - export REGISTRY_PASSWORD=$CI_RELEASE_REGISTRY_PASSWORD REGISTRY_USER=$CI_RELEASE_REGISTRY_USER REGISTRY=$CI_RELEASE_REGISTRY;
 62     - echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USER" --password-stdin "$REGISTRY"
 63   script:
 64     - "[ -f ./.version ] && source ./.version"
 65     #api
 66     - API_IMAGE="${REGISTRY}/meshop/shop/api:${VERSION}"
 67     - docker build -f .ci/Dockerfile
 68       --build-arg APP_PATH="publish/api"
 69       --build-arg MAIN_DLL="MeShop.View.API.dll"
 70       --build-arg PORT="7777"
 71       --tag "$API_IMAGE"
 72       .
 73     - docker push "$API_IMAGE"
 74     # front
 75     - FRONT_IMAGE="${REGISTRY}/meshop/shop/front:${VERSION}"
 76     - docker build -f .ci/Dockerfile
 77       --build-arg APP_PATH="publish/front"
 78       --build-arg MAIN_DLL="MeShop.View.WWW.dll"
 79       --build-arg PORT="5555"
 80       --tag "$FRONT_IMAGE"
 81       .
 82     - docker push "$FRONT_IMAGE"
 83     # sso
 84     - SSO_IMAGE="${REGISTRY}/meshop/shop/sso:${VERSION}"
 85     - docker build -f .ci/Dockerfile
 86       --build-arg APP_PATH="publish/sso"
 87       --build-arg MAIN_DLL="MeShop.View.SSO.dll"
 88       --build-arg PORT="9999"
 89       --tag "$SSO_IMAGE"
 90       .
 91     - docker push "$SSO_IMAGE"
 92   cache:
 93     policy: pull
 94   rules:
 95     - if: "$CI_PIPELINE_SOURCE  == 'merge_request_event'"
 96       when: never
 97     - if: "$CI_COMMIT_REF_NAME == 'alpha'"
 98       when: on_success
 99     - if: "$CI_COMMIT_REF_NAME  == 'master'"
100       when: on_success
alpha-release-gitlab-ci.yml
复制代码

.ci/Dockerfile

复制代码
 1 # FROM docker.tidebuy.net/dotnet/core/sdk:3.1 AS tools-install
 2 # #RUN dotnet tool install --tool-path /dotnetcore-tools dotnet-trace
 3 # RUN dotnet tool install --tool-path /dotnetcore-tools dotnet-dump
 4 # #RUN dotnet tool install --tool-path /dotnetcore-tools dotnet-counters
 5 
 6 FROM docker.tidebuy.net/dotnet/core/aspnet:3.1
 7 WORKDIR /app
 8 
 9 COPY .ci/comic.ttf /usr/share/fonts/comic.ttf
10 COPY .ci/sources.list /etc/apt/sources.list
11 # COPY --from=tools-install /dotnetcore-tools /opt/dotnetcore-tools
12 # ENV PATH="/opt/dotnetcore-tools:${PATH}"
13 
14 RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf && \
15     sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list &&\
16     apt-get update && \
17     apt-get install -y libgdiplus libc6-dev postfix && \
18     postconf -e 'mydestination=$myhostname, localhost, localhost.localdomain, localhost' &&\
19     ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll && \
20     apt-get clean && \
21     rm -rf /var/lib/apt/lists/* \
22         /etc/*/inetutils-syslogd \
23         /tmp/*
24 
25 ARG APP_PATH
26 ARG MAIN_DLL
27 ARG PORT
28 
29 COPY ${APP_PATH} . 
30 ENV MAIN_DLL=${MAIN_DLL}
31 
32 EXPOSE ${PORT}
33 
34 ENTRYPOINT  ["sh", "-c","service postfix restart && /usr/bin/dotnet /app/$MAIN_DLL"]
Dockerfile
复制代码

.ci/kube-config-template

复制代码
 1 apiVersion: v1  
 2 clusters:  
 3 - cluster:
 4     certificate-authority-data: {{ KUBE_API_CA }}
 5     server: https://{{ KUBE_API_ADDRESS }}
 6   name: helm
 7 contexts:  
 8 - context:
 9     cluster: helm
10     namespace: meshop-deverr
11     user: helm
12   name: helm
13 current-context: "helm"  
14 kind: Config  
15 preferences: {}  
16 users:  
17 - name: helm
18   user:
19     token: {{ HELM_USER_TOKEN }}
kube-config-template
复制代码

 

 

posted @   —八戒—  阅读(683)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示