include: local: 'npm.yml' stages: - npm - before_package - build - test - package - afert_package date: stage: before_package script: - DATE=`date '+%Y%m%d%H%M%S'` - echo DATE=${DATE} >> build.env - GIT_TAG_MESSAGE=`git tag -n10000 -l ${CI_COMMIT_TAG} | sed 's/'${CI_COMMIT_TAG}'//'|tr -d '\n\r '` - curl -H "Content-Type:application/json" -H "Data_Type:msg" -X POST --data '{"author":"'"${GITLAB_USER_NAME}"'","appname":"'"${CI_PROJECT_NAME}"'","blockname":"'"${CI_PROJECT_NAME}"'","version":"'"${CI_COMMIT_TAG}.${DATE}"'","description":"'"${GIT_TAG_MESSAGE}"'"}' http://${MIXIOT_MANAGER}/api/setblock only: - tags artifacts: reports: dotenv: build.env build-amd64: stage: build script: - rm -rf .git - if [ ${CI_COMMIT_TAG} ] ;then sed -i 's/version.*/version=\"'${CI_COMMIT_TAG}'\"/g' Version.ini; fi - if [ ${CI_COMMIT_TAG} ] ;then sed -i 's/release.*/release=\"'${DATE}'\"/g' Version.ini; fi - docker build --build-arg app=${CI_PROJECT_NAME} --build-arg repository=${DOCKERREPOSITORY_AL} --build-arg php=${PHP_NGINX_AL} -t ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 . - docker push ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 only: - master - tags #tag时重新打包更新版本号 package-amd64: stage: package script: - docker pull ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 - docker tag ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-amd64 - docker push ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-amd64 - docker rmi ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 only: - tags cache: {} build-arm64: stage: build script: - rm -rf .git - if [ ${CI_COMMIT_TAG} ] ;then sed -i 's/version.*/version=\"'${CI_COMMIT_TAG}'\"/g' Version.ini; fi - if [ ${CI_COMMIT_TAG} ] ;then sed -i 's/release.*/release=\"'${DATE}'\"/g' Version.ini; fi - tar -czf ${CI_PROJECT_NAME}.tar.gz * .[!.]* - ssh -p 60022 root@${ARM_SERVER} mkdir -p ${CODE_DIR}${CI_PROJECT_NAME} - scp -P 60022 ${CI_PROJECT_NAME}.tar.gz root@${ARM_SERVER}:${CODE_DIR}${CI_PROJECT_NAME} - ssh -p 60022 root@${ARM_SERVER} tar -xzf ${CODE_DIR}${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.tar.gz -C ${CODE_DIR}${CI_PROJECT_NAME} - ssh -p 60022 root@${ARM_SERVER} rm ${CODE_DIR}${CI_PROJECT_NAME}/${CI_PROJECT_NAME}.tar.gz - ssh -p 60022 root@${ARM_SERVER} docker build --build-arg app=${CI_PROJECT_NAME} --build-arg repository=${DOCKERREPOSITORY_AL} --build-arg php=${PHP_NGINX_AL} -t ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 ${CODE_DIR}${CI_PROJECT_NAME} - ssh -p 60022 root@${ARM_SERVER} docker save ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 -o ${CODE_DIR}${CI_PROJECT_NAME}-arm64.tar - scp -P 60022 root@${ARM_SERVER}:${CODE_DIR}${CI_PROJECT_NAME}-arm64.tar . - ssh -p 60022 root@${ARM_SERVER} rm -rf ${CODE_DIR}${CI_PROJECT_NAME} - ssh -p 60022 root@${ARM_SERVER} docker rmi ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 - docker load -i ${CI_PROJECT_NAME}-arm64.tar - docker push ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 - docker rmi ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 - rm -rf ${CI_PROJECT_NAME}-arm64.tar only: refs: - tags variables: - $ARM64 == "true" package-arm64: stage: package script: - docker pull ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 - docker tag ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-arm64 - docker push ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-arm64 - docker rmi ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-arm64 only: refs: - tags variables: - $ARM64 == "true" package: stage: afert_package retry: 2 script: - docker manifest create ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE} ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-amd64 ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}-arm64; - docker manifest push ${DOCKERREPOSITORY_AL}${CI_PROJECT_NAME}:${CI_COMMIT_TAG}.${DATE}; only: refs: - tags variables: - $ARM64 == "true" host87: stage: test retry: 2 script: - echo ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 - ssh root@192.168.88.87 docker pull ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 - ssh root@192.168.88.87 docker tag ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest-amd64 ${DOCKERREPOSITORY}${CI_PROJECT_NAME}:latest - ssh root@192.168.88.87 kubectl apply -f /etc/kubernetes/mixiot/fidis/${CI_PROJECT_NAME}.yaml #解决下一命令删除出现不存在的问题 - ssh root@192.168.88.87 kubectl delete -f /etc/kubernetes/mixiot/fidis/${CI_PROJECT_NAME}.yaml - ssh root@192.168.88.87 kubectl apply -f /etc/kubernetes/mixiot/fidis/${CI_PROJECT_NAME}.yaml only: - master dependencies: [] cache: {}