Compare commits
1 Commits
v0.3.0
...
feat/with-
Author | SHA1 | Date | |
---|---|---|---|
b711258790
|
14
.drone.yml
14
.drone.yml
@@ -90,6 +90,7 @@ steps:
|
||||
- chmod -R 600 ~/.ssh
|
||||
- ssh-add
|
||||
- echo "$DOCKER_PASSWORD" | docker login --password-stdin --username="$DOCKER_USERNAME" docker.io
|
||||
- ldd $CI_PREFIX
|
||||
- apk add git
|
||||
- cuddle x ci:main
|
||||
environment:
|
||||
@@ -126,25 +127,18 @@ steps:
|
||||
path: /root/.ssh/
|
||||
- name: dockersock
|
||||
path: /var/run
|
||||
- name: ci
|
||||
path: /mnt/ci
|
||||
commands:
|
||||
- eval `ssh-agent`
|
||||
- chmod -R 600 ~/.ssh
|
||||
- ssh-add
|
||||
- echo "$DOCKER_PASSWORD" | docker login --password-stdin --username="$DOCKER_USERNAME" docker.io
|
||||
- apk add git
|
||||
- cuddle x ci:release
|
||||
- cuddle x build:release:all
|
||||
- cuddle x deploy:docs:preview
|
||||
environment:
|
||||
DOCKER_BUILDKIT: 1
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: docker_password
|
||||
DOCKER_USERNAME:
|
||||
from_secret: docker_username
|
||||
CUDDLE_SECRETS_PROVIDER: 1password
|
||||
CUDDLE_ONE_PASSWORD_DOT_ENV: ".env.ci"
|
||||
CUDDLE_SSH_AGENT: "true"
|
||||
CI_PREFIX: "/mnt/ci/ci"
|
||||
CUDDLE_CI: "true"
|
||||
CUDDLE_PLEASE_TOKEN:
|
||||
from_secret: cuddle_please_token
|
||||
OP_SERVICE_ACCOUNT_TOKEN:
|
||||
|
28
CHANGELOG.md
28
CHANGELOG.md
@@ -6,34 +6,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.3.0] - 2023-08-13
|
||||
|
||||
### Added
|
||||
- *(ci)* with dagger-rust components
|
||||
- allow v in start of versions
|
||||
- *(json-edit)* added json-edit to update some json content with next global version
|
||||
|
||||
### Fixed
|
||||
- *(git)* make sure we always fail on exit code != 0
|
||||
- *(json-edit)* with actual arg instead of stupid str replace
|
||||
- *(ci)* without token
|
||||
- *(docs)* check fix version
|
||||
- *(crate)* initial pr always included the entire changelog
|
||||
- *(crate)* always prefix with 'v' when creating prs, or releases (#9)
|
||||
|
||||
### Other
|
||||
- remove unnused arguments
|
||||
- *(ci)* fix release step
|
||||
- add dagger-rust and dagger-cuddle-please
|
||||
- *(deps)* update rust crate clap to 4.3.21
|
||||
- *(deps)* update rust crate clap to 4.3.20
|
||||
- *(deps)* update rust crate parse-changelog to 0.6.2
|
||||
- *(deps)* update rust crate regex to 1.9.3
|
||||
- *(deps)* update rust crate regex to 1.9.2
|
||||
- remove cr
|
||||
- *(json-edit)* clarify errors
|
||||
- *(docs)* remove 0.2 checklist
|
||||
|
||||
## [0.2.1] - 2023-08-04
|
||||
|
||||
### Docs
|
||||
|
198
Cargo.lock
generated
198
Cargo.lock
generated
@@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.0.3"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
|
||||
checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@@ -82,9 +82,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anstyle-wincon"
|
||||
version = "1.0.2"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
|
||||
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
|
||||
dependencies = [
|
||||
"anstyle",
|
||||
"windows-sys",
|
||||
@@ -116,9 +116,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.73"
|
||||
version = "0.1.72"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
||||
checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -160,9 +160,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.4.0"
|
||||
version = "2.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
|
||||
checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
@@ -202,13 +202,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.82"
|
||||
name = "camino"
|
||||
version = "1.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
|
||||
checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo-platform"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cargo_metadata"
|
||||
version = "0.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"
|
||||
dependencies = [
|
||||
"camino",
|
||||
"cargo-platform",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -261,8 +292,6 @@ dependencies = [
|
||||
"async-scoped",
|
||||
"clap",
|
||||
"color-eyre",
|
||||
"dagger-cuddle-please",
|
||||
"dagger-rust",
|
||||
"dagger-sdk",
|
||||
"dotenv",
|
||||
"eyre",
|
||||
@@ -272,9 +301,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.3.21"
|
||||
version = "4.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
|
||||
checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@@ -283,9 +312,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.3.21"
|
||||
version = "4.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
|
||||
checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@@ -528,9 +557,11 @@ name = "cuddle-please-release-strategy"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo_metadata",
|
||||
"pretty_assertions",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tempdir",
|
||||
"tracing",
|
||||
"tracing-test",
|
||||
@@ -562,29 +593,6 @@ dependencies = [
|
||||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dagger-cuddle-please"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e172f7c5561341f005b999d4eb28f07952e2bf6e305469e86ff19ee2f6054c9e"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"dagger-sdk",
|
||||
"eyre",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dagger-rust"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43c459f3fb8e1e60912086f9bda6f71d9b83cb0803661deba7e35cf8f05ed5f1"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"dagger-sdk",
|
||||
"eyre",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dagger-sdk"
|
||||
version = "0.2.22"
|
||||
@@ -782,13 +790,13 @@ checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
|
||||
|
||||
[[package]]
|
||||
name = "filetime"
|
||||
version = "0.2.22"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
|
||||
checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall 0.3.5",
|
||||
"redox_syscall 0.2.16",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
@@ -1010,9 +1018,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "globset"
|
||||
version = "0.4.13"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
|
||||
checksum = "aca8bbd8e0707c1887a8bbb7e6b40e228f251ff5d62c8220a4a7a53c73aff006"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"bstr",
|
||||
@@ -1176,9 +1184,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
|
||||
|
||||
[[package]]
|
||||
name = "httpdate"
|
||||
version = "1.0.3"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
|
||||
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
||||
|
||||
[[package]]
|
||||
name = "humansize"
|
||||
@@ -1206,7 +1214,7 @@ dependencies = [
|
||||
"httpdate",
|
||||
"itoa",
|
||||
"pin-project-lite",
|
||||
"socket2 0.4.9",
|
||||
"socket2",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
@@ -1459,9 +1467,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.20"
|
||||
version = "0.4.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
|
||||
|
||||
[[package]]
|
||||
name = "matchers"
|
||||
@@ -1584,9 +1592,9 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.56"
|
||||
version = "0.10.55"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
|
||||
checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"cfg-if",
|
||||
@@ -1616,9 +1624,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.91"
|
||||
version = "0.9.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
|
||||
checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
@@ -1663,9 +1671,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "parse-changelog"
|
||||
version = "0.6.2"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b9325ebdf7f45ff257f87e1ab938263ec03abfc5495f02d5445224b56c055a7"
|
||||
checksum = "39a24196a65fc15a0a747df8c041abc5a009f2c09c550b0a14f7eeb0c10255ef"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 2.0.0",
|
||||
@@ -1783,18 +1791,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "1.1.3"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
|
||||
checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842"
|
||||
dependencies = [
|
||||
"pin-project-internal",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-internal"
|
||||
version = "1.1.3"
|
||||
version = "1.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
||||
checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -1803,9 +1811,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.12"
|
||||
version = "0.2.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05"
|
||||
checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
|
||||
|
||||
[[package]]
|
||||
name = "pin-utils"
|
||||
@@ -1961,13 +1969,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.9.3"
|
||||
version = "1.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
|
||||
checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-automata 0.3.6",
|
||||
"regex-automata 0.3.4",
|
||||
"regex-syntax 0.7.4",
|
||||
]
|
||||
|
||||
@@ -1982,9 +1990,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.3.6"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
|
||||
checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
@@ -2113,11 +2121,11 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.8"
|
||||
version = "0.38.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
|
||||
checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5"
|
||||
dependencies = [
|
||||
"bitflags 2.4.0",
|
||||
"bitflags 2.3.3",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
@@ -2147,9 +2155,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustls-webpki"
|
||||
version = "0.101.3"
|
||||
version = "0.101.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "261e9e0888cba427c3316e6322805653c9425240b6fd96cee7cb671ab70ab8d0"
|
||||
checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59"
|
||||
dependencies = [
|
||||
"ring",
|
||||
"untrusted",
|
||||
@@ -2223,21 +2231,24 @@ name = "semver"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.183"
|
||||
version = "1.0.180"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
|
||||
checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.183"
|
||||
version = "1.0.180"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
|
||||
checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -2368,16 +2379,6 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spin"
|
||||
version = "0.5.2"
|
||||
@@ -2414,9 +2415,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tar"
|
||||
version = "0.4.40"
|
||||
version = "0.4.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
|
||||
checksum = "ec96d2ffad078296368d46ff1cb309be1c23c513b4ab0e22a45de0185275ac96"
|
||||
dependencies = [
|
||||
"filetime",
|
||||
"libc",
|
||||
@@ -2435,9 +2436,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.7.1"
|
||||
version = "3.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651"
|
||||
checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand",
|
||||
@@ -2526,10 +2527,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.31.0"
|
||||
version = "1.29.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "40de3a2ba249dcb097e01be5e67a5ff53cf250397715a071a81543e8a832a920"
|
||||
checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"backtrace",
|
||||
"bytes",
|
||||
"libc",
|
||||
@@ -2538,7 +2540,7 @@ dependencies = [
|
||||
"parking_lot",
|
||||
"pin-project-lite",
|
||||
"signal-hook-registry",
|
||||
"socket2 0.5.3",
|
||||
"socket2",
|
||||
"tokio-macros",
|
||||
"windows-sys",
|
||||
]
|
||||
@@ -3149,9 +3151,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.5.10"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5504cc7644f4b593cbc05c4a55bf9bd4e94b867c3c0bd440934174d50482427d"
|
||||
checksum = "8bd122eb777186e60c3fdf765a58ac76e41c582f1f535fbf3314434c6b58f3f7"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@@ -3167,9 +3169,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "xattr"
|
||||
version = "1.0.1"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
|
||||
checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
@@ -19,20 +19,21 @@ cuddle-please-release-strategy = { path = "crates/cuddle-please-release-strategy
|
||||
anyhow = { version = "1.0.72" }
|
||||
tracing = { version = "0.1", features = ["log"] }
|
||||
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
||||
clap = { version = "4.3.21", features = ["derive", "env"] }
|
||||
clap = { version = "4.3.19", features = ["derive", "env"] }
|
||||
dotenv = { version = "0.15.0" }
|
||||
url = { version = "2.4.0" }
|
||||
serde_yaml = { version = "0.9.25" }
|
||||
serde_json = { version = "*" }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
semver = "1.0.18"
|
||||
conventional_commit_parser = "0.9.4"
|
||||
tempdir = "0.3.7"
|
||||
reqwest = { version = "0.11.18" }
|
||||
git-cliff-core = "1.2.0"
|
||||
regex = "1.9.3"
|
||||
regex = "1.9.1"
|
||||
chrono = "0.4.26"
|
||||
lazy_static = "1.4.0"
|
||||
parse-changelog = "0.6.2"
|
||||
parse-changelog = "0.6.1"
|
||||
|
||||
tracing-test = "0.2"
|
||||
pretty_assertions = "1.4"
|
||||
|
@@ -14,5 +14,3 @@ clap = {version = "4", features = ["derive"]}
|
||||
futures = "0.3.28"
|
||||
async-scoped = { version = "0.7.1", features = ["tokio", "use-tokio"] }
|
||||
dotenv.workspace = true
|
||||
dagger-rust = "0.2.0"
|
||||
dagger-cuddle-please = "0.2.0"
|
||||
|
461
ci/src/main.rs
461
ci/src/main.rs
@@ -7,8 +7,8 @@ use clap::Parser;
|
||||
use clap::Subcommand;
|
||||
use clap::ValueEnum;
|
||||
|
||||
use dagger_rust::build::RustVersion;
|
||||
use dagger_rust::build::SlimImage;
|
||||
use dagger_sdk::Platform;
|
||||
use dagger_sdk::QueryContainerOpts;
|
||||
|
||||
use crate::please_release::run_release_please;
|
||||
|
||||
@@ -30,6 +30,10 @@ pub enum Commands {
|
||||
command: LocalCommands,
|
||||
},
|
||||
PullRequest {
|
||||
#[arg(long)]
|
||||
image: String,
|
||||
#[arg(long)]
|
||||
tag: String,
|
||||
#[arg(long)]
|
||||
bin_name: String,
|
||||
},
|
||||
@@ -41,14 +45,7 @@ pub enum Commands {
|
||||
#[arg(long)]
|
||||
bin_name: String,
|
||||
},
|
||||
Release {
|
||||
#[arg(long)]
|
||||
image: String,
|
||||
#[arg(long)]
|
||||
tag: String,
|
||||
#[arg(long)]
|
||||
bin_name: String,
|
||||
},
|
||||
Release,
|
||||
}
|
||||
|
||||
#[derive(Subcommand, Clone)]
|
||||
@@ -114,65 +111,48 @@ async fn main() -> eyre::Result<()> {
|
||||
|
||||
let cli = Command::parse();
|
||||
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
let debian_image = "debian:bullseye".to_string();
|
||||
|
||||
match &cli.commands {
|
||||
Commands::Local { command } => match command {
|
||||
LocalCommands::Build {
|
||||
profile: _,
|
||||
bin_name,
|
||||
} => {
|
||||
dagger_rust::build::RustBuild::new(client.clone())
|
||||
.build_release(
|
||||
None::<PathBuf>,
|
||||
RustVersion::Nightly,
|
||||
crates,
|
||||
debian_deps,
|
||||
vec![SlimImage::Debian {
|
||||
image: debian_image,
|
||||
deps: debian_deps
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||||
}],
|
||||
&bin_name,
|
||||
)
|
||||
.await?;
|
||||
let base_image = base_rust_image(
|
||||
client.clone(),
|
||||
&cli.global,
|
||||
&None,
|
||||
&bin_name.clone(),
|
||||
&"release".into(),
|
||||
)
|
||||
.await?;
|
||||
let prod_image = get_base_debian_image(client.clone(), &cli.global, None).await?;
|
||||
build::execute(
|
||||
client,
|
||||
&cli.global,
|
||||
&base_image,
|
||||
&prod_image,
|
||||
bin_name,
|
||||
&None,
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
LocalCommands::Test => {
|
||||
dagger_rust::test::RustTest::new(client.clone())
|
||||
.test(None::<PathBuf>, RustVersion::Nightly, crates, debian_deps)
|
||||
.await?;
|
||||
let base_image = base_rust_image(
|
||||
client.clone(),
|
||||
&cli.global,
|
||||
&None,
|
||||
&"cuddle-please".into(),
|
||||
&"debug".into(),
|
||||
)
|
||||
.await?;
|
||||
test::execute(client, &cli.global, base_image).await?;
|
||||
}
|
||||
LocalCommands::DockerImage {
|
||||
tag,
|
||||
image,
|
||||
bin_name,
|
||||
} => {
|
||||
let images = dagger_rust::build::RustBuild::new(client.clone())
|
||||
.build_release(
|
||||
None::<PathBuf>,
|
||||
RustVersion::Nightly,
|
||||
crates,
|
||||
debian_deps,
|
||||
vec![SlimImage::Debian {
|
||||
image: debian_image,
|
||||
deps: debian_deps
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||||
}],
|
||||
&bin_name,
|
||||
)
|
||||
.await?;
|
||||
|
||||
dagger_rust::publish::RustPublish::new(client.clone())
|
||||
.publish(image, tag, images)
|
||||
.await?;
|
||||
build::build_and_deploy(client, &cli.global, bin_name, image, tag).await?;
|
||||
}
|
||||
LocalCommands::PleaseRelease => todo!(),
|
||||
LocalCommands::BuildDocs {} => {
|
||||
@@ -184,90 +164,69 @@ async fn main() -> eyre::Result<()> {
|
||||
.await?;
|
||||
}
|
||||
},
|
||||
Commands::PullRequest { bin_name } => {
|
||||
async fn test(client: Arc<dagger_sdk::Query>) {
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
Commands::PullRequest {
|
||||
image,
|
||||
tag,
|
||||
bin_name,
|
||||
} => {
|
||||
async fn test(client: Arc<dagger_sdk::Query>, cli: &Command, bin_name: &String) {
|
||||
let args = &cli.global;
|
||||
|
||||
dagger_rust::test::RustTest::new(client.clone())
|
||||
.test(None::<PathBuf>, RustVersion::Nightly, crates, debian_deps)
|
||||
let base_image =
|
||||
base_rust_image(client.clone(), args, &None, bin_name, &"debug".into())
|
||||
.await
|
||||
.unwrap();
|
||||
test::execute(client.clone(), args, base_image)
|
||||
.await
|
||||
.expect("rust to test crates");
|
||||
.unwrap();
|
||||
}
|
||||
async fn build(client: Arc<dagger_sdk::Query>, bin_name: &String) {
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
let debian_image = "debian:bullseye".to_string();
|
||||
async fn build(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
cli: &Command,
|
||||
bin_name: &String,
|
||||
image: &String,
|
||||
tag: &String,
|
||||
) {
|
||||
let args = &cli.global;
|
||||
|
||||
dagger_rust::build::RustBuild::new(client.clone())
|
||||
.build_release(
|
||||
None::<PathBuf>,
|
||||
RustVersion::Nightly,
|
||||
crates,
|
||||
debian_deps,
|
||||
vec![SlimImage::Debian {
|
||||
image: debian_image,
|
||||
deps: debian_deps
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||||
}],
|
||||
&bin_name,
|
||||
)
|
||||
build::build(client.clone(), args, bin_name, image, tag)
|
||||
.await
|
||||
.expect("dagger rust to build crates");
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
tokio::join!(test(client.clone()), build(client.clone(), bin_name),);
|
||||
tokio::join!(
|
||||
test(client.clone(), &cli, bin_name),
|
||||
build(client.clone(), &cli, bin_name, image, tag),
|
||||
);
|
||||
}
|
||||
Commands::Main {
|
||||
image,
|
||||
tag,
|
||||
bin_name,
|
||||
} => {
|
||||
async fn test(client: Arc<dagger_sdk::Query>) {
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
async fn test(client: Arc<dagger_sdk::Query>, cli: &Command, bin_name: &String) {
|
||||
let args = &cli.global;
|
||||
|
||||
dagger_rust::test::RustTest::new(client.clone())
|
||||
.test(None::<PathBuf>, RustVersion::Nightly, crates, debian_deps)
|
||||
let base_image =
|
||||
base_rust_image(client.clone(), args, &None, bin_name, &"debug".into())
|
||||
.await
|
||||
.unwrap();
|
||||
test::execute(client.clone(), args, base_image)
|
||||
.await
|
||||
.expect("rust to test crates");
|
||||
.unwrap();
|
||||
}
|
||||
async fn build(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
cli: &Command,
|
||||
bin_name: &String,
|
||||
image: &String,
|
||||
tag: &String,
|
||||
) {
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
let debian_image = "debian:bullseye".to_string();
|
||||
let args = &cli.global;
|
||||
|
||||
let images = dagger_rust::build::RustBuild::new(client.clone())
|
||||
.build_release(
|
||||
None::<PathBuf>,
|
||||
RustVersion::Nightly,
|
||||
crates,
|
||||
debian_deps,
|
||||
vec![SlimImage::Debian {
|
||||
image: debian_image,
|
||||
deps: debian_deps
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||||
}],
|
||||
&bin_name,
|
||||
)
|
||||
build::build_and_deploy(client.clone(), args, bin_name, image, tag)
|
||||
.await
|
||||
.expect("rust build to build release crates");
|
||||
|
||||
dagger_rust::publish::RustPublish::new(client.clone())
|
||||
.publish(image, tag, images)
|
||||
.await
|
||||
.expect("rust publish to publish crates");
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
async fn cuddle_please(client: Arc<dagger_sdk::Query>, cli: &Command) {
|
||||
@@ -277,53 +236,12 @@ async fn main() -> eyre::Result<()> {
|
||||
}
|
||||
|
||||
tokio::join!(
|
||||
test(client.clone()),
|
||||
build(client.clone(), bin_name, image, tag),
|
||||
test(client.clone(), &cli, bin_name),
|
||||
build(client.clone(), &cli, bin_name, image, tag),
|
||||
cuddle_please(client.clone(), &cli)
|
||||
);
|
||||
}
|
||||
Commands::Release {
|
||||
image,
|
||||
tag,
|
||||
bin_name,
|
||||
} => {
|
||||
async fn build(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
bin_name: &String,
|
||||
image: &String,
|
||||
tag: &String,
|
||||
) {
|
||||
let crates = &["crates/*", "ci"];
|
||||
let debian_deps = &["libssl-dev", "pkg-config", "openssl", "git", "jq"];
|
||||
let debian_image = "debian:bullseye".to_string();
|
||||
|
||||
let images = dagger_rust::build::RustBuild::new(client.clone())
|
||||
.build_release(
|
||||
None::<PathBuf>,
|
||||
RustVersion::Nightly,
|
||||
crates,
|
||||
debian_deps,
|
||||
vec![SlimImage::Debian {
|
||||
image: debian_image,
|
||||
deps: debian_deps
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
architecture: dagger_rust::build::BuildArchitecture::Amd64,
|
||||
}],
|
||||
&bin_name,
|
||||
)
|
||||
.await
|
||||
.expect("rust build to build release crates");
|
||||
|
||||
dagger_rust::publish::RustPublish::new(client.clone())
|
||||
.publish(image, tag, images)
|
||||
.await
|
||||
.expect("rust publish to publish crates");
|
||||
}
|
||||
|
||||
build(client.clone(), bin_name, image, tag).await;
|
||||
}
|
||||
Commands::Release => todo!(),
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -459,6 +377,231 @@ mod docs {
|
||||
|
||||
Ok(dep_image)
|
||||
}
|
||||
|
||||
pub async fn publish(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
args: &GlobalArgs,
|
||||
containers: &Vec<dagger_sdk::Container>,
|
||||
) -> eyre::Result<()> {
|
||||
let container_ids =
|
||||
futures::future::join_all(containers.iter().map(|c| c.id()).collect::<Vec<_>>()).await;
|
||||
|
||||
let container_ids = container_ids
|
||||
.into_iter()
|
||||
.collect::<eyre::Result<Vec<dagger_sdk::ContainerId>>>()?;
|
||||
|
||||
client
|
||||
.container()
|
||||
.publish_opts(
|
||||
format!(
|
||||
"{}:{}",
|
||||
args.docs_image.as_ref().expect("--docs-image to be set"),
|
||||
args.docs_image_tag
|
||||
.as_ref()
|
||||
.expect("--docs-image-tag to be set")
|
||||
),
|
||||
dagger_sdk::ContainerPublishOpts {
|
||||
platform_variants: Some(container_ids),
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
mod build {
|
||||
use std::sync::Arc;
|
||||
|
||||
use dagger_sdk::Container;
|
||||
|
||||
use crate::{base_rust_image, get_base_debian_image, GlobalArgs};
|
||||
|
||||
pub async fn build_and_deploy(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
args: &GlobalArgs,
|
||||
bin_name: &String,
|
||||
image: &String,
|
||||
tag: &String,
|
||||
) -> eyre::Result<()> {
|
||||
// let containers = vec!["linux/amd64", "linux/arm64"];
|
||||
|
||||
let base_image = get_base_debian_image(
|
||||
client.clone(),
|
||||
&args.clone(),
|
||||
Some("linux/amd64".to_string()),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let container = base_rust_image(
|
||||
client.clone(),
|
||||
args,
|
||||
&Some("linux/amd64".to_string()),
|
||||
&bin_name.clone(),
|
||||
&"release".into(),
|
||||
)
|
||||
.await?;
|
||||
let build_image = execute(
|
||||
client.clone(),
|
||||
args,
|
||||
&container,
|
||||
&base_image,
|
||||
bin_name,
|
||||
&Some("linux/amd64".to_string()),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let build_id = build_image.id().await?;
|
||||
|
||||
let _container = client
|
||||
.clone()
|
||||
.container()
|
||||
.publish_opts(
|
||||
format!("{image}:{tag}"),
|
||||
dagger_sdk::ContainerPublishOpts {
|
||||
platform_variants: Some(vec![build_id]),
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
pub async fn build(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
args: &GlobalArgs,
|
||||
bin_name: &String,
|
||||
_image: &String,
|
||||
_tag: &String,
|
||||
) -> eyre::Result<()> {
|
||||
// let containers = vec!["linux/amd64", "linux/arm64"];
|
||||
|
||||
let base_image = get_base_debian_image(
|
||||
client.clone(),
|
||||
&args.clone(),
|
||||
Some("linux/amd64".to_string()),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let container = base_rust_image(
|
||||
client.clone(),
|
||||
args,
|
||||
&Some("linux/amd64".to_string()),
|
||||
&bin_name.clone(),
|
||||
&"release".into(),
|
||||
)
|
||||
.await?;
|
||||
let build_image = execute(
|
||||
client.clone(),
|
||||
args,
|
||||
&container,
|
||||
&base_image,
|
||||
bin_name,
|
||||
&Some("linux/amd64".to_string()),
|
||||
)
|
||||
.await?;
|
||||
|
||||
build_image.exit_code().await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
pub async fn execute(
|
||||
_client: Arc<dagger_sdk::Query>,
|
||||
_args: &GlobalArgs,
|
||||
container: &dagger_sdk::Container,
|
||||
base_image: &dagger_sdk::Container,
|
||||
bin_name: &String,
|
||||
platform: &Option<String>,
|
||||
) -> eyre::Result<Container> {
|
||||
let rust_target = match platform
|
||||
.clone()
|
||||
.unwrap_or("linux/amd64".to_string())
|
||||
.as_str()
|
||||
{
|
||||
"linux/amd64" => "x86_64-unknown-linux-gnu",
|
||||
"linux/arm64" => "aarch64-unknown-linux-gnu",
|
||||
_ => eyre::bail!("architecture not supported"),
|
||||
};
|
||||
let build_image = container.with_exec(vec![
|
||||
"cargo",
|
||||
"build",
|
||||
"--target",
|
||||
rust_target,
|
||||
"--release",
|
||||
"-p",
|
||||
bin_name,
|
||||
]);
|
||||
|
||||
let final_image = base_image
|
||||
.with_file(
|
||||
format!("/usr/local/bin/{}", &bin_name),
|
||||
build_image
|
||||
.file(format!("target/{}/release/{}", rust_target, &bin_name))
|
||||
.id()
|
||||
.await?,
|
||||
)
|
||||
.with_exec(vec![bin_name, "--help"]);
|
||||
|
||||
let output = final_image.stdout().await?;
|
||||
println!("{output}");
|
||||
|
||||
//.with_entrypoint(vec![&bin_name, "--log-level=debug"]);
|
||||
|
||||
Ok(final_image)
|
||||
}
|
||||
}
|
||||
|
||||
mod test {
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::GlobalArgs;
|
||||
|
||||
pub async fn execute(
|
||||
_client: Arc<dagger_sdk::Query>,
|
||||
_args: &GlobalArgs,
|
||||
container: dagger_sdk::Container,
|
||||
) -> eyre::Result<()> {
|
||||
let test_image = container
|
||||
.pipeline("rust:test")
|
||||
.with_exec(vec!["apt", "update"])
|
||||
.with_exec(vec!["apt", "install", "-y", "git"])
|
||||
.with_exec(vec!["cargo", "test"]);
|
||||
|
||||
test_image.exit_code().await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_base_debian_image(
|
||||
client: Arc<dagger_sdk::Query>,
|
||||
args: &GlobalArgs,
|
||||
platform: Option<String>,
|
||||
) -> eyre::Result<dagger_sdk::Container> {
|
||||
let default_platform = client.default_platform().await?;
|
||||
let platform = platform.map(Platform).unwrap_or(default_platform);
|
||||
|
||||
let image = client
|
||||
.container_opts(QueryContainerOpts {
|
||||
id: None,
|
||||
platform: Some(platform),
|
||||
})
|
||||
.from(
|
||||
args.production_image
|
||||
.clone()
|
||||
.unwrap_or("debian:bullseye".to_string()),
|
||||
);
|
||||
|
||||
let base_image = image.with_exec(vec!["apt", "update"]).with_exec(vec![
|
||||
"apt",
|
||||
"install",
|
||||
"-y",
|
||||
"libssl-dev",
|
||||
"pkg-config",
|
||||
"openssl",
|
||||
"git",
|
||||
"jq",
|
||||
]);
|
||||
|
||||
Ok(base_image)
|
||||
}
|
||||
|
||||
pub fn get_src(
|
||||
|
@@ -79,13 +79,6 @@ impl VcsClient {
|
||||
let stdout = std::str::from_utf8(&checkout_branch.stdout)?;
|
||||
let stderr = std::str::from_utf8(&checkout_branch.stderr)?;
|
||||
tracing::debug!(stdout = stdout, stderr = stderr, "git {}", args.join(" "));
|
||||
let exit_code = checkout_branch.status;
|
||||
if !exit_code.success() {
|
||||
anyhow::bail!(
|
||||
"failed to run git command: {}",
|
||||
exit_code.code().unwrap_or(-1)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -517,7 +517,6 @@ impl TryFrom<Tag> for Version {
|
||||
tracing::trace!(name = &value.name, "parsing tag into version");
|
||||
value
|
||||
.name
|
||||
.trim_start_matches("v")
|
||||
.parse::<Version>()
|
||||
.context("could not get version from tag")
|
||||
}
|
||||
|
@@ -13,11 +13,13 @@ anyhow.workspace = true
|
||||
tracing.workspace = true
|
||||
serde.workspace = true
|
||||
semver.workspace = true
|
||||
cargo_metadata = "0.17.0"
|
||||
|
||||
[dev-dependencies]
|
||||
tracing-test = { workspace = true, features = ["no-env-filter"] }
|
||||
pretty_assertions.workspace = true
|
||||
tempdir.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
[features]
|
||||
rust-workspace = []
|
||||
@@ -27,5 +29,6 @@ json-edit = []
|
||||
yaml-edit = []
|
||||
|
||||
default = [
|
||||
"json-edit"
|
||||
"json-edit",
|
||||
"rust-workspace"
|
||||
]
|
||||
|
@@ -1,6 +1,11 @@
|
||||
#[cfg(feature = "json-edit")]
|
||||
mod json_edit;
|
||||
#[cfg(feature = "rust-workspace")]
|
||||
mod rust_workspace;
|
||||
mod strategy;
|
||||
|
||||
#[cfg(feature = "json-edit")]
|
||||
pub use json_edit::JsonEditOptions;
|
||||
|
||||
#[cfg(feature = "rust-workspace")]
|
||||
pub use rust_workspace::RustWorkspaceOptions;
|
||||
|
72
crates/cuddle-please-release-strategy/src/rust_workspace.rs
Normal file
72
crates/cuddle-please-release-strategy/src/rust_workspace.rs
Normal file
@@ -0,0 +1,72 @@
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use anyhow::Context;
|
||||
use cargo_metadata::camino::{Utf8Path, Utf8PathBuf};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
fn lock_step_default() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct RustWorkspaceOptions {
|
||||
#[serde(default = "lock_step_default")]
|
||||
pub lock_step: bool,
|
||||
}
|
||||
|
||||
impl RustWorkspaceOptions {
|
||||
pub fn execute(&self, path: &Path, next_version: impl AsRef<str>) -> anyhow::Result<()> {
|
||||
let members = self.get_workspace(path)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_workspace(&self, path: &Path) -> anyhow::Result<Vec<cargo_metadata::Package>> {
|
||||
let entries = std::fs::read_dir(path)
|
||||
.context(anyhow::anyhow!("could not read dir: {}", path.display()))?
|
||||
.flatten()
|
||||
.filter(|p| p.file_name().to_str().unwrap() == "Cargo.toml")
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let cargo_manifest_file = match entries.first() {
|
||||
Some(x) => x,
|
||||
None => anyhow::bail!("did not find any Cargo.toml in: {}", path.display()),
|
||||
};
|
||||
|
||||
let mut cmd = cargo_metadata::MetadataCommand::new();
|
||||
|
||||
let manifest = cmd
|
||||
.no_deps()
|
||||
.manifest_path(cargo_manifest_file.path())
|
||||
.exec()
|
||||
.context("could not parse manifest")?;
|
||||
|
||||
let members = manifest.workspace_members.iter().collect::<Vec<_>>();
|
||||
let workspace_members = manifest
|
||||
.packages
|
||||
.into_iter()
|
||||
.filter(|p| members.contains(&&p.id))
|
||||
.map(|mut p| {
|
||||
p.manifest_path = abs_path(&p.manifest_path);
|
||||
|
||||
for dependency in p.dependencies.iter_mut() {
|
||||
dependency.path = dependency.path.take().map(|path| abs_path(&path))
|
||||
}
|
||||
|
||||
p
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
Ok(workspace_members)
|
||||
}
|
||||
}
|
||||
|
||||
fn abs_path(path: &Utf8Path) -> Utf8PathBuf {
|
||||
match path.canonicalize_utf8() {
|
||||
Ok(path) => path,
|
||||
Err(e) => {
|
||||
tracing::debug!("failed to transform manifest_path into abs path: {}", path);
|
||||
path.to_path_buf()
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
use cargo_metadata::{
|
||||
camino::{Utf8Path, Utf8PathBuf},
|
||||
Package,
|
||||
};
|
||||
use cuddle_please_release_strategy::RustWorkspaceOptions;
|
||||
use serde_json::json;
|
||||
use tracing_test::traced_test;
|
||||
|
||||
#[test]
|
||||
#[traced_test]
|
||||
fn test_can_read_manifest() {
|
||||
let temp = tempdir::TempDir::new("test_rust_workspace_can_read_manifest").unwrap();
|
||||
let temp_path = temp.path();
|
||||
|
||||
std::fs::write(
|
||||
temp_path.join("Cargo.toml"),
|
||||
r#"
|
||||
[workspace]
|
||||
members = [
|
||||
"nested"
|
||||
]
|
||||
|
||||
[workspace.dependencies]
|
||||
nested = { path = "nested" }
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
std::fs::create_dir_all(temp_path.join("nested")).unwrap();
|
||||
std::fs::write(
|
||||
temp_path.join("nested").join("Cargo.toml"),
|
||||
r#"
|
||||
[package]
|
||||
name = "nested"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
nested.workspace = true
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
std::fs::create_dir_all(temp_path.join("nested").join("src")).unwrap();
|
||||
std::fs::write(
|
||||
temp_path.join("nested").join("src").join("lib.rs"),
|
||||
r#"
|
||||
#[test]
|
||||
test () {}
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let options = RustWorkspaceOptions { lock_step: true };
|
||||
|
||||
let members = options.get_workspace(temp_path).unwrap();
|
||||
|
||||
assert!(!members.is_empty());
|
||||
let first = members.first().unwrap();
|
||||
pretty_assertions::assert_eq!("nested", &first.name);
|
||||
}
|
@@ -12,4 +12,6 @@ fi
|
||||
$CMD_PREFIX pull-request \
|
||||
--mkdocs-image "$MKDOCS_IMAGE" \
|
||||
--caddy-image "$CADDY_IMAGE" \
|
||||
--image "$REGISTRY/$SERVICE" \
|
||||
--tag "main-$(date +%s)" \
|
||||
--bin-name "$SERVICE"
|
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
CMD_PREFIX="cargo run -p ci --"
|
||||
|
||||
if [[ -n "$CI_PREFIX" ]]; then
|
||||
CMD_PREFIX="$CI_PREFIX"
|
||||
fi
|
||||
|
||||
|
||||
$CMD_PREFIX release \
|
||||
--mkdocs-image "$MKDOCS_IMAGE" \
|
||||
--caddy-image "$CADDY_IMAGE" \
|
||||
--image "$REGISTRY/$SERVICE" \
|
||||
--tag "$DRONE_TAG" \
|
||||
--bin-name "$SERVICE"
|
Reference in New Issue
Block a user