cncjs
1# https://circleci.com/blog/persisting-data-in-workflows-when-to-use-caching-artifacts-and-workspaces/
2
3version: 2.14
5orbs:6browser-tools: circleci/browser-tools@1.1.37
8workflows:9version: 210workflow:11jobs:12# The `build-tag` job will not run on all branches and will run only on the matched tags.13- build-tag:14filters:15branches:16ignore: /.*/17tags:18only: /v[0-9]+(\.[0-9]+)*/19# The `deploy-tag` job will not run on all branches and will run only on the matched tags.20- deploy-tag:21requires:22- build-tag23filters:24branches:25ignore: /.*/26tags:27only: /v[0-9]+(\.[0-9]+)*/28
29# https://circleci.com/docs/2.0/executor-types/
30jobs:31build-tag:32docker:33- image: cimg/node:14.21-browsers34steps:35- checkout36- browser-tools/install-browser-tools37- run:38name: Configuration39command: |40npm config set loglevel warn
41npm config set scripts-prepend-node-path auto
42- run:43name: Setup environment variables44command: |45echo "export CI_BRANCH=${CIRCLE_BRANCH}" >> $BASH_ENV
46echo "export CI_BUILD_NUMBER=${CIRCLE_BUILD_NUM}" >> $BASH_ENV
47echo "export CI_COMMIT=${CIRCLE_SHA1}" >> $BASH_ENV
48echo "export CI_COMMIT_SHORT=${CIRCLE_SHA1:0:8}" >> $BASH_ENV
49echo "export CI_TAG=${CIRCLE_TAG}" >> $BASH_ENV
50- run:51name: Install system packages52command: |53sudo apt-get update
54- run:55name: Check version56command: |57git --version
58node --version
59java --version
60google-chrome --version
61npm --version
62yarn --version
63- run:64name: Install packages65command: |66yarn
67- run:68name: Build69command: |70yarn clean
71yarn lint
72yarn test
73if [[ -z "$CI_TAG" ]]; then
74yarn build-latest
75else
76yarn build
77fi
78- run:79name: Archive build artifacts80command: |81tar -zcvf ci.tar.gz --directory dist cncjs
82- persist_to_workspace:83# Must be an absolute path, or relative path from working_directory.84# This is a directory on the container which is taken to be the root directory of the workspace.85root: .86paths:87- ci.tar.gz88deploy-tag:89docker:90- image: cimg/node:14.2191steps:92- setup_remote_docker93- checkout94- run:95name: Setup environment variables96command: |97echo "export CI_BRANCH=${CIRCLE_BRANCH}" >> $BASH_ENV
98echo "export CI_TAG=${CIRCLE_TAG}" >> $BASH_ENV
99- attach_workspace:100# Must be absolute path or relative path from working_directory101at: workspace102- run:103name: Extract build artifacts104command: |105mkdir -p dist
106tar zxvf workspace/ci.tar.gz --directory dist
107- run:108name: Build Docker image109command: |110DOCKER_BRANCH_TAG=$(echo $CI_TAG | sed -e 's/\//-/g')
111DOCKER_REPO=cncjs/cncjs
112
113echo "DOCKER_BRANCH_TAG=$DOCKER_BRANCH_TAG"
114echo "DOCKER_REPO=$DOCKER_REPO"
115
116echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin117docker build -f Dockerfile -t $DOCKER_REPO:$DOCKER_BRANCH_TAG .118docker images
119docker push $DOCKER_REPO:$DOCKER_BRANCH_TAG120docker tag $DOCKER_REPO:$DOCKER_BRANCH_TAG $DOCKER_REPO:latest121docker push $DOCKER_REPO:latest122