mirror of
https://github.com/cirruslabs/tart.git
synced 2026-09-30 03:01:12 +02:00
* Improve macOS app integration Tart is now a proper application bundle, with the name and icon declared in the Info.plist, which we were missing. This also allows us to declare the app as LSBackgroundOnly as a default, which means that 'tart create' and similar background commands will not show the application icon in the dock, while 'tart run' will, thanks to it overriding the activation policy of the app. For now the logic of creating the Tart.app bundle is duplicated between the CI packaging scripts and the run-signed.sh script. Now that these scripts are growing, it makes sense to look at whether we can share the logic somehow, e.g. by building the application bundle directly during build, and packaging that, instead of creating it as a post install step. * Integration tests: fix DockerContainer import To work around the breaking change in 4.0.0, see https://github.com/testcontainers/testcontainers-python/commit/383b12e9d63b4b105c65e587e87c380355871a36. * .cirrus.yml(Release (Dry Run)): no need to install Sentry CLI --------- Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
164 lines
6.6 KiB
YAML
164 lines
6.6 KiB
YAML
use_compute_credits: true
|
|
|
|
env:
|
|
XCODE_TAG: 15.2
|
|
|
|
task:
|
|
name: Test on Sonoma
|
|
alias: test
|
|
persistent_worker:
|
|
labels:
|
|
name: dev-mini
|
|
resources:
|
|
tart-vms: 1
|
|
test_script:
|
|
- swift test
|
|
integration_test_script:
|
|
# Build Tart
|
|
- swift build
|
|
- codesign --sign - --entitlements Resources/tart-dev.entitlements --force .build/debug/tart
|
|
- export PATH=$(pwd)/.build/arm64-apple-macosx/debug:$PATH
|
|
# Run integration tests
|
|
- cd integration-tests
|
|
- HOMEBREW_NO_AUTO_UPDATE=1 brew install virtualenv
|
|
- virtualenv venv
|
|
- source venv/bin/activate
|
|
- pip install -r requirements.txt
|
|
- pytest --verbose --junit-xml=pytest-junit.xml
|
|
pytest_junit_result_artifacts:
|
|
path: "integration-tests/pytest-junit.xml"
|
|
format: junit
|
|
|
|
task:
|
|
name: Markdown Lint
|
|
only_if: $CIRRUS_BRANCH != 'gh-pages' && changesInclude('**.md')
|
|
container:
|
|
image: node:latest
|
|
install_script: npm install -g markdownlint-cli
|
|
lint_script: markdownlint --config=docs/.markdownlint.yml docs/
|
|
|
|
task:
|
|
name: Lint
|
|
alias: lint
|
|
macos_instance:
|
|
image: ghcr.io/cirruslabs/macos-sonoma-xcode:$XCODE_TAG
|
|
lint_script:
|
|
- swift package plugin --allow-writing-to-package-directory swiftformat --cache ignore --lint --report swiftformat.json .
|
|
always:
|
|
swiftformat_report_artifacts:
|
|
path: swiftformat.json
|
|
format: swiftformat
|
|
|
|
task:
|
|
only_if: $CIRRUS_TAG == ''
|
|
env:
|
|
matrix:
|
|
BUILD_ARCH: arm64
|
|
BUILD_ARCH: x86_64
|
|
name: Build ($BUILD_ARCH)
|
|
alias: build
|
|
macos_instance:
|
|
image: ghcr.io/cirruslabs/macos-sonoma-xcode:$XCODE_TAG
|
|
build_script: swift build --arch $BUILD_ARCH --product tart
|
|
sign_script: codesign --sign - --entitlements Resources/tart-dev.entitlements --force .build/$BUILD_ARCH-apple-macosx/debug/tart
|
|
binary_artifacts:
|
|
path: .build/$BUILD_ARCH-apple-macosx/debug/tart
|
|
|
|
task:
|
|
only_if: $CIRRUS_TAG == '' && ($CIRRUS_USER_PERMISSION == 'write' || $CIRRUS_USER_PERMISSION == 'admin')
|
|
name: Release (Dry Run)
|
|
depends_on:
|
|
- lint
|
|
- build
|
|
macos_instance:
|
|
image: ghcr.io/cirruslabs/macos-sonoma-xcode:$XCODE_TAG
|
|
env:
|
|
MACOS_CERTIFICATE: ENCRYPTED[552b9d275d1c2bdbc1bff778b104a8f9a53cbd0d59344d4b7f6d0ca3c811a5cefb97bef9ba0ef31c219cb07bdacdd2c2]
|
|
AC_PASSWORD: ENCRYPTED[4a761023e7e06fe2eb350c8b6e8e7ca961af193cb9ba47605f25f1d353abc3142606f412e405be48fd897a78787ea8c2]
|
|
GITHUB_TOKEN: ENCRYPTED[!98ace8259c6024da912c14d5a3c5c6aac186890a8d4819fad78f3e0c41a4e0cd3a2537dd6e91493952fb056fa434be7c!]
|
|
GORELEASER_KEY: ENCRYPTED[!9b80b6ef684ceaf40edd4c7af93014ee156c8aba7e6e5795f41c482729887b5c31f36b651491d790f1f668670888d9fd!]
|
|
setup_script:
|
|
- cd $HOME
|
|
- echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
|
|
- security create-keychain -p password101 build.keychain
|
|
- security default-keychain -s build.keychain
|
|
- security unlock-keychain -p password101 build.keychain
|
|
- security import certificate.p12 -k build.keychain -P password101 -T /usr/bin/codesign -T /usr/bin/pkgbuild
|
|
- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password101 build.keychain
|
|
- xcrun notarytool store-credentials "notarytool" --apple-id "hello@cirruslabs.org" --team-id "9M2P8L4D89" --password $AC_PASSWORD
|
|
install_script:
|
|
- brew install go goreleaser/tap/goreleaser-pro
|
|
- brew install mitchellh/gon/gon
|
|
info_script:
|
|
- security find-identity -v
|
|
- xcodebuild -version
|
|
- swift -version
|
|
goreleaser_script: goreleaser release --skip-publish --snapshot --clean
|
|
always:
|
|
dist_artifacts:
|
|
path: "dist/*"
|
|
|
|
task:
|
|
name: Release
|
|
only_if: $CIRRUS_TAG != ''
|
|
depends_on:
|
|
- lint
|
|
- test
|
|
- build
|
|
macos_instance:
|
|
image: ghcr.io/cirruslabs/macos-sonoma-xcode:$XCODE_TAG
|
|
env:
|
|
MACOS_CERTIFICATE: ENCRYPTED[552b9d275d1c2bdbc1bff778b104a8f9a53cbd0d59344d4b7f6d0ca3c811a5cefb97bef9ba0ef31c219cb07bdacdd2c2]
|
|
AC_PASSWORD: ENCRYPTED[4a761023e7e06fe2eb350c8b6e8e7ca961af193cb9ba47605f25f1d353abc3142606f412e405be48fd897a78787ea8c2]
|
|
GITHUB_TOKEN: ENCRYPTED[!98ace8259c6024da912c14d5a3c5c6aac186890a8d4819fad78f3e0c41a4e0cd3a2537dd6e91493952fb056fa434be7c!]
|
|
GORELEASER_KEY: ENCRYPTED[!9b80b6ef684ceaf40edd4c7af93014ee156c8aba7e6e5795f41c482729887b5c31f36b651491d790f1f668670888d9fd!]
|
|
SENTRY_ORG: cirrus-labs
|
|
SENTRY_PROJECT: persistent-workers
|
|
SENTRY_AUTH_TOKEN: ENCRYPTED[!c16a5cf7da5f856b4bc2f21fe8cb7aa2a6c981f851c094ed4d3025fd02ea59a58a86cee8b193a69a1fc20fa217e56ac3!]
|
|
setup_script:
|
|
- cd $HOME
|
|
- echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
|
|
- security create-keychain -p password101 build.keychain
|
|
- security default-keychain -s build.keychain
|
|
- security unlock-keychain -p password101 build.keychain
|
|
- security import certificate.p12 -k build.keychain -P password101 -T /usr/bin/codesign -T /usr/bin/pkgbuild
|
|
- security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password101 build.keychain
|
|
- xcrun notarytool store-credentials "notarytool" --apple-id "hello@cirruslabs.org" --team-id "9M2P8L4D89" --password $AC_PASSWORD
|
|
install_script:
|
|
- brew install go goreleaser/tap/goreleaser-pro getsentry/tools/sentry-cli
|
|
- brew install mitchellh/gon/gon
|
|
info_script:
|
|
- security find-identity -v
|
|
- xcodebuild -version
|
|
- swift -version
|
|
release_script: goreleaser
|
|
upload_sentry_debug_files_script:
|
|
- cd .build/arm64-apple-macosx/release/
|
|
# Generate and upload symbols
|
|
- dsymutil tart
|
|
- sentry-cli debug-files upload tart.dSYM/
|
|
- SENTRY_PROJECT=tart sentry-cli debug-files upload tart.dSYM/
|
|
# Bundle and upload sources
|
|
- sentry-cli debug-files bundle-sources tart.dSYM
|
|
- sentry-cli debug-files upload tart.src.zip
|
|
- SENTRY_PROJECT=tart sentry-cli debug-files upload tart.src.zip
|
|
create_sentry_release_script:
|
|
- export SENTRY_RELEASE="tart@$CIRRUS_TAG"
|
|
- sentry-cli releases new $SENTRY_RELEASE
|
|
- sentry-cli releases set-commits $SENTRY_RELEASE --auto
|
|
- sentry-cli releases finalize $SENTRY_RELEASE
|
|
|
|
task:
|
|
name: Deploy Documentation
|
|
only_if: $CIRRUS_BRANCH == 'main'
|
|
container:
|
|
image: ghcr.io/cirruslabs/mkdocs-material-insiders:latest
|
|
registry_config: ENCRYPTED[!cf1a0f25325aa75bad3ce6ebc890bc53eb0044c02efa70d8cefb83ba9766275a994b4831706c52630a0692b2fa9cfb9e!]
|
|
env:
|
|
DEPLOY_TOKEN: ENCRYPTED[!45ed45666558902ed1c2400add734ec063103bec31841847e8c8764802fca229bfa6d85c690e16ad159e047574b48793!]
|
|
deploy_script:
|
|
- git config --global user.name "Cirrus CI"
|
|
- git config --global user.name "hello@cirruslabs.org"
|
|
- git remote set-url origin https://$DEPLOY_TOKEN@github.com/cirruslabs/tart/
|
|
- mkdocs --verbose gh-deploy --force --remote-branch gh-pages
|