-
Notifications
You must be signed in to change notification settings - Fork 0
126 lines (107 loc) · 3.9 KB
/
build-and-publish.yml
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
name: .NET Core Build and Release
on:
push:
workflow_dispatch:
jobs:
build_and_test:
runs-on: ubuntu-latest
permissions:
packages: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- uses: actions/setup-node@v4
with:
node-version: "20"
#region FFMpeg
- name: Restore FFmpeg cache
id: cache-ffmpeg
uses: actions/cache@v4
with:
path: ffmpeg/
key: ffmpeg-${{ runner.os }}
- name: Download FFmpeg
if: steps.cache-ffmpeg.outputs.cache-hit != 'true'
run: |
mkdir -p ffmpeg
wget -O ffmpeg.tar.xz https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xvf ffmpeg.tar.xz -C ffmpeg --strip-components=1
- name: Add FFmpeg into path
run: |
echo "$(pwd)/ffmpeg" >> $GITHUB_PATH
#endregion
- name: Compile LESS files
run: |
npm install -g less
lessc SwipetorApp/wwwroot/public/styles/public.less SwipetorApp/wwwroot/public/styles/public.css
lessc SwipetorApp/wwwroot/admin/styles/_main.less SwipetorApp/wwwroot/admin/styles/_main.css
rm -f SwipetorApp/wwwroot/public/styles/*.less
rm -f SwipetorApp/wwwroot/admin/styles/*.less
- name: Restore NuGet cache
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.fsproj', '**/*.vbproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore, Build and Test
run: |
dotnet nuget add source --username atas --password ${{ secrets.GITHUB_TOKEN }} --store-password-in-clear-text --name github "https://nuget.pkg.github.com/atas/index.json"
dotnet restore
dotnet build --no-restore
ffmpeg -version
dotnet test --no-build --verbosity normal --filter FullyQualifiedName~Tests
- name: Publish Application
run: dotnet publish --configuration Release --output ./publish
- name: Archive Published App
run: tar -czf swpserver.tar.gz -C ./publish .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: swpserver
path: swpserver.tar.gz
release:
runs-on: ubuntu-latest
permissions:
contents: write
needs: build_and_test
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: swpserver
- id: bump-release-calver
uses: atas/bump-release-calver-action@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Create GitHub Release
run: |
next_version="${{ steps.bump-release-calver.outputs.next_version }}"
echo "Next release version: $next_version"
mv swpserver.tar.gz swpserver-$next_version.tar.gz
COMMIT_MSG=$(git log -1 --pretty=%B)
gh release create "v$next_version" swpserver-$next_version.tar.gz\
--title "v$next_version" \
--notes "$COMMIT_MSG"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
deploy:
runs-on: ubuntu-latest
needs: release
if: github.ref == 'refs/heads/main'
environment: demo
steps:
- name: Set up SSH
run: |
mkdir -p ~/.ssh/
ls -lha ~/.ssh
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Trigger pull-deploy
run: |
ssh -p${{ secrets.SSH_PORT }} ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "/opt/swipetor/bin/pull-deploy/run.sh"