Skip to content

Commit d4ce5bd

Browse files
authored
Update docker-ci.yml
1 parent 7148188 commit d4ce5bd

File tree

1 file changed

+78
-15
lines changed

1 file changed

+78
-15
lines changed

.github/workflows/docker-ci.yml

Lines changed: 78 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,88 @@
1-
name: Docker Image CI
1+
name: Docker CI + Deploy
22

33
on:
44
push:
5-
branches: [ "main" ]
5+
branches: ["main"]
66
pull_request:
7-
branches: [ "main" ]
7+
branches: ["main"]
88

99
jobs:
10-
1110
build:
12-
11+
name: Build & Push Image
1312
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v3
15+
16+
- name: Build the Docker image
17+
run: |
18+
docker build . \
19+
--file Dockerfile \
20+
--tag "git.local.skill17.com/${{ github.repository }}:latest"
1421
22+
- name: Docker login (registry)
23+
env:
24+
USER: ${{ secrets.USER }}
25+
PASS: ${{ secrets.PASS }}
26+
run: |
27+
docker login -u "$USER" -p "$PASS" git.local.skill17.com
28+
29+
- name: Push image
30+
run: |
31+
docker push "git.local.skill17.com/${{ github.repository }}:latest"
32+
33+
deploy:
34+
name: Deploy new version
35+
needs: build
36+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
37+
runs-on: self-hosted
1538
steps:
16-
- uses: actions/checkout@v3
17-
- name: Build the Docker image
18-
run: docker build . --file Dockerfile --tag git.local.skill17.com/${{ github.repository }}
19-
- name: docker login
20-
env:
21-
USER: ${{ secrets.USER }}
22-
PASS: ${{ secrets.PASS }}
23-
run: docker login -u $USER -p $PASS git.local.skill17.com
24-
- name: push to docker hub
25-
run: docker push git.local.skill17.com/${{ github.repository }}
39+
- name: Docker login (registry)
40+
env:
41+
USER: ${{ secrets.USER }}
42+
PASS: ${{ secrets.PASS }}
43+
run: |
44+
docker login -u "$USER" -p "$PASS" git.local.skill17.com
45+
46+
- name: Deploy new image
47+
shell: bash
48+
env:
49+
GITEA_USER: ${{ secrets.USER }}
50+
REPO: ${{ github.event.repository.name }}
51+
COMPOSE_ROOT: /srv
52+
COMPOSE_PROJECT: session
53+
run: |
54+
set -euo pipefail
55+
56+
USER="$GITEA_USER"
57+
REPO="$REPO"
58+
COMPOSE_ROOT="$COMPOSE_ROOT"
59+
60+
# Expected compose file name pattern:
61+
# /srv/<GITEA_USER>_<anything>_<REPO>.yaml
62+
mapfile -t CANDIDATES < <(
63+
find "$COMPOSE_ROOT" -maxdepth 1 -type f -name "${USER}_*.yaml" -print | sort
64+
)
65+
66+
if [ "${#CANDIDATES[@]}" -eq 0 ]; then
67+
echo "No compose file found matching: ${COMPOSE_ROOT}/${USER}_*_${REPO}.yaml"
68+
echo "Available yaml files:"
69+
ls -1 "$COMPOSE_ROOT"/*.yaml 2>/dev/null | sed -n '1,200p' || true
70+
exit 1
71+
fi
72+
73+
if [ "${#CANDIDATES[@]}" -gt 1 ]; then
74+
echo "Multiple compose files match (ambiguous):"
75+
printf ' - %s\n' "${CANDIDATES[@]}"
76+
exit 1
77+
fi
78+
79+
COMPOSE_FILE="${CANDIDATES[0]}"
80+
echo "Using compose file: $COMPOSE_FILE"
81+
82+
# Optional sanity check:
83+
# IMAGE="git.taitaja2026.nstrim.app/${REPO}:latest"
84+
# echo "Sanity check pull: $IMAGE"
85+
# docker pull "$IMAGE"
86+
87+
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" pull
88+
docker compose -p "$COMPOSE_PROJECT" -f "$COMPOSE_FILE" up -d --force-recreate

0 commit comments

Comments
 (0)