ci: selective signing and automatic release builds (#3430)

Signed-off-by: Jared Van Bortel <jared@nomic.ai>
This commit is contained in:
Jared Van Bortel
2025-01-28 17:41:01 -05:00
committed by GitHub
parent 88f5dac133
commit 6a8a840681

View File

@@ -22,10 +22,17 @@ jobs:
# work around CircleCI-Public/path-filtering-orb#20 # work around CircleCI-Public/path-filtering-orb#20
noop: noop:
docker: docker:
- image: cimg/base:current - image: cimg/base:stable
steps: steps:
- run: "true" - run: "true"
validate-commit-on-main:
docker:
- image: cimg/base:stable
steps:
- checkout
- run:
name: Verify that commit is on the main branch
command: git merge-base --is-ancestor HEAD main
build-offline-chat-installer-macos: build-offline-chat-installer-macos:
macos: macos:
xcode: 15.4.0 xcode: 15.4.0
@@ -1220,7 +1227,7 @@ jobs:
cd gpt4all-bindings/typescript cd gpt4all-bindings/typescript
npm run docs:build npm run docs:build
build-py-docs: deploy-docs:
docker: docker:
- image: circleci/python:3.8 - image: circleci/python:3.8
steps: steps:
@@ -1424,7 +1431,7 @@ jobs:
paths: paths:
- "*.whl" - "*.whl"
publish-wheels: deploy-wheels:
docker: docker:
- image: circleci/python:3.8 - image: circleci/python:3.8
steps: steps:
@@ -1721,7 +1728,7 @@ jobs:
- prebuilds/win32-x64/*.node - prebuilds/win32-x64/*.node
- runtimes/win32-x64/*-*.dll - runtimes/win32-x64/*-*.dll
prepare-npm-pkg: deploy-npm-pkg:
docker: docker:
- image: cimg/base:stable - image: cimg/base:stable
steps: steps:
@@ -1777,11 +1784,19 @@ jobs:
npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
npm publish npm publish
main_only: &main_only # only run a job on the main branch
job_only_main: &job_only_main
filters: filters:
branches: branches:
only: main only: main
# allow a job to run on tags as well as commits
job_allow_tags: &job_allow_tags
filters:
tags:
only:
- /.*/
workflows: workflows:
version: 2 version: 2
noop: noop:
@@ -1794,21 +1809,112 @@ workflows:
- << pipeline.parameters.run-chat-workflow >> - << pipeline.parameters.run-chat-workflow >>
jobs: jobs:
- noop - noop
build-chat-installers-release:
# only run on main branch tags that start with 'v' and a digit
when:
and:
- equal: [ << pipeline.git.branch >>, main ]
- matches: { pattern: '^v\d.*', value: << pipeline.git.tag >> }
jobs:
- validate-commit-on-main
- build-offline-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-offline-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- build-offline-chat-installer-macos
- notarize-offline-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- sign-offline-chat-installer-macos
- build-offline-chat-installer-windows:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-offline-chat-installer-windows:
<<: *job_allow_tags
context: gpt4all
requires:
- build-offline-chat-installer-windows
- build-offline-chat-installer-windows-arm:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-offline-chat-installer-windows-arm:
<<: *job_allow_tags
context: gpt4all
requires:
- build-offline-chat-installer-windows-arm
- build-offline-chat-installer-linux:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- build-online-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-online-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- build-online-chat-installer-macos
- notarize-online-chat-installer-macos:
<<: *job_allow_tags
context: gpt4all
requires:
- sign-online-chat-installer-macos
- build-online-chat-installer-windows:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-online-chat-installer-windows:
<<: *job_allow_tags
context: gpt4all
requires:
- build-online-chat-installer-windows
- build-online-chat-installer-windows-arm:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
- sign-online-chat-installer-windows-arm:
<<: *job_allow_tags
context: gpt4all
requires:
- build-online-chat-installer-windows-arm
- build-online-chat-installer-linux:
<<: *job_allow_tags
context: gpt4all
requires:
- validate-commit-on-main
build-chat-offline-installers: build-chat-offline-installers:
when: when:
or: or:
- << pipeline.parameters.run-all-workflows >> - << pipeline.parameters.run-all-workflows >>
- << pipeline.parameters.run-chat-workflow >> - << pipeline.parameters.run-chat-workflow >>
jobs: jobs:
- hold: - build-hold:
type: approval
- sign-hold:
type: approval type: approval
- build-offline-chat-installer-macos: - build-offline-chat-installer-macos:
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-offline-chat-installer-macos: - sign-offline-chat-installer-macos:
context: gpt4all context: gpt4all
requires: requires:
- sign-hold
- build-offline-chat-installer-macos - build-offline-chat-installer-macos
- notarize-offline-chat-installer-macos: - notarize-offline-chat-installer-macos:
context: gpt4all context: gpt4all
@@ -1817,15 +1923,16 @@ workflows:
- build-offline-chat-installer-windows: - build-offline-chat-installer-windows:
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-offline-chat-installer-windows: - sign-offline-chat-installer-windows:
context: gpt4all context: gpt4all
requires: requires:
- sign-hold
- build-offline-chat-installer-windows - build-offline-chat-installer-windows
- build-offline-chat-installer-windows-arm: - build-offline-chat-installer-windows-arm:
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-offline-chat-installer-windows-arm: - sign-offline-chat-installer-windows-arm:
context: gpt4all context: gpt4all
requires: requires:
@@ -1833,56 +1940,51 @@ workflows:
- build-offline-chat-installer-linux: - build-offline-chat-installer-linux:
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
build-chat-online-installers: build-chat-online-installers:
when: when:
or: or:
- << pipeline.parameters.run-all-workflows >> - << pipeline.parameters.run-all-workflows >>
- << pipeline.parameters.run-chat-workflow >> - << pipeline.parameters.run-chat-workflow >>
jobs: jobs:
- hold: - build-hold:
<<: *main_only type: approval
- sign-hold:
type: approval type: approval
- build-online-chat-installer-macos: - build-online-chat-installer-macos:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-online-chat-installer-macos: - sign-online-chat-installer-macos:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- sign-hold
- build-online-chat-installer-macos - build-online-chat-installer-macos
- notarize-online-chat-installer-macos: - notarize-online-chat-installer-macos:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- sign-online-chat-installer-macos - sign-online-chat-installer-macos
- build-online-chat-installer-windows: - build-online-chat-installer-windows:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-online-chat-installer-windows: - sign-online-chat-installer-windows:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- sign-hold
- build-online-chat-installer-windows - build-online-chat-installer-windows
- build-online-chat-installer-windows-arm: - build-online-chat-installer-windows-arm:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
- sign-online-chat-installer-windows-arm: - sign-online-chat-installer-windows-arm:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- build-online-chat-installer-windows-arm - build-online-chat-installer-windows-arm
- build-online-chat-installer-linux: - build-online-chat-installer-linux:
<<: *main_only
context: gpt4all context: gpt4all
requires: requires:
- hold - build-hold
build-and-test-gpt4all-chat: build-and-test-gpt4all-chat:
when: when:
or: or:
@@ -1905,14 +2007,13 @@ workflows:
- hold - hold
deploy-docs: deploy-docs:
when: when:
or: and:
- << pipeline.parameters.run-all-workflows >> - equal: [ << pipeline.git.branch >>, main ]
- << pipeline.parameters.run-python-workflow >> - or:
- << pipeline.parameters.run-all-workflows >>
- << pipeline.parameters.run-python-workflow >>
jobs: jobs:
- build-ts-docs: - deploy-docs:
<<: *main_only
- build-py-docs:
<<: *main_only
context: gpt4all context: gpt4all
build-python: build-python:
when: when:
@@ -1921,7 +2022,7 @@ workflows:
- << pipeline.parameters.run-python-workflow >> - << pipeline.parameters.run-python-workflow >>
jobs: jobs:
- pypi-hold: - pypi-hold:
<<: *main_only <<: *job_only_main
type: approval type: approval
- hold: - hold:
type: approval type: approval
@@ -1934,8 +2035,8 @@ workflows:
- build-py-windows: - build-py-windows:
requires: requires:
- hold - hold
- publish-wheels: - deploy-wheels:
<<: *main_only <<: *job_only_main
context: gpt4all context: gpt4all
requires: requires:
- pypi-hold - pypi-hold
@@ -1946,34 +2047,26 @@ workflows:
when: when:
or: or:
- << pipeline.parameters.run-all-workflows >> - << pipeline.parameters.run-all-workflows >>
- << pipeline.parameters.run-python-workflow >>
- << pipeline.parameters.run-ts-workflow >> - << pipeline.parameters.run-ts-workflow >>
jobs: jobs:
- hold: - backend-hold:
type: approval type: approval
- nodejs-hold: - nodejs-hold:
type: approval type: approval
- npm-hold: - npm-hold:
<<: *main_only <<: *job_only_main
type: approval
- docs-hold:
type: approval type: approval
- build-bindings-backend-linux: - build-bindings-backend-linux:
requires: requires:
- hold - backend-hold
- build-bindings-backend-macos: - build-bindings-backend-macos:
requires: requires:
- hold - backend-hold
- build-bindings-backend-windows: - build-bindings-backend-windows:
requires: requires:
- hold - backend-hold
# NodeJs Jobs
- prepare-npm-pkg:
<<: *main_only
requires:
- npm-hold
- build-nodejs-linux
- build-nodejs-windows
- build-nodejs-macos
- build-nodejs-linux: - build-nodejs-linux:
requires: requires:
- nodejs-hold - nodejs-hold
@@ -1986,3 +2079,13 @@ workflows:
requires: requires:
- nodejs-hold - nodejs-hold
- build-bindings-backend-macos - build-bindings-backend-macos
- build-ts-docs:
requires:
- docs-hold
- deploy-npm-pkg:
<<: *job_only_main
requires:
- npm-hold
- build-nodejs-linux
- build-nodejs-windows
- build-nodejs-macos