diff --git a/.circleci/build-docker.sh b/.circleci/build-docker.sh deleted file mode 100755 index d414e64..0000000 --- a/.circleci/build-docker.sh +++ /dev/null @@ -1,13 +0,0 @@ -TAG=app -IMAGE_NAME=$DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY -IMAGE_NAME_BUILDNUM=$IMAGE_NAME:${CIRCLE_BUILD_NUM} -IMAGE_NAME_LATEST=$IMAGE_NAME:latest - -docker build -t $TAG . -docker tag $TAG $IMAGE_NAME_BUILDNUM -docker tag $TAG $IMAGE_NAME_LATEST - -echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_LOGIN --password-stdin - -docker push $IMAGE_NAME_BUILDNUM -docker push $IMAGE_NAME_LATEST diff --git a/.circleci/config.yml b/.circleci/config.yml index 53410c2..6f90261 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,16 +1,25 @@ globals: + credentials: + dockerhub_username: &dockerhub_username anthonyjhoiro + + docker-config: - &docker-config image: cimg/node:16.10.0 auth: - username: anthonyjhoiro + username: *dockerhub_username password: $DOCKERHUB_PASSWORD + setup: - &install-cache restore_cache: keys: - npm-v1-dependencies-{{ checksum "yarn.lock" }} + - &lint-cache + restore_cache: + keys: + - npm-v1-lint-{{ .BuildNum }} version: 2.1 @@ -37,9 +46,7 @@ jobs: steps: - checkout - *install-cache - - restore_cache: - keys: - - npm-v1-lint-{{ .BuildNum }} + - *lint-cache - run: name: Check files format command: yarn format:check @@ -67,8 +74,8 @@ jobs: - *docker-config - image: circleci/postgres:9.6-alpine auth: - username: anthonyjhoiro - password: $DOCKERHUB_PASSWORD # context / project UI env-var reference + username: *dockerhub_username + password: $DOCKERHUB_PASSWORD environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres @@ -90,9 +97,7 @@ jobs: steps: - checkout - *install-cache - - restore_cache: - keys: - - npm-v1-lint-{{ .BuildNum }} + - *lint-cache - run: name: Generate doc command: yarn doc:build @@ -107,14 +112,69 @@ jobs: steps: - checkout - *install-cache - - setup_remote_docker + - setup_remote_docker: + docker_layer_caching: true - run: name: Build and Push docker image - command: | - .circleci/build-docker.sh - environment: - DOCKERHUB_LOGIN: anthonyjhoiro - DOCKERHUB_REPOSITORY: my-awesome-ci-expr + command: docker build -t . + + pushdockerhub: + docker: + - *docker-config + + environment: + DOCKERHUB_LOGIN: *dockerhub_username + DOCKERHUB_REPOSITORY: my-awesome-ci-expr + + steps: + - checkout + - *install-cache + - setup_remote_docker: + docker_layer_caching: true + + - run: echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_LOGIN --password-stdin + + - when: + condition: + equal: + - main + - << pipeline.git.branch >> + steps: + - run: + name: Push Latest and Build number + command: | + docker tag app $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM} + docker tag app $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:latest + docker push $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM} + docker push $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:latest + + - when: + condition: + equal: + - << pipeline.git.branch >> + - develop + steps: + - run: docker tag app $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM}-dev + - run: docker push $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM}-dev + - when: + condition: + or: + - matches: + value: << pipeline.git.branch >> + pattern: /^hotfix\/.*/ + + - matches: + value: << pipeline.git.branch >> + pattern: /^release\/.*/ + + steps: + - run: docker tag app $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM}-prep + - run: docker push $DOCKERHUB_LOGIN/$DOCKERHUB_REPOSITORY:${CIRCLE_BUILD_NUM}-prep + + - run: + name: Build and Push docker image + command: docker build -t . + @@ -140,9 +200,18 @@ workflows: filters: branches: # Run only on main branch - only: /^main/ + only: + - main + - develop + - /^hotfix\/.*/ + - /^release\/.*/ requires: - lint - test-ci - test-e2e + - pushdockerhub: + requires: + - builddocker + +