diff --git a/.circleci/config.yml b/.circleci/config.yml index 2299f7728..cd7fb8f65 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,4 +1,12 @@ -version: 2 +version: 2.1 + +executors: + docker-publisher: + environment: + IMAGE_NAME: outlinewiki/outline + docker: + - image: circleci/buildpack-deps:stretch + jobs: build: working_directory: ~/outline @@ -40,4 +48,88 @@ jobs: command: yarn test - run: name: build-webpack - command: yarn build:webpack \ No newline at end of file + command: yarn build:webpack + build-image: + executor: docker-publisher + steps: + - checkout + - setup_remote_docker: + version: 20.10.6 + - run: + name: Build Docker image + command: docker build -t $IMAGE_NAME:latest . + - run: + name: Archive Docker image + command: docker save -o image.tar $IMAGE_NAME + - persist_to_workspace: + root: . + paths: + - ./image.tar + publish-latest: + executor: docker-publisher + steps: + - attach_workspace: + at: /tmp/workspace + - setup_remote_docker: + version: 20.10.6 + - run: + name: Load archived Docker image + command: docker load -i /tmp/workspace/image.tar + - run: + name: Publish Docker Image to Docker Hub + command: | + echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin + IMAGE_TAG=version-${CIRCLE_TAG/v/''} + docker tag $IMAGE_NAME:latest $IMAGE_NAME:$IMAGE_TAG + docker push $IMAGE_NAME:latest + docker push $IMAGE_NAME:$IMAGE_TAG + publish-tag: + executor: docker-publisher + steps: + - attach_workspace: + at: /tmp/workspace + - setup_remote_docker: + version: 20.10.6 + - run: + name: Load archived Docker image + command: docker load -i /tmp/workspace/image.tar + - run: + name: Publish Docker Image to Docker Hub + command: | + echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin + IMAGE_TAG=version-${CIRCLE_TAG/v/''} + docker tag $IMAGE_NAME:latest $IMAGE_NAME:$IMAGE_TAG + docker push $IMAGE_NAME:$IMAGE_TAG + +workflows: + version: 2 + build-and-test: + jobs: + - build: + filters: + tags: + ignore: /^v.*/ + build-docker: + jobs: + - build-image: + filters: + tags: + only: /^v.*/ + branches: + ignore: /.*/ + - publish-latest: + requires: + - build-image + filters: + tags: + only: /^v\d+\.\d+\.\d+$/ + branches: + ignore: /.*/ + - publish-tag: + requires: + - build-image + filters: + tags: + only: /^v\d+\.\d+\.\d+-.*$/ + branches: + ignore: /.*/ \ No newline at end of file diff --git a/package.json b/package.json index 303d2de03..41f67e630 100644 --- a/package.json +++ b/package.json @@ -211,5 +211,5 @@ "dot-prop": "^5.2.0", "js-yaml": "^3.13.1" }, - "version": "0.57.0" -} \ No newline at end of file + "version": "0.58.0-3" +}