第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

如何用GitHub Actions搭建CI/CD流水線實(shí)現(xiàn)自動(dòng)化部署?

这篇文章将教你如何利用GitHub Actions在你的代码库中实现持续集成和持续部署,以自动化你的开发流程。
为了演示这一点,我将用一个简单的Node.js应用作为示例应用,并部署到我自己的VPS(虚拟专用服务器)上。

但是说真的,什么是CI/CD流水线,我们为什么需要它呢?
非常好的问题!让我们用简单的话来说一下。

什么是CI/CD流程?
CI/CD流程自动完成构建、测试和部署代码的流程,每当代码仓库发生变化时,。

持续集成(CI) 是一种确保新代码自动测试并合并的技术。
持续交付(CD) 是一种自动化部署技术,确保软件的最新版本始终处于可发布的状态。

为什么我们需要它?
没有CI/CD,开发人员必须手动测试和部署代码,这既耗时耗力容易犯错,又效率低下。CI/CD流水线加快开发周期,减少错误,并确保平稳部署过程。

想象你在你的 VPS 上有一个托管的项目。

• 使用 CI(持续集成,Continuous Integration) ,每次你推送代码到 GitHub 时,它会自动运行测试来查找错误。
• 使用 CD(持续部署,Continuous Deployment) ,如果所有测试都通过了,你的应用程序会自动部署到你的 VPS(虚拟私人服务器),自动保持最新状态,无需手动操作。

它是怎么运作的?
这就轮到GitHub Actions上场了!作为一款流行的CI/CD工具,GitHub Actions让开发人员可以直接在GitHub仓库中自动化构建、测试和部署应用。

GitHub 动作

GitHub Actions 的核心在于这些自动化流程,它们会执行一个或多个预先定义好的任务。

工作流可以定制以满足特定需求,例如,可以:
• 对每个拉取请求 (pull requests) 运行测试。
• 自动将合并后的代码部署到生产环境。

这些工作流定义在存储于你仓库中的 YAML 文件中,确保自动化可以无缝地融入你的开发过程中。

让我们来点实际的吧!🚀
现在,我们一步步来搭建使用GitHub Actions的CI/CD管道。

第一步:创建你的Node.js项目
在这个指南里,我已经为你创建了一个Node.js应用。你可以自己新建一个,或者用现有的项目。

步骤2:创建一个GitHub仓库
• 初始化你的项目的Git仓库。
• 如果你还没有这么做过,将你的项目推送到GitHub。

步骤 3:在 GitHub 上设置秘密变量

请按照以下步骤:

  1. 前往你的 GitHub 仓库。
  2. 点击设置选项卡。
  3. 在左侧边栏中,导航到密钥和变量 → 操作设置。
  4. 点击新建仓库密钥项。
  5. 输入密钥名称(例如 DEPLOY_SSH_KEY,SERVER_IP,DOCKER_USERNAME)。
  6. 在框中粘贴密钥值(例如 SSH 私钥,API 令牌)。
  7. 点击添加密钥项。

github variables
这些秘密现在可以直接通过 ${{ secrets.SECRET_NAME }} 在你的 GitHub Actions 中访问和使用。

步骤4:创建GitHub Actions工作流文件
如果项目根目录下还没有.github/workflows 目录,请创建一个。请在该目录中创建一个名为'deploy.yml'的文件。

.github/workflows/

注:.github/workflows/ 是 GitHub 仓库中的一个标准目录路径。

进入全屏,退出全屏

现在,在你的 deploy.yml 文件中定义你的 CI/CD 流水线:
deploy.yml

    name:部署流水线

    on:
      push:
        branches:
          - main
        tags:
          - '*'

    jobs:
      build:
        runs-on: ubuntu-latest

        steps:
          - name: 拉取代码
            uses: actions/checkout@v3

          - name: 安装 Node.js
            uses: actions/setup-node@v3
            with:
              node-version: '20.8.1'

          - name: 安装依赖
            run: npm install

          - name: 构建项目
            run: npm run build

切换到全屏
退出全屏

如果你想向构建过程中添加一个步骤,将构建推送到Docker Hub,你可以创建一个类似的单独作业。该作业会处理构建Docker镜像并将镜像推送到你的Docker Hub存储库。

    docker:
        name: 构建并推送 Docker 镜像
        runs-on: ubuntu-latest
        needs: build

        steps:
          - name: 获取代码
            uses: actions/checkout@v3

          - name: 登录 Docker
            uses: docker/login-action@v2
            with:
              username: ${{ secrets.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKER_PASSWORD }}

          - name: 构建 Docker 镜像
            run: |
              docker build -t ${{ secrets.DOCKER_USERNAME }}/github-action-test:latest .

          - name: 上传 Docker 镜像
            run: |
              docker push ${{ secrets.DOCKER_USERNAME }}/github-action-test:latest

进入全屏 退出全屏

要设置持续交付(CD)流程,你可以使用一个名为appleboy/ssh-action的GitHub Actions插件。此插件允许你通过SSH凭据在远程服务器上执行命令。通过使用此插件,你可以停止并删除现有的Docker容器实例,从Docker Hub拉取最新的镜像,并启动更新后的容器实例,这一切都可以自动完成,无需人工干预。

deploy:
    name: 部署到远程虚拟私有服务器
    runs-on: ubuntu-latest
    needs: docker

    steps:
     - name: 部署到远程服务器
        uses: appleboy/ssh-action@v1.2.0
        with:
            host: ${{ secrets.REMOTE_HOST }}
            username: ${{ secrets.REMOTE_USER }}
            password: ${{ secrets.SSH_PRIVATE_KEY }}
            script: |
              echo "进入 Docker Compose 文件目录"
              cd /path to your repo/ 
              echo "停止并移除任何正在运行的容器"
              docker stop <container name>
              docker rm <container name>
              echo "删除旧的 Docker 镜像"
              docker rmi -f <latest image> || true
              echo "在远程服务器上登录到 Docker Hub"
              echo "${secrets.DOCKER_PASSWORD}" | docker login -u "${secrets.DOCKER_USERNAME}" --password-stdin
              echo "拉取最新版本的镜像"
              docker compose up --build -d

进入全屏模式, 退出全屏

最终的示例代码如下:

    name: 构建并部署到测试环境

    on:
      push:
        branches:
          - main
        tags:
          - '*'

    jobs:
      build:
        name: 构建 Node.js 项目
        运行在: ubuntu-latest

        steps:
          - name: 检出代码
            uses: actions/checkout@v3

          - name: 设置 Node.js 环境
            uses: actions/setup-node@v3
            with:
              node-version: '20.8.1'

          - name: 安装依赖
            run: npm install

          - name: 构建 React 应用
            run: npm run build

      docker:
        name: 构建和推送 Docker 镜像
        运行在: ubuntu-latest
        需要: build

        steps:
          - name: 检出代码
            uses: actions/checkout@v3

          - name: 登录 Docker Hub
            uses: docker/login-action@v2
            with:
              username: ${{ secrets.DOCKER_USERNAME }}
              password: ${{ secrets.DOCKER_PASSWORD }}

          - name: 构建 Docker 镜像
            run: |
              docker build -t ${{ secrets.DOCKER_USERNAME }}/github-action-test:latest .

          - name: 推送 Docker 镜像
            run: |
              docker push ${{ secrets.DOCKER_USERNAME }}/github-action-test:latest

      deploy:
        name: 部署到远程 VPS
        运行在: ubuntu-latest
        需要: docker

        steps:
          - name: 通过 SSH 部署
            uses: appleboy/ssh-action@v1.2.0
            with:
              host: ${{ secrets.REMOTE_HOST }}
              username: ${{ secrets.REMOTE_USER }}
              password: ${{ secrets.SSH_PRIVATE_KEY }}
              script: |
                echo "切换到 Docker Compose 文件目录"
                cd /path/to/your/repo/
                echo "停止并移除运行中的容器"
                docker stop <container name>
                docker rm <container name>
                echo "删除旧的 Docker 镜像"
                docker rmi -f <latest image>|| true
                echo "远程登录 Docker Hub"
                echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
                echo "拉取最新 Docker 镜像"
                docker compose up --build -d

全屏 全退

第五步:设置跑步者

在使用 GitHub Actions 时,运行程序是用于执行工作流的环境。这里有两类运行程序可供选择。

  1. 托管在GitHub上的执行器
  2. 自行托管的执行器

GitHub托管的运行器
GitHub托管的运行器是由GitHub提供和管理的虚拟机。您无需进行任何设置或维护,GitHub会为工作流程中的每个作业自动创建一个全新、安全且隔离的执行环境。这些运行器非常适合大多数CI/CD应用场景,并且使用起来几乎无需任何设置。

你可以选择以下环境中的任意一个,例如:
• ubuntu-latest
• windows-latest
• macos-latest

因为所有事情都是为你管理的,它们非常适合快速配置和标准工作流程。不过,它们的自定义选项比较有限,处理资源密集型构建时可能较慢。此外,还有使用限制,特别是私有仓库方面。

自托管运行器
自托管运行器是指你自行管理的机器,比如个人VPS、本地服务器或云服务器,并将它们注册到你的GitHub仓库或组织下。配置完成后,GitHub可以将工作流程任务分配到你自己的基础设施上。

这给你提供了对环境的完全控制,意味着你可以提前安装所需的依赖项,增加内存分配,并根据你的具体需求进行细致调整。在私人或受限制的环境中,这些设置特别有用,在这些情况下,使用公共的GitHub托管运行器不合适。

它们不仅为重复构建提供更快的执行速度,因为环境是持久的,不像 GitHub 主办的运行器每次都会重新启动新的虚拟机。但是请注意,你还需要负责运行器的安全性、维护、可用性和可扩展性,这些都需要更多的设置和持续管理。

现在,我们将要看看如何来设置自托管运行器。

按以下步骤来,

  1. 前往你的 GitHub 代码库。
  2. 点击设置选项卡。
  3. 在左侧边栏中选择操作 → 运行器。
    GitHub 运行器

    单击 新自托管运行程序 按钮

自托管运行环境

选择运行时图片

  1. 将GitHub提供的配置命令复制并粘贴到你的服务器终端中,以将工作程序注册到你的仓库或组织的。

步骤 6:测试一下您的 CI/CD 持续集成和持续交付流水线

现在一切都准备好了啦:

  1. 在你的 Node.js 项目中做一些修改。
  2. 将其推送到你的 GitHub 仓库的主分支上。
  3. 在你的 GitHub 仓库中打开 Actions 标签页,观察工作流。
  4. 如果所有设置都正确无误,GitHub Actions 会通过 SSH 连接到你的 VPS 并自动部署最新代码。

就这样,搞定!你刚刚创建了一个功能完整的CI/CD工作流程!从写代码、测试到构建Docker镜像并部署到你的VPS,一切都变得自动化且更加高效了。

通过设置此工作流,你已经向现代DevOps实践迈出了重要一步。你将减少手动部署所需的时间,降低错误率,同时自信地加快交付速度。此外,借助自定义运行器的灵活性,你的流水线可以随着项目基础设施需求的增长而灵活扩展。

CI/CD 不再只是大公司的专享 —— 有了像 GitHub Actions 这样的工具,现在任何人都可以使用了。不妨一试,把你的自动化提升到下一个层次。

谢谢阅读!如果你有任何反馈、问题或改进意见,欢迎在下面留言,我很想听听你的想法。

祝你编程愉快,别忘了无论走到哪里都记得绽放你的微笑!😄

如果你希望联系或支持我的事业:
📧 欢迎通过电子邮件与我联系:getintouchwithvishnu@gmail.com

☕ 如果你觉得这有帮助,想支持我,可以在这里买我一杯咖啡:买我一杯咖啡

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消