Skip to content

Latest commit

 

History

History
114 lines (95 loc) · 3.76 KB

README.zh-cn.md

File metadata and controls

114 lines (95 loc) · 3.76 KB

Git Release Workflow

English | 简体中文

生成 Git ChangeLog 的工具,包含在 GitLab CI/CD 中生成并推送 Release 工作流以及 GitHub Action 的推送 Release 工作流

DockerHub Repositorie

尝试使用

GitLab CI/CD 推送 Release

GitLab Release 需要的 login-action 选项包括:

  • PRIVATE-TOKEN:这是您的 GitLab 仓库的访问令牌。 我们需要将 GitLab 访问令牌存储在项目的 CI/CD 变量,命名为ACCESS_TOKEN,使它们不会公开在工作流程文件中, 更多信息请参阅创建和使用 GitLab 访问令牌
stages:
  - release-note
  - build
  - generic

release:
  rules:
    - if: '$CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE == "push"'
      when: on_success
  stage: release-note
  image: shencangsheng/gitlab-pipeline-release:latest
  script:
    # 注意区分GitLab版本
    # <= 13.x 使用 post-gitlab-release-13x
    # >= 14.x 使用 post-gitlab-release-14x
    - post-gitlab-release-14x

generic:
  rules:
    - if: '$CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE == "push"'
      when: on_success
  stage: generic
  image: shencangsheng/gitlab-pipeline-release:latest
  script:
    - tar -czf dist.tar.gz dist
    - tar -czf docs.tar.gz docs
    - post-gitlab-release-generic-14x ./dist.tar.gz dist.tar.gz
    - post-gitlab-release-generic-14x ./docs.tar.gz docs.tar.gz
    - post-gitlab-release-links-14x -n dist -u "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/release/${CI_COMMIT_TAG}/dist.tar.gz" -t package
    - post-gitlab-release-links-14x -n docs -u "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/release/${CI_COMMIT_TAG}/docs.tar.gz" -t runbook
  dependencies:
    - build

GitHub Action 推送 Release

on:
  push:
    tags:
      - "[0-9]+.*"
      - "v*"
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Create Release
        run: |
          curl -fsSL -o changelog-echo.sh `wget -qO- -t1 -T2 "https://api.github.com/repos/shencangsheng/Git-Release-Workflow/releases/latest" | grep "browser_download_url" | grep 'changelog-echo.sh"' | head -n 1 | awk -F ': "' '{print $2}' | sed 's/\"//g;s/,//g;s/ //g'`
          bash changelog-echo.sh >CHANGELOG.md
      - name: Archive code coverage results
        uses: actions/upload-artifact@v3
        with:
          name: artifact
          path: |
            CHANGELOG.md
  release:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Download the artifact
        uses: actions/download-artifact@v1
        with:
          name: artifact
          path: ./
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false
          body_path: CHANGELOG.md

Credits

This project is incubated by the shencangsheng/GitLab-Release-Workflow available in the GitHub project.

This project was inspired by the zitsen/release-workflow-demo available in the GitHub project.

License

A short snippet describing the license (MIT)

MIT © Cangsheng Shen