知乎专栏 | 多维度架构 |
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/