version: 2.1 executors: my-executor: docker: - image: circleci/node:16 working_directory: ~/Cider orbs: # adds orbs to your configuration jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible # The jobs for this project jobs: flow: executor: my-executor steps: - run: mkdir -p workspace - run: echo "Hello, world!" > workspace/echo-output # Persist the specified paths (workspace/echo-output) into the workspace for use in downstream job. - persist_to_workspace: # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is # taken to be the root directory of the workspace. root: workspace # Must be relative path from root paths: - echo-output downstream: executor: my-executor steps: - attach_workspace: # Must be absolute path or relative path from working_directory at: /tmp/workspace - run: | if [[ `cat /tmp/workspace/echo-output` == "Hello, world!" ]]; then echo "It worked!"; else echo "Nope!"; exit 1 fi prepare-build: working_directory: ~/Cider docker: - image: circleci/node:16 steps: - checkout - run: name: Set App Version command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV - run: name: Update Package Managers command: sudo npm update -g npm yarn - restore_cache: name: Restore Yarn Package Cache keys: - yarn-packages-{{ checksum "cider.lock" }} - run: name: Install Dependencies command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn - save_cache: name: Save Yarn Package Cache key: yarn-packages-{{ checksum "cider.lock" }} paths: - ~/.cache/yarn - run: name: Install system build dependencies command: | sudo apt-get update -y curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt-get install -y dpkg fakeroot wine64 sudo dpkg --add-architecture i386 sudo apt-get update -y sudo apt-get install -y wine32 sudo apt install -y gh - run: name: Fix Versioning and Add Channel command: yarn circle:script - run: name: TypeScript Compile command: yarn build build-windows: working_directory: ~/Cider docker: - image: circleci/node:16 steps: - run: name: Generate Builds (Windows) command: yarn electron-builder -w --x64 -p never post-steps: - jira/notify build-linux: working_directory: ~/Cider docker: - image: circleci/node:16 steps: - run: name: Generate Builds (Linux) command: yarn electron-builder -l -p never post-steps: - jira/notify build-winget: working_directory: ~/Cider docker: - image: circleci/node:16 steps: - run: name: Generate Builds (Winget) command: yarn electron-builder --win -c winget.json -p never post-steps: - jira/notify release: working_directory: ~/Cider docker: - image: circleci/node:16 steps: - run: name: Move Build Files command: | mkdir ~/Cider/dist/artifacts/ mv ~/Cider/dist/*.exe ~/Cider/dist/artifacts mv ~/Cider/dist/*.deb ~/Cider/dist/artifacts mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts - store_artifacts: path: ~/Cider/dist/artifacts - run: name: Publish Release command: | gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap # Orchestrate our job run sequence workflows: btd: jobs: - flow - downstream: requires: - flow build_and_test: jobs: - prepare-build - build-windows: requires: - prepare-build - build-linux: requires: - prepare-build - build-winget: requires: - prepare-build - release: requires: - build-windows - build-linux - build-winget