eolas-api/.forgejo/workflows/deploy.yaml

103 lines
3.5 KiB
YAML
Raw Normal View History

2025-10-08 18:53:44 +01:00
# name: Deploy eolas-api
# on:
# push:
# branches: [main]
# jobs:
# deploy:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - run: |
# echo "${{ secrets.VPS_DEPLOY_USER_SSH_KEY }}" > /tmp/ssh_key
# chmod 600 /tmp/ssh_key
# ssh -i /tmp/ssh_key -o StrictHostKeyChecking=no ${{ vars.VPS_DEPLOY_USER }} "bash -c 'cd /var/www/eolas-api && rm -rf * .[^.]*'"
# scp -i /tmp/ssh_key -o StrictHostKeyChecking=no -r ./* ${{ vars.VPS_DEPLOY_USER }}:/var/www/eolas-api/
# rm /tmp/ssh_key
#
#
2025-10-08 19:10:05 +01:00
name: Deploy eolas-api
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
2025-10-08 18:53:44 +01:00
with:
fetch-depth: 0
2025-10-08 19:10:05 +01:00
- name: Determine version bump and update package.json
2025-10-08 18:53:44 +01:00
id: version
run: |
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Previous version: $latest_tag"
commit_msg=$(git log -1 --pretty=%B)
version=${latest_tag#v}
IFS='.' read -r major minor patch <<< "$version"
2025-10-08 19:10:05 +01:00
if echo "$commit_msg" | grep -qE "^major(\(.*\))?:|BREAKING CHANGE:"; then
2025-10-08 18:53:44 +01:00
major=$((major + 1))
minor=0
patch=0
elif echo "$commit_msg" | grep -qE "^feat(\(.*\))?:"; then
minor=$((minor + 1))
patch=0
elif echo "$commit_msg" | grep -qE "^fix(\(.*\))?:"; then
patch=$((patch + 1))
else
echo "No version bump needed"
echo "new_tag=" >> $GITHUB_OUTPUT
exit 0
fi
new_tag="v${major}.${minor}.${patch}"
new_version="${major}.${minor}.${patch}"
echo "New version: $new_tag"
echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
echo "new_version=$new_version" >> $GITHUB_OUTPUT
2025-10-08 19:10:05 +01:00
# Update package.json
sed -i "s/\"version\": \".*\"/\"version\": \"$new_version\"/" package.json
- name: Commit version change
2025-10-08 18:53:44 +01:00
if: steps.version.outputs.new_tag != ''
run: |
git config user.name "forgejo-actions[bot]"
git config user.email "forgejo-actions[bot]@noreply"
git add package.json
2025-10-08 19:10:05 +01:00
git commit --amend --no-edit
git push -f origin main
2025-10-08 18:53:44 +01:00
- name: Create and push tag
if: steps.version.outputs.new_tag != ''
run: |
git tag ${{ steps.version.outputs.new_tag }}
git push origin ${{ steps.version.outputs.new_tag }}
- name: Create Forgejo Release
if: steps.version.outputs.new_tag != ''
run: |
2025-10-08 19:10:05 +01:00
# Get the commit message for release body
commit_msg=$(git log -1 --pretty=%B | jq -Rs .)
2025-10-08 18:53:44 +01:00
curl -X POST \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"${{ steps.version.outputs.new_tag }}\",
\"name\": \"${{ steps.version.outputs.new_tag }}\",
2025-10-08 19:10:05 +01:00
\"body\": $commit_msg
2025-10-08 18:53:44 +01:00
}"
- run: |
echo "${{ secrets.VPS_DEPLOY_USER_SSH_KEY }}" > /tmp/ssh_key
chmod 600 /tmp/ssh_key
ssh -i /tmp/ssh_key -o StrictHostKeyChecking=no ${{ vars.VPS_DEPLOY_USER }} "bash -c 'cd /var/www/eolas-api && rm -rf * .[^.]*'"
2025-10-05 20:04:33 +01:00
scp -i /tmp/ssh_key -o StrictHostKeyChecking=no -r ./* ${{ vars.VPS_DEPLOY_USER }}:/var/www/eolas-api/
rm /tmp/ssh_key