匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

使用GitHub Actions进行持续集成和持续部署

使用GitHub Actions进行持续集成和持续部署

随着现代软件开发流程的发展,持续集成和持续部署已经成为了大多数项目的标配。它们可以大大提高开发和部署的效率,减少手动操作的出错几率。在本文中,我们将介绍如何使用GitHub Actions进行持续集成和持续部署。

什么是GitHub Actions?

GitHub Actions是GitHub提供的一项新功能,它可以帮助开发者自动化软件开发过程中的各种工作流。通过使用GitHub Actions,我们可以自定义各种工作流程,在特定的代码变动或事件触发时自动执行特定的任务,比如自动运行测试、打包发布等等。

在GitHub Actions中,我们可以将这些任务称为“Job”,它们是基于Docker容器运行的,因此支持运行多种语言和框架。我们可以在每个Job中定义运行的环境、运行的命令、使用的工具和依赖等等。

GitHub Actions免费且支持公开和私有仓库的使用,因此对于个人和企业来说都是一项非常实用的功能。

如何使用GitHub Actions进行持续集成和持续部署?

下面我们将详细介绍如何使用GitHub Actions进行持续集成和持续部署。

1. 配置GitHub Actions

首先,我们需要在GitHub仓库中创建一个“.github/workflows”目录,并在该目录下创建一个YAML文件来定义工作流程。在该文件中,我们可以定义一些触发条件,比如Push、Pull Request、定时任务等等。

以下是一个简单的YAML文件示例:

```yaml
name: CI/CD

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        run: |
          npm install
          npm test
```

该示例定义了一个名为“CI/CD”的工作流程,当代码有Push操作时触发。

在这个工作流程中,我们定义了一个名为“build”的Job,它使用最新版本的Ubuntu镜像运行,并执行以下两个步骤:

1. 使用“actions/checkout”Action拉取代码;
2. 运行“npm install”和“npm test”命令,执行代码测试。

这只是一个简单的示例,你可以根据自己的需求自定义Job的步骤和环境。

2. 配置持续部署

在完成了持续集成的配置后,我们还需要配置持续部署。这需要在工作流程的最后一个Job中配置。

以下是一个完整的示例:

```yaml
name: CI/CD

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        run: |
          npm install
          npm test

  deploy:
    runs-on: ubuntu-latest
    needs: [build]
    steps:
      - uses: actions/checkout@v2
      - name: Build and deploy app
        env:
          SERVER_IP: ${{ secrets.SERVER_IP }}
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        run: |
          ssh-keyscan $SERVER_IP >> ~/.ssh/known_hosts
          ssh -i $SSH_PRIVATE_KEY user@$SERVER_IP "cd /path/to/app && git pull && npm install && pm2 restart app"
```

该示例定义了两个Job:build和deploy。其中,build Job和前文示例相同,用于持续集成。

deploy Job用于持续部署,它依赖于build Job,在build Job执行成功后触发。在该Job中,我们定义了一些环境变量,如SERVER_IP、SSH_PRIVATE_KEY等,用于访问服务器和进行部署操作。

在该Job中,我们使用“ssh-keyscan”命令将服务器公钥添加到本地的“known_hosts”文件中,以确保可以访问服务器。接着,我们使用SSH连接到服务器,进入应用程序所在目录,然后使用“git pull”命令拉取最新代码,运行“npm install”命令安装依赖,最后使用“pm2 restart app”命令重启应用程序。

在执行deploy Job时,我们需要注意将服务器信息和SSH私钥保存在GitHub仓库的“Secrets”中,以确保安全。

结语

通过使用GitHub Actions进行持续集成和持续部署,我们可以大大提高软件开发和部署的效率,减少手动操作的出错几率。通过上述示例,我们可以看到,GitHub Actions非常强大且灵活,可以根据我们的需求自由定义各种工作流程。