From cfad7de35e930bdbb70268c9cdee3261137edce5 Mon Sep 17 00:00:00 2001 From: liuyanfeng Date: Wed, 9 Oct 2024 23:30:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81android=20ios?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=8E=AF=E5=A2=83=E5=88=B6=E5=93=81=E5=8C=85?= =?UTF-8?q?=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..c485cbe8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,116 @@ +stages: + - test + - package + - release-artifacts + - notification + +variables: + LC_ALL: "en_US.UTF-8" + LANG: "en_US.UTF-8" + + +.build_rule: + tags: + - macos + - flutter + rules: + - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_BRANCH == "release" + - if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/ + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/ + + +.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: + - flutter pub get + - bundle install --gemfile android/Gemfile --quiet + + +.setup_fastlane_ios: + extends: .build_rule + before_script: + - flutter pub get + - bundle install --gemfile ios/Gemfile --quiet + +test_lint_check: + stage: test + extends: .print_env + script: + - echo "run lint check or per-test here" + tags: + - macos + - flutter + +build_android: + stage: package + extends: .setup_fastlane_android + script: bash android/build.sh + artifacts: + paths: + - build/app/outputs/flutter-apk/ + +build_ios: + stage: package + 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" + 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/app-xhj-release.apk + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/app-xhj-release.apk"' + - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/app-sky-release.apk + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/app-sky-release.apk"' + - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-ipa/app-starlock-release-xhj.ipa + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/app-starlock-release-xhj.ipa"' + - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-ipa/app-starlock-release-sky.ipa + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/app-starlock-release-sky.ipa"' + release: + name: '$CI_COMMIT_TAG' + description: 'Created Release By GitLab CI/CD' + tag_name: '$CI_COMMIT_TAG' + ref: '$CI_COMMIT_TAG' + assets: + links: + - name: 'xhj binary package (Android)' + url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/app-xhj-release.apk' + link_type: 'package' + - name: 'sky binary package (Android)' + url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/app-sky-release.apk' + link_type: 'package' + - name: 'xhj binary package (iOS)' + url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/app-starlock-release-xhj.ipa' + link_type: 'package' + - name: 'sky binary package (iOS)' + url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${CI_COMMIT_TAG}/app-starlock-release-sky.ipa' + link_type: 'package'