搭建GitLab-CI shared runner

最近想试试搭一个ci,开始在自己的服务器上试一试,下了gitlab发现我可怜的单核2g内存快给占满了,直接放弃,不要问为什么不加配置,问就是没钱。

然后发现gitlab还有个免费runner计划,可以在settings-CI/CD-Runner下找到,我目前看到是有八个。搭建GitLab-CI shared runner_第1张图片为本项目开启shared Runner之后就可以使用了。

在项目根目录下添加.gitlab-ci.yml,或者在项目主页上直接生成,本以为是顺利的开始没想到是万恶之源!

cache:
  paths:
    - target/
stages:
  - build
  - test
  - deploy

build-job:
  when: always
  stage: build
  only:
    - develop
  tags:
    - gitlab-org
  script:
    - wget https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-x64_linux_11.0.3_7.tar.gz
    - wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    - ls -ld *
    - tar -xvf ./OpenJDK11U-x64_linux_11.0.3_7.tar.gz
    - tar -zvxf ./apache-maven-3.3.9-bin.tar.gz
    - ls -ld *
    - cp -rf settings.xml ./apache-maven-3.3.9/conf/
    - mv apache-maven-3.3.9 /usr/local
    - mv openjdk-11.0.3+7 /usr/local
    - sed -i '/$/a JAVA_HOME=/usr/local/openjdk-11.0.3+7' /etc/profile
    - sed -i '/$/a MAVEN_HOME=/usr/local/apache-maven-3.3.9' /etc/profile
    - sed -i '/$/a JRE_HOME=\$JAVA_HOME/' /etc/profile
    - sed -i '/$/a PATH=\$PATH:\$JAVA_HOME/bin:\$JRE_HOME/bin:\$MAVEN_HOME/bin' /etc/profile
    - sed -i '/$/a CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JRE_HOME/lib' /etc/profile
    - sed -i '/$/a export JAVA_HOME JRE_HOME PATH CLASSPATH' /etc/profile
    - source /etc/profile
    - java -version
    - mvn -v
    - mvn clean package -Dmaven.test.skip=true
    - echo "success!!!"

deploy-web-test:
  when: on_success
  stage: deploy
  tags:
    - gitlab-org
  script:
    - ls -ld *
    - cd $CI_PROJECT_DIR
    - ls -ld *
    - cd $CI_PROJECT_DIR/web
    - ls -ld *
    - cd $CI_PROJECT_DIR/web/target
    - ls -ld *

用这个是直接以docker运行的,各种环境都没有,所以要重新下载jdk/maven,这么点配置踩的坑简直一言难尽。。。以后再更新吧。。

——————分割线——————

今天又试了试把前端项目搭了一下终于跑通了(虽然前端部署太easy了但是生命在于折腾嗯……)

以下

cache:
  key: xxx
  untracked: true
  paths:
    - xxxxxx
#上边说过每次build都需要重新安装环境,这里就可以配置缓存,untracked:true就是会缓存git没有追踪的文件,每次build之后添加到缓存中,如果你有多个项目,多个runner,可以通过不同的key来读取不同的缓存。
stages:
  - build
  - deploy
  
build-job:
  when: always
  stage: build
  only:
    - master
  tags:
    - gitlab-org
#这里如果你用的是gitlab提供的shared-runner,你需要指定需要运行job的runner的tag,在setting-CICD-Runner里可以看到。

  script:
    - ls -ld *
    # - echo "安装node..."
    # - wget https://nodejs.org/dist/v10.14.0/node-v10.14.0-linux-x64.tar.xz
    # - tar -xf node-v10.14.0-linux-x64.tar.xz
    # - mv node-v10.14.0-linux-x64 node
    # - ls -ld *
    # - pwd
    - cat /etc/profile
    - echo "配置环境变量..."
    - sed -i '$a\ NODE_HOME=$PATH:/你解压的node目录' /etc/profile
    - sed -i '$a\ PATH=$PATH:$NODE_HOME/bin' /etc/profile
    - cat /etc/profile
    - echo "刷新配置..."
    - source /etc/profile
    # - node -v
    - cd /你的项目路径
    # - echo "安装npm..."
    # - npm install
    # - npm -v
    - echo "npm build..."
    - CI=false npm run build
#不加CI=false会造成把warning当做error从而build失败
    - echo "build success!"
#可以看到这些初始化的配置我给注掉了,第一次运行需要下载并配置环境,之后就可以注掉通过读取缓存来节省下载解压的时间,
deploy-web-test: 
  when: on_success
  stage: deploy
  environment: 
    name: Staging
    url: "$DEPLOY_URL"
#gitlab-setting-CI/CD-Varible设置你要部署服务器地址
  only:
    - master
  tags:
    - gitlab-org
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - mkdir -p ~/.ssh
    - eval $(ssh-agent -s)
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
#ssh登录使用
  script:
    - ls -ld *
    - mv build front
    - ls -ld *
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
#$SSH_PRIVATE_KEY同样,是你在gitlab设置的ssh秘钥
    - 已经可以连上你的服务器了,为所欲为吧骚年!

你可能感兴趣的:(java,运维,gitlab,ci,自动化部署)