Feature/release automation (#1778)

* Add Tapestry config.

* Update release doc.
This commit is contained in:
Marek Fořt 2020-09-27 19:54:57 +02:00 committed by GitHub
parent 4ffce765c4
commit a84dece194
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 12 deletions

19
.github/workflows/deploy.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: Deploy
on:
push:
tags:
- '*'
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
ref: master
fetch-depth: 0
- name: Create a new release
uses: fortmarek/tapestry-action@0.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -2,19 +2,9 @@
This document describes the process of releasing new versions of tuist.
1. First make sure you are in master and the latest changes are pulled: `git pull origin master`
2. Ensure that the project is in a releasable state by running the tests: `swift test` and `bundle exec rake features`.
3. Determine the new version:
1. Determine the new version:
- Major if there's been a breaking change.
- Minor by default.
- Patch if it's a hotfix release.
4. Update the version in the `Constants.swift` file.
5. Update the `CHANGELOG.md` to include the version section.
6. Commit the changes and tag the commit with the version `git tag x.y.z`.
7. Select the Xcode version 11.5 before building the binaries: `sudo xcode-select -s /Applications/Xcode_11.5.app`.
8. Package and upload the release to GCS by running `bundle exec rake release`.
9. Upload the installation scripts to GCS by running `bundle exec rake release_scripts`.
10. Create a release on GitHub with the version as a title, the body from the CHANGELOG file, and attach the artifacts in the `build/` directory.
11. Run `tuist update` and verify that the new version is installed and runs.
2. Run `tapestry github-release version-number` (eg `tapestry github-release 1.1.0`) *(Install [tapestry](https://github.com/ackeecz/tapestry) and [tuist](https://github.com/tuist/tuist) if you don't have them installed already)*.

33
TapestryConfig.swift Normal file
View File

@ -0,0 +1,33 @@
import TapestryDescription
let config = TapestryConfig(
release: Release(
actions:
[
.pre(tool: "git", arguments: ["checkout", "master"]),
.pre(tool: "git", arguments: ["pull"]),
.pre(.dependenciesCompatibility([.spm(.all)])),
.pre(tool: "swift", arguments: ["test"]),
.pre(tool: "bundle", arguments: ["exec", "rake", "features"]),
.pre(.docsUpdate),
.pre(tool: "sudo", arguments: ["xcode-select", "-s", "/Applications/Xcode_11.5.app"]),
.post(tool: "bundle", arguments: ["exec", "rake", "release"]),
.post(tool: "bundle", arguments: ["exec", "rake", "release_scripts"]),
.post(
.githubRelease(
owner: "tuist",
repository: "tuist",
assetPaths: [
"build/tuist.zip",
"build/tuistenv.zip",
]
)
)
],
add: [
"CHANGELOG.md"
],
commitMessage: "Version \(Argument.version)",
push: true
)
)