From b0c4240c17e0dcd6c869d92ae88ed9a6293aad65 Mon Sep 17 00:00:00 2001 From: Core <64542347+coredev-uk@users.noreply.github.com> Date: Sat, 30 Apr 2022 18:37:21 +0100 Subject: [PATCH] Update config.yml --- .circleci/config.yml | 162 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 130 insertions(+), 32 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 62dc1183..c9484eb6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,18 +1,21 @@ version: 2.1 -orbs: # adds orbs to your configuration - jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible -branches: - only: - - main - - develop -jobs: - build: - working_directory: ~/Cider + +executors: + cider-ci: 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: + prepare-build: + executor: cider-ci steps: - checkout + - run: ls -la - run: name: Set App Version command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV @@ -32,50 +35,145 @@ jobs: 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 + name: TypeScript Compile + command: yarn build + - 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: . + # Must be relative path from root + paths: + - node_modules + - build + - resources + - yarn.lock + - package.json + - winget.json # winget.json is a file that is generated by the winget package manager + - LICENSE + - license.txt + + build-linux: + executor: cider-ci + steps: + - attach_workspace: + at: ~/Cider - run: name: Fix Versioning and Add Channel command: yarn circle:script - - run: - name: TypeScript Compile - command: yarn build - run: name: Generate Builds (Linux) command: yarn electron-builder -l -p never post-steps: - jira/notify + - persist_to_workspace: + root: . + paths: + - dist/*.deb + - dist/*.AppImage + - dist/*.snap + - dist/latest-linux.yml + + build-windows: + executor: cider-ci + steps: + - attach_workspace: + at: ~/Cider + - run: + name: Install Windows System Build Dependencies + command: | + sudo apt-get update -y + sudo apt-get install -y dpkg fakeroot wine64 + sudo dpkg --add-architecture i386 + sudo apt-get update -y + sudo apt-get install -y wine32 + - run: + name: Fix Versioning and Add Channel + command: yarn circle:script - run: name: Generate Builds (Windows) command: yarn electron-builder -w --x64 -p never post-steps: - jira/notify + - persist_to_workspace: + root: . + paths: + - dist/*.exe + - dist/Cider-Setup-*.exe.blockmap + - dist/latest.yml + + build-winget: + executor: cider-ci + steps: + - attach_workspace: + at: ~/Cider + - run: + name: Install Windows System Build Dependencies + command: | + sudo apt-get update -y + sudo apt-get install -y dpkg fakeroot wine64 + sudo dpkg --add-architecture i386 + sudo apt-get update -y + sudo apt-get install -y wine32 + - run: + name: Fix Versioning and Add Channel + command: yarn circle:script - run: name: Generate Builds (Winget) command: yarn electron-builder --win -c winget.json -p never post-steps: - jira/notify + - persist_to_workspace: + root: . + paths: + - dist/*.exe + - dist/Cider-Setup-winget-*.exe.blockmap + + release: + executor: cider-ci + steps: + - attach_workspace: + at: ~/Cider/ + - run: + name: Installing GitHub Command Line Interface + 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 update -y + sudo apt install -y gh - 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 + 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 + 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 + 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: + build_and_release: + 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