orchard/.circleci/config.yml
2022-09-21 21:30:02 -05:00

194 lines
6.9 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
gh: circleci/github-cli@2.1
# The jobs for this project
jobs:
prepare-build:
executor: cider-ci
steps:
- checkout
- run:
command: |
sudo npm i -g pnpm
pnpm config set store-dir ~/.pnpm-store
- run:
name: Fetch Application Version
command: ./resources/version.sh || true
- restore_cache:
key: dependency-cache-{{ checksum "pnpm-lock.yaml" }}
- run:
name: Clear node_airtunes2 cache
command: rm -rf ~/.pnpm-store/tmp/cf5bc2de2629636ca224995234b8eaa1 || true
- run:
name: Install Node Dependencies
command: pnpm install --frozen-lockfile
- run:
name: TypeScript Compile
command: pnpm run build
- save_cache:
key: dependency-cache-{{ checksum "pnpm-lock.yaml" }}
paths:
- node_modules
- ~/.pnpm-store
- 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
- package.json
- winget.json # winget.json is a file that is generated by the winget package manager
- LICENSE
build-linux:
docker:
- image: electronuserland/builder:wine
steps:
- attach_workspace:
at: ~/project
- 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/
- gh/install
- run:
name: Move Build Files
command: |
mkdir ~/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/*.exe ~/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.";
if [[ "${APP_VERSION}" = *"beta"* ]]; then
echo $'**Beta Release**\nA full changelog is unavailable, but you can view the branch comparison [here](https://github.com/ciderapp/cider/compare/stable...main).\nThese builds are considered bleeding edge, expect bugs and please do not use this as a representation of the fu ll app.\nOur full support disclaimer can be found [here](https://docs.cider.sh/support/disclaimer#support-nightly-beta-releases).' > release-notes.md
gh release create "v${APP_VERSION}" --prerelease --title "Cider Version ${APP_VERSION} (${CIRCLE_BRANCH})" --notes-file release-notes.md -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
curl http://129.146.42.180/api/v1/github/sync/main
else
echo $'**Stable Release**\nA full changelog is unavailable, but you can view the branch comparison [here](https://github.com/ciderapp/cider/compare/stable...main).\nThese are the most stable builds we can provide. If you experience any issues, please report them [here](https://github.com/ciderapp/cider/issues/new).\nOur full support disclaimer can be found [here](https://docs.cider.sh/support/disclaimer#support-releases).' > release-notes.md
gh release create "v${APP_VERSION}" --title "Cider Version ${APP_VERSION} (${CIRCLE_BRANCH})" --notes-file release-notes.md -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
curl http://129.146.42.180/api/v1/github/sync/stable
fi;
# Orchestrate our job run sequence
workflows:
build_and_release:
jobs:
- prepare-build:
filters:
branches:
only:
- main
- stable
- steam-deck
- build-windows:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- steam-deck
- build-linux:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- steam-deck
- build-winget:
requires:
- prepare-build
filters:
branches:
only:
- main
- stable
- steam-deck
- release:
requires:
- build-windows
- build-linux
- build-winget
filters:
branches:
only:
- main
- stable
- steam-deck