mirror of
https://github.com/FastTunnel/FastTunnel.git
synced 2025-02-08 10:51:05 +08:00
124 lines
3.9 KiB
YAML
124 lines
3.9 KiB
YAML
name: Build
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- v2
|
||
|
||
env:
|
||
# 设置 docker 镜像名
|
||
IMAGE_NAME: fasttunnel-v2
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v1
|
||
- name: Setup .NET Core
|
||
uses: actions/setup-dotnet@v1
|
||
with:
|
||
dotnet-version: 7.0.*
|
||
include-prerelease: true
|
||
- name: Build with dotnet
|
||
run: chmod +x ./publish.sh
|
||
|
||
publish:
|
||
name: publish-core
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
|
||
- name: Setup dotnet
|
||
uses: actions/setup-dotnet@v1
|
||
with:
|
||
dotnet-version: 7.0.*
|
||
include-prerelease: true
|
||
# Publish
|
||
- name: publish on version change
|
||
id: publish_nuget
|
||
uses: SpringHgui/publish-nuget@1.0.1
|
||
with:
|
||
# Filepath of the project to be packaged, relative to root of repository
|
||
PROJECT_FILE_PATH: FastTunnel.Core/FastTunnel.Core.csproj
|
||
|
||
# NuGet package id, used for version detection & defaults to project name
|
||
# PACKAGE_NAME: Core
|
||
|
||
# Filepath with version info, relative to root of repository & defaults to PROJECT_FILE_PATH
|
||
# VERSION_FILE_PATH: Directory.Build.props
|
||
|
||
# Regex pattern to extract version info in a capturing group
|
||
# VERSION_REGEX: ^\s*<Version>(.*)<\/Version>\s*$
|
||
|
||
# Useful with external providers like Nerdbank.GitVersioning, ignores VERSION_FILE_PATH & VERSION_REGEX
|
||
# VERSION_STATIC: 1.0.0
|
||
|
||
# Flag to toggle git tagging, enabled by default
|
||
# TAG_COMMIT: true
|
||
|
||
# Format of the git tag, [*] gets replaced with actual version
|
||
# TAG_FORMAT: v*
|
||
|
||
# API key to authenticate with NuGet server
|
||
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
|
||
|
||
# NuGet server uri hosting the packages, defaults to https://api.nuget.org
|
||
# NUGET_SOURCE: https://api.nuget.org
|
||
|
||
# Flag to toggle pushing symbols along with nuget package to the server, disabled by default
|
||
# INCLUDE_SYMBOLS: false
|
||
|
||
api:
|
||
name: publish-api
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
|
||
- name: Setup dotnet
|
||
uses: actions/setup-dotnet@v1
|
||
with:
|
||
dotnet-version: 7.0.*
|
||
include-prerelease: true
|
||
|
||
# Publish
|
||
- name: publish on version change
|
||
id: publish_nuget
|
||
uses: SpringHgui/publish-nuget@1.0.1
|
||
with:
|
||
# Filepath of the project to be packaged, relative to root of repository
|
||
PROJECT_FILE_PATH: FastTunnel.Api/FastTunnel.Api.csproj
|
||
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
|
||
docker:
|
||
name: publish-docker
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v2
|
||
# 构建镜像,指定镜像名
|
||
- name: Build image
|
||
run: docker build . --file Dockerfile --tag $IMAGE_NAME
|
||
# 登录到 dockerhub,使用 GitHub secrets 传入账号密码,密码被加密存储在 GitHub 服务器,添加方法见下图。
|
||
- name: Log into registry
|
||
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u springhgui --password-stdin
|
||
|
||
- name: Push image
|
||
run: |
|
||
IMAGE_ID=springhgui/$IMAGE_NAME
|
||
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
|
||
VERSION=$(date "+%Y.%m.%d")
|
||
|
||
echo IMAGE_ID=$IMAGE_ID
|
||
echo VERSION=$VERSION
|
||
# 设置镜像 id 和版本号
|
||
echo [tag] $IMAGE_NAME $IMAGE_ID:$VERSION
|
||
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
|
||
# 进行 push
|
||
echo [push] $IMAGE_ID:$VERSION
|
||
docker push $IMAGE_ID:$VERSION
|
||
# 再上传一份覆盖latest
|
||
echo [tag] $IMAGE_ID:$VERSION $IMAGE_ID:latest
|
||
docker tag $IMAGE_ID:$VERSION $IMAGE_ID:latest
|
||
|
||
echo [push] $IMAGE_ID:latest
|
||
docker push $IMAGE_ID:latest
|
||
|