dart-raylib
/
.gitlab-ci.yml
153 строки · 3.8 Кб
1image: google/dart:latest
2
3stages:
4- lint
5- test
6- publish
7
8dartdoc:
9stage: lint
10script:
11- pub get
12- dartdoc --no-auto-include-dependencies --quiet
13only:
14refs:
15- merge_requests
16changes:
17- lib/**/*
18- README.md
19- .gitlab-ci.yml
20
21dart_format:
22stage: lint
23script:
24- |
25[ -z "$(dart format . | grep "(0 changed)")" ] && exit 1 || exit 0
26only:
27refs:
28- merge_requests
29changes:
30- example/**/*.dart
31- lib/**/*.dart
32- test/**/*.dart
33- .gitlab-ci.yml
34
35dart_analyze:
36stage: lint
37script:
38- pub get
39- dart analyze
40only:
41refs:
42- merge_requests
43changes:
44- example/**/*.dart
45- lib/**/*.dart
46- test/**/*.dart
47- .gitlab-ci.yml
48
49# unit_test:
50# stage: test
51# script:
52# - apt-get update && apt-get install lcov -y
53# - pub get
54# - dart run test --coverage coverage/
55# - dart run coverage:format_coverage -i coverage/test/ --lcov --out coverage/lcov.info --packages .packages --report-on $(pwd)/lib
56# - lcov --list ./coverage/lcov.info
57# only:
58# refs:
59# - merge_requests
60# - main
61# changes:
62# - lib/**/*
63# - test/**/*
64# - .gitlab-ci.yml
65
66dry_run_publish:
67stage: publish
68script:
69- |
70version=$(grep -A3 'version:' ./pubspec.yaml | head -n1 | cut -c 9-)
71if ! grep -q $version "./CHANGELOG.md"; then
72echo "Missing CHANGELOG entry for version $version"
73exit 1
74fi
75- pub get
76# Removing submodules as the pub publish otherwise fails.
77- git submodule deinit vendor/raylib
78- git rm vendor/raylib
79- rm -rf .git/modules/vendor/raylib
80- pub publish --dry-run
81only:
82refs:
83- merge_requests
84
85tag:
86image: curlimages/curl
87stage: publish
88script:
89- |
90if [ -z "${GITLAB_API_TOKEN}" ]; then
91echo "Missing GITLAB_API_TOKEN environment variable"
92exit 1
93fi
94
95export TAG_NAME="$(awk '/^version: /{print $NF}' pubspec.yaml)"
96curl --fail --request POST --header "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" \
97--data-urlencode "tag_name=v${TAG_NAME}" \
98--data-urlencode "ref=main" \
99--data-urlencode "release_description=Check the [CHANGELOG.md](${CI_PROJECT_URL}/-/blob/main/CHANGELOG.md)" \
100"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/repository/tags"
101environment:
102name: pub-dev-plugin
103url: https://pub.dev/packages/raylib
104when: manual
105only:
106refs:
107- main
108
109pub_dev_publish:
110stage: publish
111script:
112- |
113if [ -z "${PUB_DEV_PUBLISH_ACCESS_TOKEN}" ]; then
114echo "Missing PUB_DEV_PUBLISH_ACCESS_TOKEN environment variable"
115exit 1
116fi
117
118if [ -z "${PUB_DEV_PUBLISH_REFRESH_TOKEN}" ]; then
119echo "Missing PUB_DEV_PUBLISH_REFRESH_TOKEN environment variable"
120exit 1
121fi
122
123if [ -z "${PUB_DEV_PUBLISH_TOKEN_ENDPOINT}" ]; then
124echo "Missing PUB_DEV_PUBLISH_TOKEN_ENDPOINT environment variable"
125exit 1
126fi
127
128if [ -z "${PUB_DEV_PUBLISH_EXPIRATION}" ]; then
129echo "Missing PUB_DEV_PUBLISH_EXPIRATION environment variable"
130exit 1
131fi
132- pub get
133- |
134cat <<EOF > ~/.pub-cache/credentials.json
135{
136"accessToken":"$(echo "${PUB_DEV_PUBLISH_ACCESS_TOKEN}" | base64 -d)",
137"refreshToken":"$(echo "${PUB_DEV_PUBLISH_REFRESH_TOKEN}" | base64 -d)",
138"tokenEndpoint":"${PUB_DEV_PUBLISH_TOKEN_ENDPOINT}",
139"scopes":["https://www.googleapis.com/auth/userinfo.email","openid"],
140"expiration":${PUB_DEV_PUBLISH_EXPIRATION}
141}
142EOF
143# Removing submodules as the pub publish otherwise fails.
144- git submodule deinit vendor/raylib
145- git rm vendor/raylib
146- rm -rf .git/modules/vendor/raylib
147- pub publish -f
148only:
149refs:
150- /^v.*$/
151except:
152refs:
153- branches
154