continuous-integration - Gitlab CI/CD 部署到本地 Tomcat
问题描述
我是 CI/CD 新手,现在尝试使用 Gitlab CI/CD 功能在 Gitlab 存储库中部署一个 Maven Java 项目。如果部署到内置 docker 映像,则部署步骤将成功。但是,当我尝试在本地计算机目标中部署时,部署步骤失败。有人对此有任何想法吗?
我曾尝试在 Mac OSX 中注册并运行 gitlab-runner 来处理 CI/CD。我已经安装了码头工人。
这是 .gitlab-ci.yml 文件。
image: maven:latest
stages:
- build
- test
- deploy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
SSH_PRIVATE_KEY: "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAA..."
SSH_KNOWN_HOSTS: "# YmkSun.local:22 SSH-2.0-OpenSSH_7.9
ymksun.local ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSMOpRI..."
DEPLOY_USER: "yemyokyaw"
DEPLOY_HOST: "YmkSun.local"
DEPLOY_PATH: "/Users/yemyokyaw/Documents/tmp"
cache:
paths:
- .m2/repository/
- target/
build_app:
stage: build
dependencies: []
script:
- mvn $MAVEN_CLI_OPTS compile
test:
stage: test
script:
- mvn $MAVEN_CLI_OPTS test
deploy:stand:
stage: deploy
dependencies: []
environment:
name: staging
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r'
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh yemyokyaw@YmkSun.local "cd /builds/ymksun/sample-cicd-parent && git checkout master && git pull origin master && exit"
- ssh $DEPLOY_USER@$DEPLOY_HOST "cd '$DEPLOY_PATH'; git pull; docker restart home-assistant"
当我尝试第二个脚本时出现错误消息:
$ ssh $DEPLOY_USER@$DEPLOY_HOST "cd '$DEPLOY_PATH'; git pull; docker restart home-assistant" ssh: 连接到主机 localhost 端口 22: 无法分配请求的地址
当我尝试第一个脚本时出现错误消息:
$ ssh yemyokyaw@YmkSun.local "cd /builds/ymksun/sample-cicd-parent && git checkout master && git pull origin master && exit" 主机密钥验证失败。
解决方案
推荐阅读
- django - 石墨烯 Django 获取物品
- django - 如果我们想要良好的性能和效率,我们是否应该使用 Flutter 和 Django 创建聊天应用程序?
- go - 如何终止从 goroutine 调用的函数
- bash - 暂停 cURL 以清除输出并恢复
- nsopenpanel - 打开文件时出现奇怪的消息
- r - 如何从 r 中的源代码导入函数并保留希伯来语字符
- python - 今天和昨天同一时间数据Mysq的成本比较;
- vue.js - 深入挖掘在 IIS 上运行 .NET Core 应用程序
- tcl - Tcl:这个过程如何返回一个值?
- session - Cakephp 4 方法“session()”不存在