macOS runners occasionally fails due to resource busy while create-dmg
is building the image.
```
Creating disk image...
hdiutil: create failed - Resource busy
Error: Process completed with exit code 1.
```
we introduce NEOVIDE_BUILD_VERSION in build.rs from `git describe` so tagged builds keep the
package version and non-tagged builds report `nightly-<count>+g<sha>` with `-dirty`
preserved when applicable.
we kinda of follow the neovim pattern for nightly versions since the target users are used to it.
we also add cargo rerun tracking for git metadata and tracked files, and use the generated version
for the CLI `--version` output, startup version logging and `g:neovide_version`
consecutively.
note: bundles will not be affected since they have its own limited versioning scheme.
the old workflow deleted and recreated the nightly release on every scheduled
run, even when the nightly tag already pointed to HEAD. that's just CI churn
and it republishes identical artifacts for no real reason.
we keep the daily schedule, but compare HEAD against the current nightly tag
first and skip the release jobs when they match.
manual dispatch gets a force flag for the rare case where rebuilding the same
commit is actually intended.
* Setup long path support instead of vendoring the dependencies
This should allow caching to work for windows builds
* Only save the ci cache on master
The PRs and branches will still use it, which should work most of the time since the dependencies
stay mostly the same.
* Let test and clippy share the same cache key
* Fix syntax error
* feat: improve code signing for macos systems
- add code to sign mac app for macos-12
- include signing for aarch64-apple-darwin and x86_64-apple-darwin systems
* feat: streamline macos app notarization and signing process
- add a step to write apple signing key to a file for macos
- add a step to write app store connect api key to a file for macos
- modify the conditional check for signing the mac app for macos
- add a step to notarize signed macos apps for both architectures
* ci: update github actions matrix for macos build workflow
- update the matrix condition from 'macos' to 'macos-latest' for various steps in the workflow build
- adjust the condition for signing keys based on the updated matrix value
* feat: update workflow job names and sign mac app binaries
- update the workflow job names to differentiate between signing the binary and the .dmg for mac app in different architectures.
- add a new step to sign the mac app binary for aarch64 and x86_64 architecture.
* feat: enhance code security with code signing improvements
- add code signing for mac applications
- implement code signing flags for better security
* ci: refactor github actions workflow configuration
- remove notarization steps for macos `aarch64-apple-darwin` and `x86_64-apple-darwin` devices
- modify the `upload-artifact` step in the workflow
* build: refactor artifact creation and handling in macos workflow
- modify artifact creation in build workflow for macos
- add step to set artifacts for macos only
- update handling of artifacts in the build workflow
* build: improve notarization process for macos files
- update workflow to notarize signed macos files for both architectures
- add notarization step for aarch64-apple-darwin architecture
- add notarization step for x86_64-apple-darwin architecture
* build: implement code signing for mac app binaries
- add signing step for mac app binary root (aarch64-apple-darwin)
- add signing step for mac app binary root (x86_64-apple-darwin)
* build: sign macos binaries with developer id
- update build script to sign the macos binaries with a developer id
- modify the build workflow to include the developer id as a secret
- adjust the macos build script to allow passing a developer id as a parameter
* fix: standardize code formatting across project files
- fix a typo in the secret placeholders
- update the paths in the script to use double quotes for consistency
* ci: refactor github actions for consistent build process
- remove file preparation steps for different operating systems in .github/workflows/build.yml
- rename action for signing mac app binaries in .github/workflows/build.yml
- comment out previous code signing commands in macos-builder/run
* chore: refactor macos code signing and ci config
- comment out the lines related to signing mac app binaries for aarch64 and x86_64-apple-darwin
- update the `prepare artifacts` step in the yaml file
* feat: improve macos deployment process
- add a step to create `neovide.app` for macos
- include commands to generate `neovide.app` for different architectures
- add a step to sign the mac app binary for both architectures
- add a step to sign the `neovide.app` for both architectures
- modify the prepare artifacts step to generate `.dmg` files for mac
- print messages about generating bundle app and dmg in `macos-builder/run`
* fix: streamline macos signing process
- remove redundant command for creating .dmg for aarch64-apple-darwin
- add `staple: true` for notarizing signed macos files
* build: refactor build steps for multi-platform support
- separated the build step into platform-specific jobs for windows, macos, and linux
- included conditions for specific os versions for each platform
- adjusted build commands based on the platform and os requirements
* build: improve platform-specific installation and preparation instructions
- add windows-specific installation steps for dependencies
- add macos-specific installation steps for dependencies
- add linux-specific installation steps for dependencies
- add windows-specific preparation steps for artifacts
- add macos-specific preparation steps for artifacts
- add linux-specific preparation steps for artifacts
- update code comments in `macos-builder/run` file
* refactor: refactor macos build scripts and github actions
- add `continue-on-error: true` to the macos notarization jobs
- remove unnecessary echo statements in the macos builder script
* feat: refine github event handling and macos signing workflow
- update conditional to include a check for the github event repository
- specify the binary input path in the mac signing steps
- add notarisation step for signed macos binaries
* refactor: refactor dmg generation process
- remove redundant if statement for `$generate_dmg`
- initialize signing process for dmg creation
* fix a typo in the github action name
* chore: refactor build scripts and improve environment variable handling
- update the run script command to include environment variables to generate bundle app and dmg
* ci: refactor github action workflows for code signing and notarization
- update github action workflow conditions to check for the main branch instead of a specific repository both for signing keys and code signing
- reorganize signing steps for mac app binaries and .app bundles
- adjust workflow to notarize signed macos apps for both architectures on the main branch
* ci: update macos configurations to use latest version
- add `macosx_deployment_target: 13.0`
- update `macos-12` to `macos-latest` in job configurations
- update `macos-12` to `macos-latest` in job configurations
- update `macos-12` to `macos-latest` in job configurations
* clippy: update function signatures related to panic handling
- add github discussions and discord links to readme.md
- update function signatures related to panic handling in main.rs
* build: refactor build workflow for macos compatibility
- update the `macosx_deployment_target` from `13.0` to `12.0` in the build workflow
* feat: update macos deployment targets and system requirements
- update `macosx_deployment_target` from `12.0` to `10.5` in build.yml
- change `lsminimumsystemversion` from `12.0` to `10.5` in info.plist
* chore: update macos deployment target and job configuration
- update `macosx_deployment_target` from `10.5` to `10.11`
- remove setting `macosx_deployment_target` to `10.11` in the macos job
* refactor: refactor file io operations to improve efficiency
- change the `make install` command to `sudo make install`
* feat: update neovide macos app to support minimum system version `10.11`
- update the minimum system version to `10.11` in info.plist for neovide macos app
* chore: update homebrew installation script and add upgrade step
- update homebrew installation script and add upgrade step
* chore: update installation instructions for create-dmg package
- comment out the existing command to install homebrew packages
- add steps to download and install create-dmg package using curl and make
* chore: clean up unnecessary code and comments
- remove commented out code for homebrew on macos
* feat: update deployment scripts for macos `dmg` creation and architecture targeting
- change the branches to `feat/dmg` instead of `main`
- add `macos-14` to the list of operating systems
- update the script to use `macos-14` as an available ubuntu release
- update the script to install `create-dmg` for macos runners
- remove the unnecessary `cargo bundle` commands
- update the linux deployment script to use `target/release/neovide` instead of `neovide`
- update the linux deployment script to use `assets/neovide.desktop` instead of `../../assets/neovide.desktop`
- add steps to create `.dmg` files for different architectures on macos
- update the `artifact` variable to include the architecture for macos-created artifacts
- modify the script to use the architecture-specific paths for macos artifacts
- update the `run` script to target a specific architecture based on input parameter
* chore: standardize operating system choices across build matrix
- remove `macos-14` from the list of operating systems in the build matrix
- update the comments to clarify the reason for choosing ubuntu 20.04 for maximum compatibility
* ci: update github workflow branch filter to main branch
- update the branch filter from `branches: feat/dmg` to `branches: main` in the github workflow build configuration.
* ci: update branch name in workflow file to `main`
- update the branch name from `master` to `main` in the workflow file.
* chore: consolidate artifact definitions for macos distributions
- remove redundant artifact definition for x86_64-apple-darwin.dmg
- add artifact definition for aarch64-apple-darwin.dmg
* build: consolidate creation of platform-specific `.dmg` files
- add creation of `.dmg` files for different platforms
- remove creation of `.dmg` files for macos in the linux section
* chore: reorganize file structure for linux deployment
- move the `neovide` executable and used files in linux to a separate directory
- update the linux deployment script to reflect new file locations
* ci: optimize workflow for artifact uploads and macos build process
- add a change to the workflow to only upload artifacts if env.artifact is set
- move the cd $github_workspace command before creating the .dmg file for macos
- remove the unneeded uses: actions/upload-artifact@v4 command
* Don't use reviewdog
Instead run Clippy as a separate job. Note that failures are ignore for
nightly builds.
* Fix the Github CI cache
* Delete unused code to fix Clippy warnings
* Install cargo bundle and wix through binstall
* Increase CI parallelism
* Convert build.yml to Unix line endings
* Always run the build action on pull requests
* Update actions to support nodejs20
* Use unique paths for test-results
* Delete the snap workflow
* Run Clippy on all configurations, instead of just once
* Enable clippy warnings, not just errors, fail on first clippy error for faster feedback
* Switch to github-check reporter for clippy
* Don't continue on errors on nightly
* Run build before clippy
* Always report clippy failures for the whole file
* Add clippy component
* Enable clippy debug
* Use sarif and review dog directly
* Add --all-targets for clippy
* More consistent job naming
* Run tests before Clippy
* Refine workflows
* Include matrix.toolchain in job overview for test results
+ Use correct variable for continue-on-error for nightly
* Update test result handling
- Improves performance and structure for test result publishing
- Allows test results as PR comments not only for internal but also
on fork PRs
* Enroll snap after build workflow
* Renovate workflows
* Update workflows
- Structures workflows into jobs that logically build on one another
- Improves OS conditions to better utilizes the matrix
- Uses officials actions cargo cache due to better results while testing
- Removes unnecessary setups of stable toolchains for lint- and release
frozen actions, as GitHub hosted runners have clippy and rustfmt pre-installed
Formatting changes:
- Generally formats to conform to the dominant formatting used in the
current workflows
- Uniform usage of font cases (in app related workflows):
- Title case for workflow names
- Sentence case for step names (uniform with GitHub's defaults in actions)
- Renames `clippy` to `lint-app` as it was not only running clippy
- Renames `lint` to `lint-website`
* Keep `-linux` in artificat name for linux binary
* Commit suggestions for leftovers
Co-authored-by: multisn8 <contact@multisamplednight.com>
* Allow clippy to be more annoying
- will cause a build job to be unsuccessful if clippy is not happy
* Explicitly specify required permissions for CI
Pretty much a rough guess, the GitHub docs[1] aren't exactly clear what
what implies which possibilities. Quite possible that we'll need to
adjust this in future.
[1] https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token
* Fix accidental change of CI platform
---------
Co-authored-by: MultisampledNight <contact@multisamplednight.com>