-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
129 lines (122 loc) · 3.5 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
image: node:12.14.0
stages:
- build
- release
- upload
- sonarqube-check
before_script:
- mkdir -p ~/.ssh
- touch ~/.ssh/id_rsa
- touch ~/.ssh/config
- chmod 700 ~/.ssh/id_rsa
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- echo "$SSH_CONFIG" > ~/.ssh/config
- echo "140.82.112.3 github.com" >> /etc/hosts
- |
if [ `grep -c "npmjs" yarn.lock` -ne '0' ];then
echo 不许使用 npmjs.org 的依赖,太卡,检查 yarn.lock;
exit 1;
fi
- |
if [ `grep -c "cnpm" yarn.lock` -ne '0' ];then
echo 不许使用 cnpm 的依赖,太卡,检查 yarn.lock;
exit 1;
fi
- |
if [ `grep -c "yarnpkg.com" yarn.lock` -ne '0' ];then
echo 不许使用 yarnpkg.com 的依赖,太卡,检查 yarn.lock;
exit 1;
fi
- |
case "$CI_COMMIT_REF_NAME" in
"master")
#echo $(sh ./increment_version.sh) > version.txt
export VERSION=$(cat version.txt)
OSS_URL=${OSS_PROD}
;;
*)
export VERSION=$(cat version.txt)-${CI_COMMIT_SHORT_SHA}
OSS_URL=${OSS_DAILY}
;;
esac
build:
stage: build
rules:
- if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_TAG =~ "/^$/"'
when: manual
- if: '$CI_COMMIT_REF_NAME == "master" && $CI_COMMIT_TAG =~ "/^$/"'
when: on_success
image: docker:latest
script:
- docker build -t authing-wechat-official-account:${VERSION} .
- mkdir docker-image
- docker save -o docker-image/${CI_PROJECT_NAME}-${VERSION}-docker.tar authing-wechat-official-account:${VERSION}
artifacts:
untracked: false
paths:
- docker-image
expire_in: 3 days
release:
stage: release
rules:
- if: '$CI_COMMIT_REF_NAME == "master" && $CI_COMMIT_TAG =~ "/^$/"'
script:
- echo $CI_COMMIT_REF_NAME
- git config --global user.name "${GITLAB_USER_NAME}"
- git config --global user.email "${GITLAB_USER_EMAIL}"
- git tag -a ${VERSION} -m "${VERSION}"
- git push [email protected]:authing-next/authing-wechat-official-account.git --tags
artifacts:
untracked: false
paths:
- build
expire_in: 30 days
dependencies:
- build
# upload:oss:
# stage: upload
# rules:
# - if: '$CI_COMMIT_TAG =~ "/^$/"'
# image:
# name: fuergaosi/ossutil:latest
# script:
# - >
# ossutil --access-key-id ${ALIYUN_ACCESS_KEY}
# --access-key-secret ${ALIYUN_ACCESS_KEY_SECRET}
# -e oss-cn-beijing.aliyuncs.com cp -r docker-image oss://${OSS_URL}/authing-wechat-official-account/${VERSION}/docker
# dependencies:
# - build
upload:docker:
stage: upload
rules:
- if: '$CI_COMMIT_TAG =~ "/^$/"'
image: docker:latest
script:
- docker load < docker-image/${CI_PROJECT_NAME}-${VERSION}-docker.tar
- docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWD} ${DOCKER_REPO}
- export IMAGE_NAME=${DOCKER_REPO}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}
- docker tag authing-wechat-official-account:${VERSION} ${IMAGE_NAME}:${VERSION}
- docker push ${IMAGE_NAME}:${VERSION}
- |
if [ "$CI_COMMIT_REF_NAME" == "master" ]; then
docker tag ${IMAGE_NAME}:${VERSION} ${IMAGE_NAME}:latest;
docker push ${IMAGE_NAME}:latest;
fi
dependencies:
- build
sonarqube-check:
stage: sonarqube-check
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: ['']
variables:
SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar'
cache:
key: '${CI_JOB_NAME}'
paths:
- .sonar/cache
script:
- sonar-scanner
allow_failure: true
only:
- master