#docker #rust #docker-compose #github-actions
Вопрос:
Я пишу CI для действий на Github с помощью Rust. Я хочу выполнить docker-compose
из Rust по некоторым причинам. В рамках Command
я указываю текущий рабочий каталог в папке , в которой находится файл docker-compose.yml. Это какой-то код:
let docker_compose_file = current_dir.parent().unwrap().to_owned();
if docker_compose_file.join("docker-compose.yml").exists() {
println!(
"Found docker-compose file, full path: {:#?}",
docker_compose_file
);
// DEBUG CODE
let ls_result = Command::new("ls")
.arg(docker_compose_file.to_str().unwrap())
.output()
.unwrap()
.stdout;
let y = String::from_utf8(ls_result).unwrap();
println!("LS'ing gives: {:#?}", y);
} else {
panic!(
"Wrong file, current working dir: {:#?}",
docker_compose_file
);
}
let result = Command::new("docker-compose")
.current_dir(amp;docker_compose_file)
.args(amp;["up", "-d"])
.status()
.unwrap();
Я вижу в действиях Github следующее ведение журнала:
Нашли докер-сочинять файл, полный путь: «/пользователи/бегун/работать/что-то/что-то/сервер» ЛС-Джея, дает: «Cargo.locknCargo.tomlnapinbatch_jobsnci_setupncommonndatabasendeployment.mdndocker-compose.ymlnrustfmt.tomlnserverntargetn» потоке «основной» запаниковал, назвал
Result::unwrap()
поErr
стоимости: ОС { код: 2, Вид: процесс, сообщение: «Нет такого файла или каталога» }’, ci_setup/src/главная.РС:137:14 Примечание: бежать сRUST_BACKTRACE=1
переменной среды, чтобы вывести след
Я в замешательстве. ls
ясно показывает, что файл docker-compose.yml присутствует. Почему я получаю ошибку Rust, в которой говорится, что не удается найти файл или каталог?
main.rs:137 относится к unwrap
вызову метода в нижней части примера кода.
Комментарии:
1. Не могли бы вы поделиться рабочим процессом GHA (файл.yml), используемым в вашем вопросе? 🙂
2. @GuiFalourd на самом деле в этом нет ничего особенного, я клонирую свой проект в директории, я
cd
в этой дирекции и запускаюcargo run
3. Я задал этот вопрос, потому что для доступа к файлам репозитория в рабочем процессе GHA вам необходимо использовать
actions/checkout
. Если вы им не пользовались, это может быть причиной вашей проблемы.