<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Gitlab Registries

      在項目開發和部署過程中,我們常常需要一套私有倉庫,比如 Code RepositoryPackage RepositoryDocker Registry 等。

      • Code Repository:在 github 或 gitlab 或 gitee 等平臺上創建私有項目;或搭建本地代碼服務器,一般常用 gitlab 開源版本搭建。
      • Package Registry:以 nuget 為例,官方 nuget.org 是不提供私有空間的,因此我們常用 baget(只支持 nuget)、nexus(支持多種類型)搭建私有 Package Registry。
      • Docker Registry:私有 Docker 鏡像倉庫,常用于本地構建、遠程部署場景,可使用 registry 搭建。

      其實,如果你使用 Gitlab 托管代碼,那么要知道它同時也提供了 Package 和 Docker 倉儲服務。就個人而言,Gitlab 涵蓋了博主大部分項目的 CI/CD 主環節,不需要額外對接第三方服務。

      Package Registry

      下面以 nuget source 為例,在 gitlab.com 上搭建 Package Registry:

      1. 新建一個空項目或使用現有項目(項目中包含什么無關緊要),得到它的 Project ID,我們的 nuget source 就是 https://gitlab.com/api/v4/projects/{Project_ID}/packages/nuget/index.json。

      2. 創建該項目或該項目所屬 groupDeploy Token,得到相應的用戶名和密碼,用于登錄并管理 nuget source。

      3. 在 gitlab.com 中打開源代碼項目(該項目將打包 .nupkg 文件并發布到 nuget source,不一定要是前兩步中的項目)的 CI/CD 選項,添加兩個變量—— CI_PKG_DEPLOY_USERCI_PKG_DEPLOY_PASSWORD ——分別對應第 2 步的用戶名和密碼。當然變量名可以隨意取。

      4. 創建 gitlab-runner (假設以 docker 方式,下同)并編寫 .gitlab-ci.yml 到源代碼項目中。注意其中用到第 3 步添加的變量。

      image: mcr.microsoft.com/dotnet/sdk:6.0 # 默認每次 runner 執行時都會重新拉取鏡像,可在 config.toml 中設置 pull_policy = "if-not-present",本地沒有時再拉取
      
      stages:
        - deploy
      
      deploy domain:
        stage: deploy
        script:
          - dotnet build -c Release xxx/xxx.csproj  # 微軟官網說 dotnet pack(不帶 --no-build) 會先自動 build,實則不然,所以加了這句
          - dotnet pack --no-build -c Release Domain/Domain.csproj
          - dotnet nuget add source "${CI_API_V4_URL}/projects/123456/packages/nuget/index.json" --name gitlab --username $CI_PKG_DEPLOY_USER --password $CI_PKG_DEPLOY_PASSWORD --store-password-in-clear-text # .net 平臺暫不支持該場景下的密碼加密,所以配置為明文傳輸
          - dotnet nuget push "xxx/bin/Release/*.nupkg" --source gitlab
        rules:  # 至少從 Gitlab 16.0 起,`only` and `except` are not being actively developed. `rules` is the preferred keyword to control when to add jobs to pipelines.
          - if: $CI_COMMIT_BRANCH == "master"
            changes: 
              - "xxx/**/*"    
        environment: production  # 這個配置主要用于歸類,關系不大
        tags: # job 一定要指定 tags,不是說留空就會執行默認全部 runners。
          - demo
      

      注意其中腳本因未涉及到 docker 指令,所以此處不需要 Docker-in-Docker(參看gitlab-runner 中的 Docker-in-Docker)。

      1. 提交源代碼項目,觸發執行 pipeline

      2. 添加 nuget source

      dotnet nuget add/update source gitlab -s https://gitlab.com/api/v4/projects/123456/packages/nuget/index.json -u deploy_name -p deploy_token
      

      其中參數 -u deploy_name -p deploy_token 同樣是之前創建的 Deploy Token

      現在,就能在新的 nuget source 上找到剛發布的 xxx.version.nupkg。

      ps:You can store different package types in one GitLab project。

      nuget.config

      有時需要在腳本中指定 nuget source,比如 dotnet restore "demo/demo.csproj" --configfile "nuget.config"。如果涉及到用戶名密碼認證,那么需要 nuget.config 提供相關信息,如下:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
      	<packageSources>
      		<add key="nuget" value="https://api.nuget.org/v3/index.json" />
      		<add key="gitlab" value="https://gitlab.com/api/v4/projects/123456/packages/nuget/index.json" />
      	</packageSources>
      	<packageSourceCredentials>
      		<gitlab>
      			<add key="Username" value="xxxxxx" />
                              <!-- password,加密密碼僅在 Windows 上受支持,并且僅當在同一臺計算機上使用并且通過與原始加密相同的用戶進行解密;所以我們一般只能使用 ClearTextPassword,建議采用環境變量的方式提高安全性 -->
      			<add key="ClearTextPassword" value="xxxxxx or %env_name%" />
      		</gitlab>
      	</packageSourceCredentials>
      </configuration>
      

      Docker Registry

      一般來說,生成的鏡像保存在對應的項目中即可,不必像 Package Registry 一樣考慮存放位置。下面以博主實際項目中的 .gitlab-ci.yml 為例介紹 Docker Registry 的使用。

      variables:
       # 定義鏡像名稱和 tag,這里使用 $CI_REGISTRY_IMAGE 和 $CI_COMMIT_REF_NAME 兩個預定義變量表示,形如 registry.gitlab.com/group/project:master
       IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
      
      # 定義兩個 job
      stages:
       # 生成鏡像然后發布到 Docker Registry
       - build then push docker image
       # 從 Docker Registry 拉取鏡像并創建容器
       - pull docker image to deploy
      
      build:
       stage: build then push docker image
       # Docker in Docker。官方建議顯式指定相同版本號,以免版本不一致導致的兼容性問題。
       image: docker:20.10.16
       services:
        - docker:20.10.16-dind
       script: 
        # 1. 登錄到 Docker Registry。如果項目代碼是由 gitlab 托管,那么照搬該句即可,句中的變量會自動賦值,必定登錄成功
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        # 2. 生成鏡像
        - docker build -f Project/Dockerfile -t $IMAGE_TAG .
        # 3. 推送鏡像。自動推送至鏡像名中的 Docker Registry 地址。
        - docker push $IMAGE_TAG
       after_script:
        # 4. 刪除本地鏡像
        - docker rmi $IMAGE_TAG
       tags:
        - demo
      
      deploy:
       stage: pull docker image to deploy
       image: ubuntu:latest
       before_script: # ssh 密鑰設置,事先在待部署的服務器上安裝公鑰,臨時容器(這里是 ubuntu)中設置私鑰(具體設置腳本此處略過不表)
       script:
        # 登錄服務器并執行相關指令,注意先刪除舊容器和鏡像
        - ssh root@SERVER_IP "docker stop demo; docker rm demo; docker rmi $IMAGE_TAG; docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY; docker pull $IMAGE_TAG; docker run -d --name demo -p 443:443 -p 80:80 -e ASPNETCORE_ENVIRONMENT=Production -e ASPNETCORE_URLS="https://+;http://+" $IMAGE_TAG; docker logout"
       tags:
        - demo
      
      posted @ 2023-06-02 10:41  萊布尼茨  閱讀(513)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 忘忧草影视| 精品无码国产日韩制服丝袜| 亚洲成aⅴ人在线电影| 日本乱码在线看亚洲乱码| 极品无码人妻巨屁股系列| 亚洲国产美女精品久久久| 人妻出轨av中文字幕| 国产永久免费高清在线观看| 国产四虎永久免费观看| 国产成人精品一区二区三区免费| 国产69精品久久久久99尤物| 中文人妻av高清一区二区| 婷婷色综合视频在线观看| 欧美奶涨边摸边做爰视频| 国产成人精品无码播放| 中文字幕va一区二区三区| 成人av一区二区三区| 四虎永久在线精品无码视频| 亚成区成线在人线免费99| 亚洲粉嫩av一区二区黑人| 天堂va蜜桃一区二区三区| 国产永久免费高清在线| 日韩精品一区二区三区视频| 亚洲天堂成人一区二区三区| 亚洲精品一区二区美女| 无码精品国产va在线观看dvd| 人妻少妇精品视频二区| 亚洲男女羞羞无遮挡久久丫| 少妇人妻av无码专区| 成人精品色一区二区三区| 精品一区二区不卡无码AV| 99久久99久久久精品久久| 翘臀少妇被扒开屁股日出水爆乳| 五级黄高潮片90分钟视频| 日韩av日韩av在线| 亚洲高清WWW色好看美女| 91中文字幕一区在线| 欧美人与动牲交精品| 97人妻免费碰视频碰免| 人妻无码中文字幕| 精品国产亚洲午夜精品a|