api gitlab 取文件_搭建gitlab私服,持续集成springboot项目(新手向)
随着微服务的火热,传统的手动部署服务已经渐渐的无法满足实际工程需求,当一个项目按模块拆分成10个的时候,使用ci-自动集成模式就能完美的解决这一问题。本文主要介绍gitlab+gitlab-runner搭建git私服+持续集成环境。准备一台电脑pc或者liunx安装docker通过docker-compose直接部署gitlab服务,docker-compose upv...
·
随着微服务的火热,传统的手动部署服务已经渐渐的无法满足实际工程需求,当一个项目按模块拆分成10个的时候,使用ci-自动集成模式就能完美的解决这一问题。
本文主要介绍gitlab+gitlab-runner搭建git私服+持续集成环境。
- 准备一台电脑pc或者liunx
- 安装docker
- 通过docker-compose直接部署gitlab服务,docker-compose up
version: '2'
services:
redis:
restart: always
image: sameersbn/redis:4.0.9-2
volumes:
- redis-data:/var/lib/redis:Z
postgresql:
restart: always
image: sameersbn/postgresql:10-2
volumes:
- postgresql-data:/var/lib/postgresql:Z
environment:
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
gitlab:
restart: always
image: sameersbn/gitlab:12.3.5
depends_on:
- redis
- postgresql
ports:
- "10080:80"
- "10022:22"
volumes:
- gitlab-data:/home/git/data:Z
environment:
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=password
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
- TZ=Asia/Kolkata
- GITLAB_TIMEZONE=Kolkata
- GITLAB_HTTPS=false
- SSL_SELF_SIGNED=false
- GITLAB_HOST=localhost
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022
- GITLAB_RELATIVE_URL_ROOT=
- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
- GITLAB_ROOT_PASSWORD=
- GITLAB_ROOT_EMAIL=
- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
- GITLAB_NOTIFY_PUSHER=false
- GITLAB_EMAIL=notifications@example.com
- GITLAB_EMAIL_REPLY_TO=noreply@example.com
- GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
- GITLAB_BACKUP_SCHEDULE=daily
- GITLAB_BACKUP_TIME=01:00
- SMTP_ENABLED=false
- SMTP_DOMAIN=localhost
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_STARTTLS=false
- OAUTH_ENABLED=false
- OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
- OAUTH_ALLOW_SSO=
- OAUTH_BLOCK_AUTO_CREATED_USERS=true
- OAUTH_AUTO_LINK_LDAP_USER=false
- OAUTH_AUTO_LINK_SAML_USER=false
- OAUTH_EXTERNAL_PROVIDERS=
- OAUTH_CAS3_LABEL=cas3
- OAUTH_CAS3_SERVER=
- OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
- OAUTH_CAS3_LOGIN_URL=/cas/login
- OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
- OAUTH_CAS3_LOGOUT_URL=/cas/logout
- OAUTH_GOOGLE_API_KEY=
- OAUTH_GOOGLE_APP_SECRET=
- OAUTH_GOOGLE_RESTRICT_DOMAIN=
- OAUTH_FACEBOOK_API_KEY=
- OAUTH_FACEBOOK_APP_SECRET=
- OAUTH_TWITTER_API_KEY=
- OAUTH_TWITTER_APP_SECRET=
- OAUTH_GITHUB_API_KEY=
- OAUTH_GITHUB_APP_SECRET=
- OAUTH_GITHUB_URL=
- OAUTH_GITHUB_VERIFY_SSL=
- OAUTH_GITLAB_API_KEY=
- OAUTH_GITLAB_APP_SECRET=
- OAUTH_BITBUCKET_API_KEY=
- OAUTH_BITBUCKET_APP_SECRET=
- OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
- OAUTH_SAML_IDP_CERT_FINGERPRINT=
- OAUTH_SAML_IDP_SSO_TARGET_URL=
- OAUTH_SAML_ISSUER=
- OAUTH_SAML_LABEL="Our SAML Provider"
- OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
- OAUTH_SAML_GROUPS_ATTRIBUTE=
- OAUTH_SAML_EXTERNAL_GROUPS=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
- OAUTH_CROWD_SERVER_URL=
- OAUTH_CROWD_APP_NAME=
- OAUTH_CROWD_APP_PASSWORD=
- OAUTH_AUTH0_CLIENT_ID=
- OAUTH_AUTH0_CLIENT_SECRET=
- OAUTH_AUTH0_DOMAIN=
- OAUTH_AUTH0_SCOPE=
- OAUTH_AZURE_API_KEY=
- OAUTH_AZURE_API_SECRET=
- OAUTH_AZURE_TENANT_ID=
volumes:
redis-data:
postgresql-data:
gitlab-data:
- 账号:root
- 密码:5iveL!fe
- 访问localhost:10080,自动提示修改密码
此处gitlab搭建参考自sameersbn/docker-gitlabgithub.com
- 安装gitlab-runner服务,去官网找对应的环境安装
- 之后注册你的gitlab-runner服务
gitlab-ci-multi-runner register
- 在项目的设置内找到gitlab-runner必要的参数 域名和token
- 最后一步建议选择shell,因为作者选的是shell
- 创建一个项目并编写.gitlab-ci.yml文件,文件参考
stages:
- deploy #步骤名称
deploy:
stage: deploy #步骤名称
tags:
- strategy #标签
only:
- master #当且仅当master分支合并时 出发该ci脚本
script: #ci脚本
- mvn clean package
- "docker build . -t strategy:last"
- docker stop strategy_image || true
- docker rm strategy_image || true
- docker run --name strategy_image -p 7002:80 -d strategy:last
这里解释一下自己理解的gitlab runner工作原理和gitlab-ci.yml这个文件内容
首先 定义一个deploy工作任务
- 该任务在master分支合并时被触发且执行定义好的script脚本
由于gitlab-runner原理是 当定义的分支合并时
- 执行 git clone命令拉取该分支代码
- 在代码根目录执行脚本
所以作者的脚本应该很好理解
- 在根目录执行mvn clean package打jar包(小公司不需要测试用例 如需要请加上)
- 执行dockerfile构建镜像(因为作者的项目都是跑在docker上的)
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/strategy.jar /app/app.jar
COPY target/lib /app/lib
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dspring.profiles.active=prod","/app/app.jar"]
分享一下dockerfile
- 镜像很简单 copy jar包 安装java 执行
- 最后触发ci时
开发测试上线时再也不用自己手动部署项目啦
更多推荐
所有评论(0)