溫馨提示×

如何在Ubuntu上為Golang項目配置CI/CD

小樊
74
2025-05-15 22:51:09
欄目: 編程語言

在Ubuntu上為Golang項目配置CI/CD(持續集成和持續部署)可以通過多種方式實現,其中最常用的是使用GitHub Actions、GitLab CI/CD或Jenkins。以下是使用GitHub Actions和GitLab CI/CD的示例步驟:

使用GitHub Actions

  1. 創建GitHub倉庫

    • 如果你還沒有GitHub倉庫,首先創建一個。
  2. 初始化Golang項目

    • 在本地初始化你的Golang項目,并確保有一個go.mod文件。
  3. 創建GitHub Actions工作流文件

    • 在你的項目根目錄下創建一個.github/workflows目錄。
    • 在該目錄下創建一個新的YAML文件,例如ci.yml。
name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.17
    - name: Build
      run: go build -v ./...
    - name: Test
      run: go test -v ./...
  1. 提交并推送工作流文件

    • .github/workflows/ci.yml文件添加到你的倉庫并提交推送。
  2. 配置GitHub Secrets(可選):

    • 如果你需要訪問私有倉庫或其他敏感信息,可以在GitHub倉庫的Settings -> Secrets中添加這些信息。

使用GitLab CI/CD

  1. 創建GitLab項目

    • 如果你還沒有GitLab項目,首先創建一個。
  2. 初始化Golang項目

    • 在本地初始化你的Golang項目,并確保有一個go.mod文件。
  3. 創建.gitlab-ci.yml文件

    • 在你的項目根目錄下創建一個.gitlab-ci.yml文件。
stages:
  - build
  - test

build:
  stage: build
  image: golang:1.17
  script:
    - go build -v ./...
  artifacts:
    paths:
      - bin/

test:
  stage: test
  image: golang:1.17
  script:
    - go test -v ./...
  1. 提交并推送.gitlab-ci.yml文件

    • .gitlab-ci.yml文件添加到你的倉庫并提交推送。
  2. 配置GitLab CI/CD變量(可選):

    • 如果你需要訪問私有倉庫或其他敏感信息,可以在GitLab項目的Settings -> CI/CD -> Variables中添加這些信息。

部署

如果你還需要配置持續部署(CD),可以在上述工作流文件中添加部署步驟。例如,使用SSH將構建好的二進制文件部署到遠程服務器:

GitHub Actions部署示例

deploy:
  stage: deploy
  image: appleboy/scp-action@master
  with:
    host: ${{ secrets.SSH_HOST }}
    username: ${{ secrets.SSH_USERNAME }}
    key: ${{ secrets.SSH_KEY }}
    source: ./bin/your-app
    target: /path/to/deploy

GitLab CI/CD部署示例

deploy:
  stage: deploy
  image: appleboy/scp-action@master
  script:
    - scp ./bin/your-app $SSH_USER@$SSH_HOST:/path/to/deploy
  only:
    - main

通過以上步驟,你可以在Ubuntu上為Golang項目配置CI/CD,并實現自動化構建、測試和部署。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女