This commit is contained in:
liuxueli
2019-12-11 17:29:00 +08:00
parent 6c6ba3f3bf
commit 2c249d6716
2 changed files with 157 additions and 0 deletions

123
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,123 @@
image: "docker:stable"
services:
- docker:dind
variables:
GIT_STRATEGY: "clone"
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
stages:
- build
- package
- release
- docker
.build_before_script:
before_script:
- mkdir -p /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_NAMESPACE/
- ln -s $CI_PROJECT_DIR /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
- cd /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
.build_fw_dns_plug:
extends: .build_before_script
image: git.mesalab.cn:7443/tango/tsg_master:master
script:
- source /etc/profile.d/MESA.sh
- mkdir -p build
- cd build
- cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- make
- make package
.package_fw_dns_plug:
extends: .build_before_script
image: git.mesalab.cn:7443/tango/tsg_master:master
script:
- source /etc/profile.d/MESA.sh
- mkdir -p build
- cd build
- cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- make package
build:
stage: build
extends: .build_fw_dns_plug
tags:
- share
variables:
BUILD_TYPE: "Debug"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
paths:
- ./build/*.rpm
except:
- tags
fw_dns_plug_debug:
stage: package
extends: .package_fw_dns_plug
tags:
- share
variables:
BUILD_TYPE: "Debug"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
paths:
- ./build/*.rpm
only:
- tags
fw_dns_plug_release:
stage: package
extends: .package_fw_dns_plug
tags:
- share
variables:
BUILD_TYPE: "Release"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
paths:
- ./build/*.rpm
only:
- tags
fw_dns_plug_release-release:
stage: release
image: git.mesalab.cn:7443/tango/tsg_master:master
tags:
- share
variables:
ARTIFACTS_JOB: "fw_dns_plug_release"
PROJECT_NAME: "fw_dns_plug"
USER_DEFINE: "release"
only:
- tags
script:
- /bin/bash -x ./autorelease.sh $CI_API_V4_URL $CI_PROJECT_URL $CI_PROJECT_ID $CI_TOKEN $CI_COMMIT_TAG $ARTIFACTS_JOB $PROJECT_NAME $USER_DEFINE
fw_dns_plug_debug-release:
stage: release
image: git.mesalab.cn:7443/tango/tsg_master:master
tags:
- share
variables:
ARTIFACTS_JOB: "fw_dns_plug_debug"
PROJECT_NAME: "fw_dns_plug"
USER_DEFINE: "release"
only:
- tags
script:
- /bin/bash -x ./autorelease.sh $CI_API_V4_URL $CI_PROJECT_URL $CI_PROJECT_ID $CI_TOKEN $CI_COMMIT_TAG $ARTIFACTS_JOB $PROJECT_NAME $USER_DEFINE
build-docker:
stage: docker
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
tags:
- share
only:
- master

34
autorelease.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/sh
if [ $# -lt 8 ] ; then
echo "USAGE: ./autorelease.sh [API_V4_URL] [PROJECT_URL]
[PROJECT_ID] [TOKEN]
[COMMIT_TAG] [JOB] [PROJECT_NAME] [USER_DEFINE]"
echo "$1; $2; $3; $4; $5; $6; $7; $8"
exit 1;
fi
CI_API_V4_URL=$1
CI_PROJECT_URL=$2
CI_PROJECT_ID=$3
CI_TOKEN=$4
CI_COMMIT_TAG=$5
ARTIFACTS_JOB=$6
CI_PROJECT_NAME=$7
USER_DEFINE=$8
res=`echo -e "curl --header \"PRIVATE-TOKEN: $CI_TOKEN\" $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG -o /dev/null -s -w %{http_code}"| /bin/bash`
if [[ $res == "200" ]]; then
eval $(echo -e "curl --request POST --header \"PRIVATE-TOKEN: $CI_TOKEN\" \
--data name=\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\" \
--data url=\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
$CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG/assets/links")
else
eval $(echo -e "curl --header 'Content-Type: application/json' --header \
\"PRIVATE-TOKEN: $CI_TOKEN\" --data '{ \"name\": \"$CI_COMMIT_TAG\", \
\"tag_name\": \"$CI_COMMIT_TAG\", \"description\": \"auto_release\",\
\"assets\": { \"links\": [{ \"name\": \
\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\", \"url\": \
\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\
}] } }' --request POST $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/")
fi