秘钥对使用_使用gitactions持续集成项目实例

前言

在以前,我们发布代码都是在本地先将代码编译打包压缩好好,然后借助 xshell 等工具登录服务器,将压缩好的代码拷贝到服务器目录,解压执行。但是这种方式是繁琐低效的。而且,直接登录服务器进行操作有很大的风险。随着 DevOps 的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法,开发人员只需要通过工具定义好整个软件打包发布的流水线(Pipeline)就可以实现自动化。

那么,通过什么软件去定义这个流水线,就是下面我要介绍的 github 提供的 Actions 模块功能。

actions 配置文件

actions 的配置文件存放在代码仓库的.github/workflows目录。是一个yml文件,名字可以自定义。

配置字段

  • name:工作流(Workflows)的名字,你可以定义多个流水线,名字可以帮助你区分。

  • on:Workflows 触发的时机,一般是 push 和 pr 到指定分支时触发。

  • runs-on:工作流执行的虚拟机环境。

  • job:任务,一个 Workflows 可由一个或多个 job 组成。

  • step:步骤,每个 job 可由一个或多个 step 组成。

  • use:在执行 step 时,你可以使用别人定义好的 actions

  • run:在执行 step 时,执行 run 对应的 shell 命令

下面是我目前配置的 Workflows

name: vpBlog# Controls when the action will run. Triggers the workflow on push or pull request# events but only for the master branchon:  push:    branches: [master]  pull_request:    branches: [master]# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs:  # This workflow contains a single job called "build"  build:    # The type of runner that the job will run on    runs-on: ubuntu-latest    # Steps represent a sequence of tasks that will be executed as part of the job    steps:      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it      - uses: actions/checkout@v2      - name: Install Node.js        uses: actions/setup-node@v1        with:          node-version: "10.x"      - name: install dependencies        run: npm install      # Runs a single command using the runners shell      - name: build project        run: npm run build      - name: Deploy to Server        uses: easingthemes/ssh-deploy@v2.1.1        env: # 以下为参数          SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }}          ARGS: "-rltgoDzvO --delete"          REMOTE_USER: ${{ secrets.DEPLOY_USER }} # 为了用户信息安全对敏感数据可以在secrets中配置          REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}          SOURCE: ".vuepress/dist"          TARGET: "/usr/share/nginx/html

secrets 配置

上面配置中你一定很好奇secrets.DEPLOY_SSH_KEY是如何获取的。下面就可以解答你的疑惑。

相信秘钥,服务器地址这些敏感信息,你一定不希望被别人看到。所以 github 也贴心的提供了 secrets 模块配合 actions 使用。

具体配置方法可以看下图

3afdbdde2e36e299973f8cb80b9b02f5.png

工作流配置

每个人在发布前可能会执行 eslint 检查,或者跑单元测试,然后在执行 build,这里不展开讲了。最终的目的是要将代码发布到指定的服务器上。下面就来说下这步怎么做。

其实也不复杂,是借助了easingthemes/ssh-deploy这个开源的 action,其原理也是使用rsync这个工具实现数据传输。

- name: Deploy to Server    uses: easingthemes/ssh-deploy@v2.1.1    env: # 以下为参数        SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }}        ARGS: "-rltgoDzvO --delete"        REMOTE_USER: ${{ secrets.DEPLOY_USER }}        REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}        SOURCE: '.vuepress/dist'        TARGET: '/usr/share/nginx/html'

服务器配置

由于rsync是借助秘钥实现通过 ssh 进行传输。所以在服务器上需要做一些配置。

创建秘钥

ssh-keygen -m PEM -t rsa -b 4096

在服务器上安装公钥

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

编辑 /etc/ssh/sshd_config 文件,开启服务器允许通过秘钥登录

RSAAuthentication yesPubkeyAuthentication yes

因为我是直接使用 root 账号,所以还要开启允许 root 通过 ssh 登录

PermitRootLogin yes

重启 ssh 服务器

service sshd restart

最后将私钥(id_rsa )中的内容保存到 secrets

总结

因为都是静态文件所以直接拷贝到 nginx 目录就可以直接运行了,所以相对比较简单。如果是服务端还需要涉及到执行重启等功能。

下面放一个执行成功的 actions

ad1b0a18f70dacc554041e7e7ee887a1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Java 项目集成 Neo4j 的示例: 1. 首先,您需要在项目中添加 Neo4j 驱动程序的依赖项。可以通过 Maven 或 Gradle 添加依赖项。如果您使用 Maven,请在 pom.xml 文件中添加以下依赖项: ```xml <dependency> <groupId>org.neo4j.driver</groupId> <artifactId>neo4j-java-driver</artifactId> <version>4.2.1</version> </dependency> ``` 如果您使用 Gradle,请在 build.gradle 文件中添加以下依赖项: ```groovy implementation 'org.neo4j.driver:neo4j-java-driver:4.2.1' ``` 2. 然后,您需要创建一个 Neo4j 驱动程序实例。您可以使用以下代码: ```java Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password")); ``` 此代码将创建一个使用 Bolt 协议连接到本地 Neo4j 数据库的驱动程序实例。请注意,您需要替换 "password" 为您自己的数据库密码。 3. 接下来,您可以使用驱动程序实例执行查询。以下是一个简单的示例: ```java try (Session session = driver.session()) { Result result = session.run("MATCH (n) RETURN n.name AS name"); while (result.hasNext()) { Record record = result.next(); System.out.println(record.get("name").asString()); } } ``` 此代码将执行一个查询,返回所有节点的名称,并将结果打印到控制台。 4. 最后,您需要关闭驱动程序实例。以下是一个示例: ```java driver.close(); ``` 这将关闭驱动程序实例并释放与数据库的连接。 完整的示例代码如下: ```java import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.Record; import org.neo4j.driver.Result; import org.neo4j.driver.Session; public class Neo4jDemo { public static void main(String[] args) { Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password")); try (Session session = driver.session()) { Result result = session.run("MATCH (n) RETURN n.name AS name"); while (result.hasNext()) { Record record = result.next(); System.out.println(record.get("name").asString()); } } driver.close(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值