Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/6
This commit was merged in pull request #6.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
name: Deploy to IIS
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
LOCAL_PUBLISH: ${{ github.workspace }}/publish
|
||||
MOUNT_POINT: /mnt/iis-deploy
|
||||
SHARE: //10.0.0.148/wwwroot
|
||||
TARGET_SUBDIR: approval_route
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: '10.0.x'
|
||||
|
||||
- name: Restore
|
||||
run: dotnet restore backend/Tnsu.ApprovalRoute.sln
|
||||
|
||||
- name: Publish (local)
|
||||
run: dotnet publish backend/src/Tnsu.ApprovalRoute.Api/Tnsu.ApprovalRoute.Api.csproj -c Release -o "$LOCAL_PUBLISH"
|
||||
|
||||
- name: Install cifs-utils
|
||||
run: |
|
||||
if command -v mount.cifs >/dev/null 2>&1 && command -v rsync >/dev/null 2>&1; then
|
||||
echo "cifs-utils and rsync already installed, skipping apt-get"
|
||||
else
|
||||
sudo apt-get update && sudo apt-get install -y cifs-utils rsync
|
||||
fi
|
||||
|
||||
- name: Mount IIS share
|
||||
env:
|
||||
DEPLOY_CREDS_B64: ${{ secrets.DEPLOY_CREDS_B64 }}
|
||||
run: |
|
||||
echo "$DEPLOY_CREDS_B64" | base64 -d > /tmp/creds
|
||||
|
||||
chmod 600 /tmp/creds
|
||||
|
||||
echo "Credentials file created"
|
||||
|
||||
sudo mkdir -p "$MOUNT_POINT"
|
||||
|
||||
sudo mount -t cifs "$SHARE" "$MOUNT_POINT" \
|
||||
-o credentials=/tmp/creds,vers=3.0,sec=ntlmssp,uid=$(id -u),gid=$(id -g),file_mode=0777,dir_mode=0777
|
||||
|
||||
- name: Take site offline
|
||||
run: |
|
||||
sudo mkdir -p "$MOUNT_POINT/$TARGET_SUBDIR"
|
||||
echo "<h1>Deploying, please wait...</h1>" > "$MOUNT_POINT/$TARGET_SUBDIR/app_offline.htm"
|
||||
sleep 20
|
||||
|
||||
- name: Sync files to IIS
|
||||
run: |
|
||||
rsync -a --delete \
|
||||
--exclude 'app_offline.htm' \
|
||||
--exclude 'logs/' \
|
||||
--exclude 'inventory/' \
|
||||
"$LOCAL_PUBLISH/" "$MOUNT_POINT/$TARGET_SUBDIR/"
|
||||
|
||||
- name: Bring site online
|
||||
if: always()
|
||||
run: |
|
||||
rm -f "$MOUNT_POINT/$TARGET_SUBDIR/app_offline.htm" || true
|
||||
|
||||
- name: Unmount share
|
||||
if: always()
|
||||
run: |
|
||||
sudo umount "$MOUNT_POINT" || true
|
||||
|
||||
- name: Final check
|
||||
if: always()
|
||||
run: |
|
||||
echo "=== FINAL ==="
|
||||
exit 0
|
||||
Reference in New Issue
Block a user