216 lines
6.5 KiB
YAML
216 lines
6.5 KiB
YAML
stages:
|
|
- test
|
|
- generate_tag_or_version
|
|
- build-artifacts
|
|
- release-artifacts
|
|
- notification
|
|
- clean-up
|
|
|
|
variables:
|
|
LC_ALL: "en_US.UTF-8"
|
|
LANG: "en_US.UTF-8"
|
|
|
|
|
|
.build_rule:
|
|
tags:
|
|
- macos
|
|
- flutter
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
|
- if: $CI_COMMIT_BRANCH == "release_sky"
|
|
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
|
- if: $CI_COMMIT_BRANCH == "canary_release_sky"
|
|
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?(_sky)?$/
|
|
|
|
.notify_rule:
|
|
tags:
|
|
- macos
|
|
- flutter
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
|
- if: $CI_COMMIT_BRANCH == "release_sky"
|
|
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
|
|
|
.generate_tag_rule:
|
|
tags:
|
|
- macos
|
|
- flutter
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "master_sky"
|
|
|
|
.generate_next_version_rule:
|
|
tags:
|
|
- macos
|
|
- flutter
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == "develop_sky"
|
|
- if: $CI_COMMIT_BRANCH == "release_sky"
|
|
- if: $CI_COMMIT_BRANCH == "canary_release_sky"
|
|
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
|
|
|
|
.print_env:
|
|
stage: test
|
|
extends: .build_rule
|
|
before_script:
|
|
- java --version
|
|
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
|
after_script:
|
|
- echo "finished"
|
|
|
|
.setup_fastlane_android:
|
|
extends: .build_rule
|
|
before_script:
|
|
- export PUB_HOSTED_URL=https://pub.flutter-io.cn
|
|
- export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
|
|
- ls -li
|
|
- export NEXT_VERSION="$(cat app_new.version)"
|
|
# - flutter pub get
|
|
- export PATH="/opt/homebrew/bin:$PATH"
|
|
- eval "$(rbenv init -)"
|
|
- rbenv global 2.6.10 # 你实际用的 Ruby 版本
|
|
- ruby -v
|
|
- which ruby
|
|
- gem env
|
|
- bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems/
|
|
- bundle install --gemfile android/Gemfile --path vendor/bundle_android --quiet
|
|
cache:
|
|
paths:
|
|
- app_new.version
|
|
|
|
.setup_fastlane_ios:
|
|
extends: .build_rule
|
|
before_script:
|
|
- export PUB_HOSTED_URL=https://pub.flutter-io.cn
|
|
- export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
|
|
- ls -li
|
|
- export NEXT_VERSION="$(cat app_new.version)"
|
|
- export PATH="/opt/homebrew/bin:$PATH"
|
|
- eval "$(rbenv init -)"
|
|
- rbenv global 2.6.10 # 你实际用的 Ruby 版本
|
|
- ruby -v
|
|
- which ruby
|
|
- gem env
|
|
- bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems/
|
|
- bundle install --gemfile ios/Gemfile --path vendor/bundle_ios --quiet
|
|
cache:
|
|
paths:
|
|
- app_new.version
|
|
|
|
test_lint_check:
|
|
stage: test
|
|
extends: .print_env
|
|
script:
|
|
- echo "run lint check or per-test here"
|
|
tags:
|
|
- macos
|
|
- flutter
|
|
|
|
generate_git_tag:
|
|
stage: generate_tag_or_version
|
|
extends: .generate_tag_rule
|
|
before_script:
|
|
- bash pre_build.sh sky
|
|
- project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///')
|
|
- echo "project_url:$project_url"
|
|
- echo "CI_SERVER_FQDN:$CI_SERVER_FQDN/CI_PROJECT_ROOT_NAMESPACE:$CI_PROJECT_ROOT_NAMESPACE/CI_PROJECT_NAME:$CI_PROJECT_NAME"
|
|
- git remote set-url origin git@$CI_SERVER_FQDN:$CI_PROJECT_ROOT_NAMESPACE/$CI_PROJECT_NAME.git
|
|
script:
|
|
- bash tag_generator.sh generate_tag
|
|
|
|
generate_next_version:
|
|
stage: generate_tag_or_version
|
|
extends: .generate_next_version_rule
|
|
script:
|
|
- bash tag_generator.sh generate_version
|
|
cache:
|
|
paths:
|
|
- app_new.version
|
|
|
|
build_android:
|
|
stage: build-artifacts
|
|
extends: .setup_fastlane_android
|
|
script: bash android/build.sh
|
|
artifacts:
|
|
paths:
|
|
- build/app/outputs/flutter-apk/
|
|
|
|
build_ios:
|
|
stage: build-artifacts
|
|
extends: .setup_fastlane_ios
|
|
script:
|
|
- bash ios/build.sh
|
|
artifacts:
|
|
paths:
|
|
- build/app/outputs/flutter-ipa
|
|
|
|
create-release:
|
|
stage: release-artifacts
|
|
extends: .build_rule
|
|
dependencies:
|
|
- build_android
|
|
- build_ios
|
|
needs:
|
|
- job: build_android
|
|
artifacts: true
|
|
- job: build_ios
|
|
artifacts: true
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
before_script:
|
|
- echo "start create release"
|
|
- bash release_description_generator.sh
|
|
- export RELEASE_DESCRIPTION="$(cat changelog.md)"
|
|
- echo "${RELEASE_DESCRIPTION}"
|
|
script:
|
|
- export StarLock_VERSION=${CI_COMMIT_TAG#*-}
|
|
- echo "Uploading StarLock-${StarLock_VERSION} packages to
|
|
${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*"
|
|
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk
|
|
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"'
|
|
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab
|
|
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.aab"'
|
|
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-ipa/starlock-sky-release-${CI_COMMIT_TAG}.ipa
|
|
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.ipa"'
|
|
release:
|
|
name: '$CI_COMMIT_TAG'
|
|
description: '$(cat changelog.md)'
|
|
tag_name: '$CI_COMMIT_TAG'
|
|
ref: '$CI_COMMIT_TAG'
|
|
assets:
|
|
links:
|
|
- name: 'sky apk binary package'
|
|
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.apk'
|
|
link_type: 'package'
|
|
- name: 'sky bundle binary package'
|
|
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.aab'
|
|
link_type: 'package'
|
|
- name: 'sky ipa binary package'
|
|
url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/starlock-sky-release-${CI_COMMIT_TAG}.ipa'
|
|
link_type: 'package'
|
|
|
|
notify_success:
|
|
stage: notification
|
|
extends: .notify_rule
|
|
before_script:
|
|
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
|
script:
|
|
- bash notify.sh success
|
|
allow_failure: true
|
|
when: on_success
|
|
|
|
notify_failure:
|
|
stage: notification
|
|
extends: .notify_rule
|
|
before_script:
|
|
- printenv | while IFS='=' read -r key value; do echo "$key=$value"; done
|
|
script:
|
|
- bash notify.sh failure
|
|
allow_failure: true
|
|
when: on_failure
|
|
|
|
clean_up:
|
|
stage: clean-up
|
|
extends: .build_rule
|
|
script:
|
|
- git reset --hard
|
|
when: always |