Skip to content

Commit

Permalink
build: ci
Browse files Browse the repository at this point in the history
  • Loading branch information
ronnnnn committed Oct 7, 2024
1 parent cc9a5a8 commit ad6eddb
Show file tree
Hide file tree
Showing 11 changed files with 301 additions and 7 deletions.
19 changes: 19 additions & 0 deletions .github/actions/select-xcode/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Select Xcode 🔧
description: Select Xcode version for macOS

runs:
using: 'composite'
steps:
- name: Extract .xcode-version
id: version
shell: bash
run: |
xcode_version=$(<.xcode-version)
echo "xcode_version=$xcode_version" >> $GITHUB_OUTPUT
# The path to the Xcode application is specified in the pre-installed software of GitHub Actions Runner.
# https://github.com/actions/runner-images/tree/main/images/macos
- name: Select Xcode version
shell: bash
run: |
sudo xcode-select -s "/Applications/Xcode_${{ steps.version.outputs.xcode_version }}.app/Contents/Developer"
27 changes: 27 additions & 0 deletions .github/actions/setup-flutter/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Setup Dart & Flutter 🔧
description: Download and cache tools for Dart & Flutter

runs:
using: 'composite'
steps:
- name: Extract tool versions from .tool-versions
uses: wasabeef/import-asdf-tool-versions-action@2049f3fd1a331dc40d2eda76c614c9bd7f1a502d # v1.0.3
id: versions
- name: Download and cache Flutter SDK
uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # v2.16.0
with:
channel: master
cache: true
- name: Extract Melos version from pubspec
id: version
uses: pietrobolcato/action-read-yaml@9f13718d61111b69f30ab4ac683e67a56d254e1d # v1.1.0
with:
config: ./pubspec.yaml
- name: Download Melos and bootstrap
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa # v3
with:
melos-version: ${{ steps.version.outputs.outputs['dev_dependencies']['melos'] }}
run-bootstrap: true
- name: Install others
shell: bash
run: melos prepare
23 changes: 23 additions & 0 deletions .github/actions/setup-java/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Setup Java 🔧
description: Download and cache tools for Java

runs:
using: 'composite'
steps:
# - name: Import .tool-versions
# uses: wasabeef/import-asdf-tool-versions-action@2049f3fd1a331dc40d2eda76c614c9bd7f1a502d # v1.0.3
# id: asdf
# - name: Extract distribution and version
# id: extract_distribution_and_version
# shell: bash
# run: |
# java=${{ steps.asdf.outputs.java }}
# echo "distribution=$(echo $java | cut -d '-' -f 1)" >> $GITHUB_OUTPUT
# echo "version=$(echo $java | cut -d '-' -f 2)" >> $GITHUB_OUTPUT
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4
with:
# distribution: ${{ steps.extract_distribution_and_version.outputs.distribution }}
distribution: temurin
# java-version: ${{ steps.extract_distribution_and_version.outputs.version }}
java-version: 17.0.12+7
cache: 'gradle'
29 changes: 29 additions & 0 deletions .github/workflows/auto-asign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Auto assign ✌️

on:
pull_request:
types: [opened, synchronize]

jobs:
assign:
name: Auto assign ✌️
if: |
github.event.pull_request.user.type == 'User'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
timeout-minutes: 5
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
with:
script: |
const assignees = context.payload.pull_request.assignees
if (!assignees || assignees.length === 0) {
github.rest.issues.addAssignees({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
assignees: `${{ github.actor }}`,
})
}
63 changes: 63 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Check ✅

on:
push:
branches: [main]

pull_request:
types: [opened, synchronize]

jobs:
lint:
name: Lint 🧹
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Setup Flutter
uses: ./.github/actions/setup-flutter
- name: Check format
run: melos fmt:dry
- name: Analyze
run: melos lint

test:
name: Test 🧪
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Setup Flutter
uses: ./.github/actions/setup-flutter
- name: Test
run: melos test

build_example_android:
name: Build example Android 🤖
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Setup Java
uses: ./.github/actions/setup-java
- name: Setup Flutter
uses: ./.github/actions/setup-flutter
- name: Build example Android
run: melos build:example:android

build_example_ios:
name: Build example iOS 🍎
runs-on: macos-14
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- name: Select Xcode
uses: ./.github/actions/select-xcode
- name: Setup Flutter
uses: ./.github/actions/setup-flutter
- name: Build example iOS
run: melos build:example:ios
17 changes: 17 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Release 🚀

on:
push:
branches:
- main

permissions:
contents: write
pull-requests: write

jobs:
release:
name: Release 🚀
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@7987652d64b4581673a76e33ad5e98e3dd56832f # v4
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"packages/thema": "0.1.0-dev.1"
}
1 change: 1 addition & 0 deletions .xcode-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
15.4
58 changes: 51 additions & 7 deletions melos.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
name: thema

repository:
type: github
origin: https://github.com/ronnnnn/thema
owner: ronnnnn
name: thema

packages:
- ./
- packages/**
Expand All @@ -16,24 +22,62 @@ command:
melos exec -c 1 --flutter -- flutter clean
scripts:
prepare:
description: Prepare for develop
run: dart pub global activate very_good_cli 0.23.1

get:
run: melos exec -c 1 -- flutter pub get
description: Pub get
run: melos exec -c 1 -- flutter pub get

outdated:
run: melos exec -c 1 -- flutter pub outdated
description: Check for outdated dependencies
run: melos exec -c 1 -- flutter pub outdated

fmt:
run: melos exec -c 1 -- dart format --enable-experiment=macros .
description: Format dart code
description: format
run: |
melos fix && \
melos fmt:dart
fmt:dry:
description: format (dry-run)
run: |
melos fix:dry && \
melos fmt:dart:dry
fmt:dart:
description: format dart
run: melos exec -c 1 --fail-fast -- dart format --enable-experiment=macros .

fmt:dart:dry:
description: format dart (dry-run)
run: melos exec -c 1 --fail-fast -- dart format --set-exit-if-changed --enable-experiment=macros .

fix:
run: melos exec -c 1 -- dart fix --apply --enable-experiment=macros .
description: Fix dart code
description: fix dart
run: melos exec -c 1 --fail-fast -- dart fix --apply --enable-experiment=macros

fix:dry:
description: fix dart (dry-run)
run: melos exec -c 1 --fail-fast -- dart fix --dry-run --enable-experiment=macros

test:
run: melos exec -c 1 -- flutter test --enable-experiment=macros
description: Run tests
exec: very_good test
packageFilters:
dependsOn: flutter_test

build:example:
description: build on thema_example
run: |
melos build:example:android && \
melos build:example:ios
build:example:android:
description: build android on thema_example
run: melos exec -c 1 --scope="thema_example" -- flutter build appbundle

build:example:ios:
description: build ios on thema_example
run: melos exec -c 1 --scope="thema_example" -- flutter build ios --no-codesign
4 changes: 4 additions & 0 deletions packages/thema/example/pubspec_overrides.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# melos_managed_dependency_overrides: thema
dependency_overrides:
thema:
path: ..
64 changes: 64 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"packages": {
"packages/thema": {
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": false,
"changelog-path": "CHANGELOG.md",
"changelog-sections": [
{
"type": "build",
"section": "Build System"
},
{
"type": "clean",
"section": "Code Cleanup"
},
{
"type": "docs",
"section": "Documentation"
},
{
"type": "feat",
"section": "New Features"
},
{
"type": "fix",
"section": "Bug Fixes"
},
{
"type": "refactor",
"section": "Code Refactoring"
},
{
"type": "revert",
"section": "Reverts"
},
{
"type": "style",
"section": "Code Style"
},
{
"type": "test",
"section": "Tests"
},
{
"type": "update",
"section": "Feature Updates"
},
{
"type": "upgrade",
"section": "Dependency Upgrades"
}
],
"draft": false,
"include-v-in-tag": true,
"label": "release",
"package-name": "thema",
"prerelease": false,
"pull-request-title-pattern": "release: ${component} ${version}",
"release-label": "release",
"release-type": "dart"
}
},
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
}

0 comments on commit ad6eddb

Please sign in to comment.