Compare commits
3 Commits
v0.0.0-202
...
main
Author | SHA1 | Date |
---|---|---|
徐晓伟 | da810b6307 | |
徐晓伟 | c81ef04d6f | |
徐晓伟 | 6d78de1aa0 |
|
@ -162,7 +162,14 @@ jobs:
|
|||
|
||||
- name: Release GitLab
|
||||
run: |
|
||||
./cicd-release-linux-amd64 pre-release gitlab --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitlab-repository=$GITHUB_REPOSITORY --gitlab-username=$GITHUB_ACTOR --gitlab-token=${{ secrets.PRIVATE_GITLAB_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --package-name=cicd-release --artifacts=cicd-release-windows-amd64.exe --artifacts=cicd-release-windows-arm64.exe --artifacts=cicd-release-linux-amd64 --artifacts=cicd-release-linux-arm64 --artifacts=cicd-release-darwin-amd64 --artifacts=cicd-release-darwin-arm64 --artifacts=cicd-release-loong64
|
||||
./cicd-release-linux-amd64 pre-release gitlab --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitlab-repository=$GITHUB_REPOSITORY --gitlab-username=$GITHUB_ACTOR --gitlab-token=${{ secrets.PRIVATE_GITLAB_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --package-name=cicd-release --artifacts=cicd-release-windows-amd64.exe --artifacts=cicd-release-windows-arm64.exe --artifacts=cicd-release-linux-amd64 --artifacts=cicd-release-linux-arm64 --artifacts=cicd-release-darwin-amd64 --artifacts=cicd-release-darwin-arm64 --artifacts=cicd-release-loong64 --gitlab-export-assets-file-name=gitlab-release-assets.json
|
||||
|
||||
- name: Upload Artifacts(gitlab-release-assets.json)
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: gitlab-release-assets
|
||||
path: |
|
||||
gitlab-release-assets.json
|
||||
|
||||
release-gitlink:
|
||||
needs: build
|
||||
|
@ -192,14 +199,52 @@ jobs:
|
|||
|
||||
- name: Release GitLink
|
||||
run: |
|
||||
./cicd-release-linux-amd64 pre-release gitlink --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitlink-repository=$GITHUB_REPOSITORY --gitlink-username=${{ secrets.PRIVATE_GITLINK_USERNAME }} --gitlink-token=${{ secrets.PRIVATE_GITLINK_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --artifacts=cicd-release-windows-amd64.exe --artifacts=cicd-release-windows-arm64.exe --artifacts=cicd-release-linux-amd64 --artifacts=cicd-release-linux-arm64 --artifacts=cicd-release-darwin-amd64 --artifacts=cicd-release-darwin-arm64 --artifacts=cicd-release-loong64 --gitlink-cookie=${{ secrets.PRIVATE_GITLINK_COOKIE }} --gitlink-export-assets-file-name=cicd-release-assets.json
|
||||
./cicd-release-linux-amd64 pre-release gitlink --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitlink-repository=$GITHUB_REPOSITORY --gitlink-username=${{ secrets.PRIVATE_GITLINK_USERNAME }} --gitlink-token=${{ secrets.PRIVATE_GITLINK_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --artifacts=cicd-release-windows-amd64.exe --artifacts=cicd-release-windows-arm64.exe --artifacts=cicd-release-linux-amd64 --artifacts=cicd-release-linux-arm64 --artifacts=cicd-release-darwin-amd64 --artifacts=cicd-release-darwin-arm64 --artifacts=cicd-release-loong64 --gitlink-cookie=${{ secrets.PRIVATE_GITLINK_COOKIE }} --gitlink-export-assets-file-name=gitlink-release-assets.json
|
||||
|
||||
- name: Upload Artifacts(cicd-release-assets.json)
|
||||
- name: Upload Artifacts(gitlink-release-assets.json)
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: cicd-release-assets
|
||||
name: gitlink-release-assets
|
||||
path: |
|
||||
cicd-release-assets.json
|
||||
gitlink-release-assets.json
|
||||
|
||||
release-framagit:
|
||||
needs:
|
||||
- build
|
||||
- release-gitlab
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# 获取所有的代码历史记录,包括分支和标签
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: cicd-release
|
||||
path: .
|
||||
|
||||
- name: ls -l
|
||||
run: ls -l
|
||||
|
||||
- name: chmod +x cicd-release-linux-amd64
|
||||
run: chmod +x cicd-release-linux-amd64
|
||||
|
||||
- name: ls -l
|
||||
run: ls -l
|
||||
|
||||
- name: Download Artifacts(gitlab-release-assets.json)
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: gitlab-release-assets
|
||||
path: .
|
||||
|
||||
- name: Release FramaGit
|
||||
run: |
|
||||
./cicd-release-linux-amd64 pre-release gitlab --gitlab-instance=https://framagit.org --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitlab-repository=$GITHUB_REPOSITORY --gitlab-username=xuxiaowei --gitlab-token=${{ secrets.PRIVATE_FRAMAGIT_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --gitlab-import-assets-file-name=gitlab-release-assets.json
|
||||
|
||||
release-gitee:
|
||||
needs:
|
||||
|
@ -229,12 +274,12 @@ jobs:
|
|||
- name: ls -l
|
||||
run: ls -l
|
||||
|
||||
- name: Download Artifacts(cicd-release-assets.json)
|
||||
- name: Download Artifacts(gitlink-release-assets.json)
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: cicd-release-assets
|
||||
name: gitlink-release-assets
|
||||
path: .
|
||||
|
||||
- name: Release Gitee
|
||||
run: |
|
||||
./cicd-release-linux-amd64 pre-release gitee --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitee-repository=$GITHUB_REPOSITORY --gitee-username=$GITHUB_ACTOR --gitee-token=${{ secrets.PRIVATE_GITEE_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --gitlink-export-assets-file-name=cicd-release-assets.json
|
||||
./cicd-release-linux-amd64 pre-release gitee --release-name=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --tag=v0.0.0-${{ needs.build.outputs.YEAR_MONTH_DAY_HOUR_MINUTE }} --auto-create-tag --gitee-repository=$GITHUB_REPOSITORY --gitee-username=$GITHUB_ACTOR --gitee-token=${{ secrets.PRIVATE_GITEE_TOKEN }} --release-body=${{ needs.build.outputs.RELEASE_BODY }} --gitlink-export-assets-file-name=gitlink-release-assets.json
|
||||
|
|
|
@ -244,6 +244,9 @@ OPTIONS:
|
|||
--gitlab-export-assets-file-name value Gitlab 导出资源文件名称。
|
||||
主要用于发布到 Gitee 时在版本发布中新增产物下载地址(Gitee 没有上传产物的 API)。
|
||||
导出格式为 map,键:代表文件名,值:代表下载链接
|
||||
--gitlab-import-assets-file-name value Gitlab 导入资源文件名称。
|
||||
主要用于发布到未启用 GitLab 软件包库时,发布中产物下载地址。
|
||||
导入格式为 map,键:代表文件名,值:代表下载链接
|
||||
--github-repository value Github 仓库。
|
||||
如:https://github.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为:xuxiaowei-com-cn/cicd-release [%GITHUB_REPOSITORY%]
|
||||
--github-username value Github 用户名 [%GITHUB_ACTOR%]
|
||||
|
@ -302,6 +305,9 @@ OPTIONS:
|
|||
--gitlab-export-assets-file-name value Gitlab 导出资源文件名称。
|
||||
主要用于发布到 Gitee 时在版本发布中新增产物下载地址(Gitee 没有上传产物的 API)。
|
||||
导出格式为 map,键:代表文件名,值:代表下载链接
|
||||
--gitlab-import-assets-file-name value Gitlab 导入资源文件名称。
|
||||
主要用于发布到未启用 GitLab 软件包库时,发布中产物下载地址。
|
||||
导入格式为 map,键:代表文件名,值:代表下载链接
|
||||
--github-repository value Github 仓库。
|
||||
如:https://github.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为:xuxiaowei-com-cn/cicd-release [%GITHUB_REPOSITORY%]
|
||||
--github-username value Github 用户名 [%GITHUB_ACTOR%]
|
||||
|
|
|
@ -48,6 +48,7 @@ func Gitlab(prerelease bool, context *cli.Context) error {
|
|||
var gitlabUsername = context.String(constant.GitlabUsername)
|
||||
var gitlabToken = context.String(constant.GitlabToken)
|
||||
var gitlabExportAssetsFileName = context.String(constant.GitlabExportAssetsFileName)
|
||||
var gitlabImportAssetsFileName = context.String(constant.GitlabImportAssetsFileName)
|
||||
|
||||
log.Printf("是否是预发布版本:%v", prerelease)
|
||||
log.Printf("发布到 GitLab,实例:%s,路径:%s", gitlabInstance, gitlabRepository)
|
||||
|
@ -95,7 +96,7 @@ func Gitlab(prerelease bool, context *cli.Context) error {
|
|||
|
||||
// 发布
|
||||
err = GitlabReleases(releaseName, releaseBody, tag, milestones,
|
||||
baseUrl, gitlabApi, gitlabRepositoryEscape, gitlabToken, genericPackages)
|
||||
baseUrl, gitlabApi, gitlabRepositoryEscape, gitlabToken, genericPackages, gitlabImportAssetsFileName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -219,7 +220,7 @@ func GitlabGetReleases(getReleasesUrl string, gitlabToken string) error {
|
|||
// 发布
|
||||
func GitlabReleases(releaseName string, releaseBody string, tag string, milestones []string,
|
||||
baseUrl *url.URL, gitlabApi string, gitlabRepositoryEscape string, gitlabToken string,
|
||||
genericPackages map[string]interface{}) error {
|
||||
genericPackages map[string]interface{}, gitlabImportAssetsFileName string) error {
|
||||
|
||||
data := Data{
|
||||
Name: releaseName,
|
||||
|
@ -238,6 +239,31 @@ func GitlabReleases(releaseName string, releaseBody string, tag string, mileston
|
|||
assets.Links = append(assets.Links, link)
|
||||
}
|
||||
}
|
||||
|
||||
readResult := make(map[string]interface{})
|
||||
|
||||
if gitlabImportAssetsFileName != "" {
|
||||
jsonData, err := os.ReadFile(gitlabImportAssetsFileName)
|
||||
if err != nil {
|
||||
log.Printf("ReadFile %s Error:\n%s", gitlabImportAssetsFileName, err)
|
||||
return err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(jsonData, &readResult)
|
||||
if err != nil {
|
||||
log.Printf("Unmarshal %s Error:\n%s", gitlabImportAssetsFileName, err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for key, value := range readResult {
|
||||
link := Link{
|
||||
Name: key,
|
||||
Url: value.(string),
|
||||
}
|
||||
assets.Links = append(assets.Links, link)
|
||||
}
|
||||
|
||||
data.Assets = assets
|
||||
|
||||
jsonData, err := json.Marshal(data)
|
||||
|
|
|
@ -23,6 +23,7 @@ const (
|
|||
GitlabApi = "gitlab-api" // Gitlab API
|
||||
GitlabRepository = "gitlab-repository" // Gitee 仓库,如:https://gitlab.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为:xuxiaowei-com-cn/cicd-release
|
||||
GitlabExportAssetsFileName = "gitlab-export-assets-file-name" // Gitlab 导出资源文件名称
|
||||
GitlabImportAssetsFileName = "gitlab-import-assets-file-name" // Gitlab 导入资源文件名称
|
||||
GitlinkUsername = "gitlink-username" // gitlink 用户名
|
||||
GitlinkToken = "gitlink-token" // gitlink Token
|
||||
GitlinkCookie = "gitlink-cookie" // gitlink Cookie
|
||||
|
|
|
@ -169,6 +169,13 @@ func GitlabExportAssetsNameFlag() cli.Flag {
|
|||
}
|
||||
}
|
||||
|
||||
func GitlabImportAssetsFileNameFlag() cli.Flag {
|
||||
return &cli.StringFlag{
|
||||
Name: constant.GitlabImportAssetsFileName,
|
||||
Usage: "Gitlab 导入资源文件名称。\n\t主要用于发布到未启用 GitLab 软件包库时,发布中产物下载地址。\n\t导入格式为 map,键:代表文件名,值:代表下载链接",
|
||||
}
|
||||
}
|
||||
|
||||
func GitlinkRepositoryFlag(required bool) cli.Flag {
|
||||
return &cli.StringFlag{
|
||||
Name: constant.GitlinkRepository,
|
||||
|
@ -247,6 +254,7 @@ func GitlabFlag() []cli.Flag {
|
|||
GitlabUsernameFlag(true),
|
||||
GitlabTokenFlag(true),
|
||||
GitlabExportAssetsNameFlag(),
|
||||
GitlabImportAssetsFileNameFlag(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -304,6 +312,7 @@ func CommonFlag() []cli.Flag {
|
|||
GitlabUsernameFlag(false),
|
||||
GitlabTokenFlag(false),
|
||||
GitlabExportAssetsNameFlag(),
|
||||
GitlabImportAssetsFileNameFlag(),
|
||||
|
||||
GithubRepositoryFlag(false),
|
||||
GithubUsernameFlag(false),
|
||||
|
|
Loading…
Reference in New Issue