如何使用 travis ci 配置 SSH 连接?

如何解决如何使用 travis ci 配置 SSH 连接?

我正在尝试为 docker 项目设置 travis ci 配置,但我在我的 .travis.yml 中卡在与服务器的 ssh 连接上。我找不到这个视频 https://www.youtube.com/watch?v=xLWDOLhTH38&ab_channel=DevOpsJourney 的 yml 文件,我已经将我的 ssh 私钥添加到了 travis ci 设置中,我当前工作的 .travis.yml 文件是:

arch:
  - amd64

env:
  - IMGNAME=myImageName

language: java

services:
  - docker

before_install:
  - mvn clean install
  - docker build -t ${IMGNAME} .

script:
  - echo test

after_success:
  - docker login -u ${DHUB_USERNAME} -p ${DHUB_PASSWORD}
  - echo test

解决方法

经过多次尝试和测试,我做到了这一点,我很高兴它像我想要的那样工作,但我确信它不是那么好。

  1. 创建您的 Travis CI 帐户
  2. 启用与您的 Github 存储库的连接
  3. .travis.yml 文件添加到您的项目的 src 目录中(这也应该是您的 git 存储库,但您可以根据需要对其进行编辑)
  4. 由于我们将部署一个 docker 项目,因此我们需要在部署之前测试 docker build 是否有效。这里部署将在我们的私人服务器上,这就是为什么我们需要从 Travis 服务器使用 SSH 连接到我们的服务器。 enter image description here
    1. 我不知道即使您拥有 SSH 密钥,如果防火墙规则阻止您,您也无法连接到服务器?。因此,如果您的 docker 应用程序必须连接到任何服务器,请不要忘记将 Travis 服务器的 IP 地址添加到这些服务器的白名单(防火墙规则)(来自您的主机提供商平台或您的服务器命令行)。查找 Travis CI 服务器的当前 IP 地址 ➢ https://dnsjson.com/nat.travisci.net/A.json
    2. 对于 SSH 密钥,生成密钥后,将其添加到您服务器的授权密钥中
// From your (windows,I don't know how it is for other OS but I think that it is pretty the same) computer execute this command to generate your SSH key,// to make it in pem format which is needed for the travis ci ssh key format,// accept all default paramaters,no paraphrase (travis doesn't like it),// and for the location paramater also (you can change it if you want)

ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"

// Inside your server execute this command
// this will add your SSH key to your server authorized SSH keys
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh [user]@[yourServerIP] "cat >> .ssh/authorized_keys"
  1. 现在你的私钥在 id_rsa 文件中,你的公钥在 id_rsa.pub 中

    1. cat /id_rsa
    2. 将其复制并粘贴到项目的 Travis ci SSH 密钥配置 (https://travis-ci.com/github/[githubUserName]/[github_repo]/settings)
    3. cat /id_rsa.pub
    4. 复制粘贴到你的github项目设置的deploy key中
    5. 现在 Travis 的 SSH 代理会为您完成这项工作
  2. 在您的 .travis.yml 中:

arch:
  - amd64

language: java #Default install Gradle,Maven,Ant
sudo: true # ./mvnw ==> for the permission denied error 

services:
  - docker

before_install:
  - chmod +x mvnw # ./mvnw ==> for the permission denied error

script:
  - mvn clean install # not sure if it's useful before a docker build
  - docker build -t ${DHUB_TAG} .

after_success:
  - eval "$(ssh-agent -s)"
  #- chmod 600 ./deploy_key ==> don't need that anymore
  - echo -e "Host ${SERVER_IP_ADDRESS}\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
  #- ssh-add ./deploy_key ==> don't need that anymore
  - ssh ${SERVER_USER}@${SERVER_IP_ADDRESS} "
    cd ${WORK_FOLDER} &&
    git config user.name ${GITHUB_USERNAME} &&
    git config user.email ${GITHUB_EMAIL} &&
    git pull 'https://${GITHUB_USERNAME}:${GITHUB_PASSWORD}@github.com/${GITHUB_REPO}' production &&
    git config --unset-all user.name &&
    git config --unset-all user.email &&
    sudo apt update &&
    sudo apt install maven &&
    mvn clean install &&
    docker login -u ${DHUB_USERNAME} -p ${DHUB_PASSWORD} &&
    docker build -t ${DHUB_TAG} . &&
    docker push ${DHUB_TAG} &&
    docker pull ${DHUB_TAG} &&
    docker stop ${DOCKER_CONTAINER_NAME} || true && docker rm ${DOCKER_CONTAINER_NAME} || true &&
    docker run -p 8080:8080 --name=${DOCKER_CONTAINER_NAME} -d ${DHUB_TAG}"
  • 要添加您的 ${params},请转到您的项目设置 enter image description here
  • 对文件中未解释的内容进行一些演练
    • 制作 arch: amd64 ==> 选择 CPU 架构
    • services: docker ==> 将启动 docker 服务
    • 建立 SSH 连接后
      • 更新 git 仓库
      • mvn clean install 用于目标文件夹和 jar
      • 构建您的 docker 镜像,将其推送到 docker hub
      • 拉取并运行它
      • “docker stop ${DOCKER_CONTAINER_NAME} || true && docker rm ${DOCKER_CONTAINER_NAME} || true” ==> 如果 docker 容器不存在

此外,如果您希望它们隐藏在 Travis ci 日志中,您可以将 ${anyValue} 添加到 Travis 设置中。

感谢您的时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-