-
Notifications
You must be signed in to change notification settings - Fork 393
70 lines (62 loc) · 2.5 KB
/
Copy pathdeploy_gateway_ocelot.yml
File metadata and controls
70 lines (62 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -e ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore \
# -e SKYWALKING__SERVICENAME=${IMAGE_NAME} \
name: deploy_gateway_ocelot
on: workflow_dispatch
env:
REPOSITORY: "adnc"
RUNNER_DEMO_SOURCE_ROOT: /home/runner/work/adnc/adnc/src/Gateways/Ocelot
PUBLISH_PATH: bin/Release/net8.0/linux-x64/publish
IMAGE_NAME: adnc-gateway-ocelot
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Publish Solution
run: dotnet publish ${RUNNER_DEMO_SOURCE_ROOT}/Adnc.Ocelot.sln --configuration Release --runtime linux-x64 --self-contained false
- name: Build && Push images
run: |
cd ${RUNNER_DEMO_SOURCE_ROOT}/${PUBLISH_PATH}
touch Dockerfile
echo '' > Dockerfile
echo "FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base" >> Dockerfile
echo "WORKDIR /app" >> Dockerfile
echo "COPY . /app" >> Dockerfile
echo "ENTRYPOINT [ \"dotnet\",\"Adnc.Gateway.Ocelot.dll\" ]" >> Dockerfile
echo "build image"
docker build . --file Dockerfile --tag $IMAGE_NAME
echo "Login to registry"
echo "${{ secrets.DOCKER_API_KEY }}" | docker login -u ${REPOSITORY} --password-stdin
IMAGE_ID=${REPOSITORY}/${IMAGE_NAME}
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
VERSION=$(date +%s)
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
docker tag $IMAGE_NAME $IMAGE_ID:latest
docker push $IMAGE_ID:$VERSION
docker push $IMAGE_ID:latest
- name: Deploy Gateway Ocelot
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USERNAME }}
password: ${{ secrets.DEPLOY_PASSWORD }}
port: ${{ secrets.DEPLOY_PORT }}
script: |
REPOSITORY="adnc"
IMAGE_NAME="${REPOSITORY}-gateway-ocelot"
IMAGE_ID="${REPOSITORY}/${IMAGE_NAME}"
docker stop $(docker ps -a | grep "${IMAGE_ID}" | awk '{print $1 }')
docker rm $(docker ps -a | grep "${IMAGE_ID}" | awk '{print $1 }')
docker rmi $(docker images | grep "${IMAGE_ID}" | awk '{print $3}')
docker pull $IMAGE_ID
docker run \
-d \
--name=${IMAGE_NAME}-${RANDOM} \
-p 5000:80 \
-e ASPNETCORE_ENVIRONMENT=Staging \
-e TZ=Asia/Shanghai \
$IMAGE_ID