| 知乎专栏 | 多维度架构 |
Java 缓存设置
image: maven:3.5.0-jdk-8
variables:
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
- target/
stages:
- build
- test
- package
build:
stage: build
script: mvn compile
unittest:
stage: test
script: mvn test
package:
stage: package
script: mvn package
artifacts:
paths:
- target/java-project-0.0.1-SNAPSHOT.jar
Node 缓存设置
cache:
paths:
- node_modules
- dist
# variables:
# GIT_STRATEGY: clone
# GIT_STRATEGY: fetch
# GIT_CHECKOUT: "false"
stages:
- build
- test
- deploy
build-job:
stage: build
only:
- master
- testing
- development
script:
- echo "Compiling the code..."
# - cnpm cache verify
- cnpm install
- cnpm run build:stage
# - cnpm run build:prod
- echo "Compile complete."
test-job:
stage: test
variables:
GIT_STRATEGY: none
only:
- master
- testing
- development
script:
- echo "Running unit tests..."
- sed -i 's#192.168.20.180#192.168.30.4#g' dist/umi.*.js
- ls dist/*
# - rm -rf *.tar.gz
# - tar zcvf www.netkiller.cn.$(date -u +%Y-%m-%d.%H%M%S).tar.gz dist
# - ls *.tar.gz
- echo "Test complete."
artifacts:
name: "$CI_PROJECT_NAME"
paths:
- dist/*
# - ./*.tar.gz
deploy-test-job:
stage: deploy
variables:
GIT_STRATEGY: none
only:
- testing
- development
script:
- echo "Deploying application..."
- rsync -auzv dist/* www@192.168.30.10:/opt/www.netkiller.cn/
- echo "Application successfully deployed."
deploy-prod-job:
stage: deploy
only:
- master
script:
- echo "Deploying application..."
- rsync -auzv --delete dist/* www@192.168.30.10:/opt/www.netkiller.cn/
- echo "Application successfully deployed."
image: mileschou/php-testing-base:7.0
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- composer install
cache:
untracked: true
artifacts:
paths:
- vendor/
test_job:
stage: test
script:
- php vendor/bin/codecept run
dependencies:
- build_job
deploy_job:
stage: deploy
script:
- echo Deploy OK
only:
- release
when: manual
only:
- master
tags:
- ansible
services: - mysql variables: # Configure mysql service (https://hub.docker.com/_/mysql/) MYSQL_DATABASE: hello_world_test MYSQL_ROOT_PASSWORD: mysql connect: image: mysql script: - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
在 gitlab-runner register 的时候会提示:Please enter the gitlab-ci tags for this runner (comma separated):
如果你输入了标签就需要在 Pipeline 中设置 tags 否则 Pipeline 将不运行。
# This file is a template, and might need editing before it works on your project.
# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/README.html#stages
stages: # List of stages for jobs, and their order of execution
- build
- test
- deploy
build-job: # This job runs in the build stage, which runs first.
stage: build
tags:
- neo
script:
- echo "Compiling the code..."
- echo "Compile complete."
unit-test-job: # This job runs in the test stage.
stage: test # It only starts when the job in the build stage completes successfully.
tags:
- neo
script:
- echo "Running unit tests... This will take about 60 seconds."
- sleep 60
- echo "Code coverage is 90%"
lint-test-job: # This job also runs in the test stage.
stage: test # It can run at the same time as unit-test-job (in parallel).
script:
- echo "Linting code... This will take about 10 seconds."
- sleep 10
- echo "No lint issues found."
deploy-job: # This job runs in the deploy stage.
stage: deploy # It only runs when *both* jobs in the test stage complete successfully.
script:
- echo "Deploying application..."
- echo "Application successfully deployed."
#image: java:8
#image: maven:latest
image: maven:3.5.0-jdk-8
stages:
- build
- test
- package
build:
stage: build
script: mvn compile
unittest:
stage: test
script: mvn test
package:
stage: package
script: mvn package
artifacts:
paths:
- target/java-project-0.0.1-SNAPSHOT.jar
before_script: - echo "Execute scripts which are required to bootstrap the application. !" after_script: - echo "Clean up activity can be done here !." stages: - build - test - package - deploy variables: MAVEN_CLI_OPTS: "--batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" cache: paths: - .m2/repository/ - target/ build: stage: build image: maven:latest script: - mvn $MAVEN_CLI_OPTS clean compile test: stage: test image: maven:latest script: - mvn $MAVEN_CLI_OPTS test package: stage: package image: maven:latest script: - mvn $MAVEN_CLI_OPTS package artifacts: paths: [target/test-0.0.1.war] deploy_test: stage: deploy script: - echo "######## To be defined ########" environment: staging deploy_prod: stage: deploy script: - echo "######## To be defined ########" only: - master environment: production
build site:
image: node:6
stage: build
script:
- npm install --progress=false
- npm run build
artifacts:
expire_in: 1 week
paths:
- dist
unit test:
image: node:6
stage: test
script:
- npm install --progress=false
- npm run unit
deploy:
image: alpine
stage: deploy
script:
- apk add --no-cache rsync openssh
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_dsa
- chmod 600 ~/.ssh/id_dsa
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- rsync -rav --delete dist/ user@server.com:/your/project/path/