gitlab类似于github

首先从docker hub上下载镜像

docker pull gitlab/gitlab-ce

运行gitlab容器

sudo docker run --detach \
  --hostname 172.28.3.165 \
  --publish 8443:443 --publish 80:80 --publish 822:22 \
  --name gitlab \
  --restart always \
  --volume /ocean/gitlab/config:/etc/gitlab \
  --volume /ocean/gitlab/logs:/var/log/gitlab \
  --volume /ocean/gitlab/data:/var/opt/gitlab \
   gitlab/gitlab-ce

 

为了做持续集成,我们安装gitlab-runner

sudo docker run -d --name gitlab-runner  --restart always  -v /ocean/gitlab-runner/config:/etc/gitlab-runner   -v /var/run/docker.sock:/var/run/docker.sock  gitlab/gitlab-runner:latest

配置gitlab-runner,按照提示填即可

sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

 

提前部署好我们的站点

docker run  --name ihostel -d -p 8001:80 -v /ocean/www/ihostel/:/wwwroot -w /wwwroot/ microsoft/dotnet dotnet /wwwroot/Ascend.iHostel.NetCoreMVC.Web.dll

 

记录一下gitlab的脚本

image: oceanheyang/dotnet:2.2

stages:
    - deploy
    
variables:    
    HOST: ${HOST}
    USERNAME: ${USERNAME}
    PROJECT: "ihostel"
    PUBLISHER: "bin//release//netcoreapp2.1//publish//"
    REMOTEDIR: "/ocean/www/$PROJECT/"
    BAKDIR: "/ocean/bak/$CI_JOB_ID"
    PROJECTFOLDER: "Ascend.FrameworkCore.Example.Web"
    

before_script:
  - mkdir ~/.ssh
  - echo "StrictHostKeyChecking no" >> ~/.ssh/config
  - export SSHPASS=${PASSWORD}
  
deploy:
    stage: deploy
    tags: 
        - r
    script:  
    
        - cd $PROJECTFOLDER
        - dotnet publish -c release

        - sshpass -e ssh $USERNAME@$HOST "rm -r -f $REMOTEDIR"
        
        - cd $PUBLISHER
      
        - sshpass -e rsync -avz --exclude='.git' --exclude='.gitlab-ci.yml' . $USERNAME@$HOST:$REMOTEDIR

        - sshpass -e ssh $USERNAME@$HOST 'docker restart ihostel'




如果比较慢的话,可以临时挂代理

export http_proxy=
#取消代理
export http_proxy=""

 

记录一个bug,如果配置完之后不会执行

This job is stuck, because you don’t have any active runners that can run this job

Settings=>Ci/CD=>Runner=> Runners activated for this project=>Indicates whether this runner can pick jobs without tags 打钩



另外记录一下android的自动发布脚本

image: oceanheyang/gitlab-ci-react-native-android:1.1
stages:
    - deploy
variables:    
    HOST: ${HOST}
    USERNAME: ${USERNAME}    
cache:
    key: ${CI_PROJECT_ID}
    paths:
      - android/.gradle/
      - node_modules      
before_script:
  - mkdir ~/.ssh
  - echo "StrictHostKeyChecking no" >> ~/.ssh/config
  - export SSHPASS=${PASSWORD}  
deploy:
    stage: deploy
    tags: 
        - r 
    script:  
        - npm install
        - react-native link react-native-splash-scree
        - cd android
        - chmod +x gradlew 
        - ./gradlew assembleDebug
        - ls
        - cd app/build/outputs/apk/debug
        - mv app-debug.apk eapps-debug-${CI_PIPELINE_ID}.apk
        - sshpass -e rsync -avz --exclude='.git' --exclude='.gitlab-ci.yml' . $USERNAME@$HOST:/ocean/www/apk/data/Group/public/home/eapps/



顺便记录一下wiki系统的安装

docker run -d -p 8000:80 --name wiki \
    -v /ocean/dokuwiki/data:/dokuwiki/data \
    -v /ocean/dokuwiki/conf:/dokuwiki/conf \
    -v /ocean/dokuwiki/lib/plugins:/dokuwiki/lib/plugins \
    -v /ocean/dokuwiki/lib/tpl:/dokuwiki/lib/tpl \
    -v /ocean/dokuwiki/logs:/var/log \
    mprasil/dokuwiki



Leave a Reply