orchard/.circleci/config.yml

198 lines
6.5 KiB
YAML

version: 2.1
executors:
cider-ci:
docker:
- image: cimg/node:lts-browsers
working_directory: ~/Cider
orbs: # Add 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:
name: Install Build Dependencies
command: |
sudo apt-get update -y
sudo apt-get install -y autoconf automake g++ libtool || true
- run:
name: Update Version Number of App
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "cider.lock" }}
- run:
name: Clear node_airtunes2 cache
command: sudo rm -rf ~/.cache/yarn/v6/.tmp/cf5bc2de2629636ca224995234b8eaa1 || true
- run:
name: Install Node 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: Clear Yarn Cache
command: yarn cache clean
- run:
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:
- src
- 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: 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:
docker:
- image: electronuserland/builder:wine
steps:
- attach_workspace:
at: ~/project
- 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:
docker:
- image: electronuserland/builder:wine
steps:
- attach_workspace:
at: ~/project
- 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
- store_artifacts:
path: ~/Cider/dist/artifacts
- run:
name: Run Version Script
command: |
sudo chmod +x resources/version.sh && ./resources/version.sh || true
echo "export APP_VERSION=$(node -p -e 'require("./package.json").version')" >>$BASH_ENV
- run:
name: Publish Release
command: |
echo "Attempting to create release for Cider v${APP_VERSION} on the ${CIRCLE_BRANCH} branch."
gh release create "v${APP_VERSION}" --title "Cider Version ${APP_VERSION} (${CIRCLE_BRANCH})" --notes "**Beta Release**
A full changelog is unavailable, but you can view the branch comparison [here](https://github.com/ciderapp/cider/compare/stable...main).
These builds are considered bleeding edge, expect bugs and please do not use this as a representation of the full app.
Our full support disclaimer can be found [here](https://docs.cider.sh/support/disclaimer#support-nightly-beta-releases)." -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:
filters:
branches:
only:
- main
- stable
- build-windows:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- build-linux:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- build-winget:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- release:
requires:
- build-windows
- build-linux
- build-winget
filters:
branches:
only:
- main
- stable