Skip to content

Commit a781b02

Browse files
committed
ci
1 parent 7e9e33d commit a781b02

2 files changed

Lines changed: 57 additions & 25 deletions

File tree

.github/workflows/build-frontend.yaml

Lines changed: 56 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,66 +2,98 @@ name: Build Frontend
22
on:
33
push:
44
branches: ["main"]
5+
tags: ["v*.*"]
56
paths:
67
- "apps/frontend/package.json"
7-
8+
- "apps/frontend/package-lock.json"
9+
- "apps/frontend/Dockerfile"
10+
- "apps/frontend/src/**"
11+
- "apps/frontend/public/**"
12+
- ".github/workflows/build-frontend.yml"
813
jobs:
914
check-version:
1015
runs-on: ubuntu-latest
1116
outputs:
17+
version: ${{ steps.check.outputs.version }}
1218
version_changed: ${{ steps.check.outputs.changed }}
1319
steps:
14-
- uses: actions/checkout@v3
20+
- uses: actions/checkout@v4
1521
with:
1622
fetch-depth: 2
17-
1823
- name: Check if version changed
1924
id: check
2025
run: |
21-
OLD_VERSION=$(git show HEAD^:apps/frontend/package.json | jq -r '.version')
22-
NEW_VERSION=$(jq -r '.version' apps/frontend/package.json)
26+
NEW_VERSION=$(node -p "JSON.parse(require('fs').readFileSync('apps/frontend/package.json', 'utf8')).version")
27+
echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
28+
if ! git rev-parse --verify HEAD^ >/dev/null 2>&1; then
29+
echo "changed=true" >> "$GITHUB_OUTPUT"
30+
echo "No previous commit found, treating version as changed: $NEW_VERSION"
31+
exit 0
32+
fi
33+
git show HEAD^:apps/frontend/package.json > /tmp/old-package.json
34+
OLD_VERSION=$(node -p "JSON.parse(require('fs').readFileSync('/tmp/old-package.json', 'utf8')).version")
2335
if [ "$OLD_VERSION" != "$NEW_VERSION" ]; then
24-
echo "changed=true" >> $GITHUB_OUTPUT
36+
echo "changed=true" >> "$GITHUB_OUTPUT"
2537
echo "Version changed: $OLD_VERSION -> $NEW_VERSION"
2638
else
27-
echo "changed=false" >> $GITHUB_OUTPUT
39+
echo "changed=false" >> "$GITHUB_OUTPUT"
2840
echo "Version unchanged: $NEW_VERSION"
2941
fi
30-
3142
amd64:
3243
needs: check-version
33-
if: needs.check-version.outputs.version_changed == 'true'
44+
if: needs.check-version.outputs.version_changed == 'true' || startsWith(github.ref, 'refs/tags/')
3445
runs-on: ubuntu-latest
3546
permissions:
3647
contents: read
3748
packages: write
3849
steps:
39-
- uses: actions/checkout@v3
50+
- uses: actions/checkout@v4
51+
- name: Connect to Tailscale
52+
uses: tailscale/github-action@v4
53+
with:
54+
oauth-client-id: ${{ secrets.TAILSCALE_CLIENT_ID }}
55+
oauth-secret: ${{ secrets.TAILSCALE_CLIENT_SECRET }}
56+
tags: tag:ci
57+
- name: Add registry host entry
58+
run: |
59+
echo "${{ secrets.TAILSCALE_SERVER_IP }} ${{ secrets.REGISTRY_HOST }}" | sudo tee -a /etc/hosts
60+
getent hosts "${{ secrets.REGISTRY_HOST }}"
61+
curl -fsS -k "https://${{ secrets.REGISTRY_HOST }}:${{ secrets.REGISTRY_PORT }}/v2/" || true
4062
- name: Login to registry
41-
uses: docker/login-action@v2
63+
uses: docker/login-action@v3
4264
with:
4365
registry: ${{ secrets.REGISTRY }}
4466
username: ${{ secrets.REGISTRY_USER }}
45-
password: ${{ secrets.REGISTRY_PASSWORD }}
46-
67+
password: ${{ secrets.REGISTRY_PASSWORD }}
68+
- name: Set up Docker Buildx
69+
uses: docker/setup-buildx-action@v3
70+
with:
71+
driver-opts: |
72+
network=host
73+
- name: Extract metadata for Docker
74+
id: meta
75+
uses: docker/metadata-action@v5
76+
with:
77+
images: ${{ secrets.REGISTRY }}/${{ secrets.FRONTEND_IMAGE_NAME }}
78+
tags: |
79+
type=raw,value=latest,enable={{is_default_branch}}
80+
type=raw,value=${{ needs.check-version.outputs.version }},enable=${{ needs.check-version.outputs.version_changed == 'true' }}
81+
type=ref,event=tag
82+
type=sha
4783
- name: Build image and push to registry
48-
uses: docker/build-push-action@v4
84+
uses: docker/build-push-action@v6
4985
with:
5086
context: .
5187
file: ./apps/frontend/Dockerfile
5288
platforms: linux/amd64
5389
build-args: |
54-
VITE_BASE=${{ vars.VITE_BASE || '/' }}
90+
VITE_BASE=${{ secrets.VITE_BASE }}
5591
VITE_MAPBOX_TOKEN=${{ secrets.VITE_MAPBOX_TOKEN }}
56-
VITE_SERVER_URL=${{ vars.VITE_SERVER_URL }}
92+
VITE_SERVER_URL=${{ secrets.VITE_SERVER_URL }}
5793
VITE_SITE_URL=${{ secrets.VITE_SITE_URL }}
5894
push: true
59-
tags: ${{ secrets.REGISTRY }}/${{ secrets.FRONTEND_IMAGE_NAME }}:latest
60-
61-
- name: Trigger deploy via Dokploy API
95+
tags: ${{ steps.meta.outputs.tags }}
96+
labels: ${{ steps.meta.outputs.labels }}
97+
- name: Trigger deploy webhook
6298
run: |
63-
curl -X POST "${{ secrets.DOKPLOY_API_URL }}/api/application.deploy" \
64-
-H "accept: application/json" \
65-
-H "Content-Type: application/json" \
66-
-H "x-api-key: ${{ secrets.DOKPLOY_API_KEY }}" \
67-
-d "{\"applicationId\":\"${{ secrets.DOKPLOY_FRONTEND_APP_ID }}\"}"
99+
curl -fsS -X POST "${{ secrets.DEPLOY_WEBHOOK_BASE_URL }}/hooks/emergenciascr-frontend"

apps/frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "frontend",
3-
"version": "0.1.24",
3+
"version": "0.1.25",
44
"private": true,
55
"type": "module",
66
"scripts": {

0 commit comments

Comments
 (0)