1- name : Deploy to GitHub Pages
1+ name : Deploy CD
22
33on :
4- # Run on push events on primary branches
4+
5+ # Run on push on production branches
56 push :
67 branches :
8+ # Production
79 - main
810 paths :
11+ # CI files
12+ - ' .github/workflows/deploy.yml'
13+ - ' docker-compose.yml'
14+ - ' docker-compose.cicd.yml'
15+ - ' .env'
16+ # Application files
917 - ' app/**'
1018
1119 # Run on manual triggers
1220 workflow_dispatch :
1321
14- # Set GITHUB_TOKEN permissions
22+ # Set GITHUB_TOKEN permissions for the workflow
1523permissions :
1624 contents : read
1725
18- # Allow one concurrent deployment
26+ # Set workflow concurrency rules
1927concurrency :
2028 group : ${{ github.workflow }}
2129 cancel-in-progress : true
@@ -24,52 +32,76 @@ jobs:
2432
2533 # Build job
2634 build :
27- name : Build Astro site artifact
35+ name : Build
2836 runs-on : ubuntu-latest
29- timeout-minutes : 10
37+ timeout-minutes : 15
3038
3139 steps :
32- - name : Checkout
33- uses : actions/checkout@v4
34-
35- - name : Build for production
36- run : docker compose -f docker-compose.yml -f docker-compose.cicd.yml build
37- env :
38- GITHUB_REPOSITORY_URL : https://github.com/${{ github.repository }}
39- GITHUB_SHA : ${{ github.sha }}
40-
41- - name : Copy application files
42- run : docker compose -f docker-compose.yml -f docker-compose.cicd.yml run --rm app
4340
44- - name : Chown dist folder to $USER
45- run : sudo chown -R $USER:$USER ./app/dist
46-
47- - name : Upload artifact
48- uses : actions/upload-pages-artifact@v3
49- with :
50- path : ./app/dist
51-
52- # Deployment job
41+ # Steps dependencies
42+
43+ - name : Checkout
44+ uses : actions/checkout@v4
45+
46+ # Execution steps
47+
48+ - name : Pull dependencies
49+ run : |
50+ # docker compose pull --ignore-buildable
51+ docker compose \
52+ -f ./docker-compose.yml -f ./docker-compose.cicd.yml \
53+ --env-file .env \
54+ pull --ignore-buildable
55+
56+ - name : Build for production
57+ env :
58+ GITHUB_REPOSITORY_URL : https://github.com/${{ github.repository }}
59+ GITHUB_SHA : ${{ github.sha }}
60+ BUILD_CHECK : " false" # Skip type checks
61+ run : |
62+ # docker compose build
63+ export DOCKER_UID="$(id -u)"
64+ docker compose \
65+ -f ./docker-compose.yml -f ./docker-compose.cicd.yml \
66+ --env-file .env \
67+ build
68+
69+ - name : Copy application files
70+ run : |
71+ # docker compose up
72+ export DOCKER_UID="$(id -u)"
73+ docker compose \
74+ -f ./docker-compose.yml -f ./docker-compose.cicd.yml \
75+ --env-file .env \
76+ up
77+
78+ - name : Upload GitHub Pages artifact
79+ uses : actions/upload-pages-artifact@v3
80+ with :
81+ path : ./app/dist
82+
83+ # Deploy job
5384 deploy :
54- name : Deploy to GitHub Pages
85+ name : Deploy
5586 runs-on : ubuntu-latest
56- timeout-minutes : 5
87+ timeout-minutes : 10
5788
58- # Dependencies
89+ # Job dependencies
5990 needs :
6091 - build
6192
62- # Sets permissions for the GITHUB_TOKEN
93+ # Set GITHUB_TOKEN permissions for the job
6394 permissions :
6495 pages : write
6596 id-token : write
6697
67- # Sets the GitHub Pages deployment
98+ # Set deployment environment
6899 environment :
69100 name : production
70101 url : ${{ steps.deployment.outputs.page_url }}
71102
72103 steps :
73- - name : Deploy to GitHub Pages
74- id : deployment
75- uses : actions/deploy-pages@v4
104+
105+ - name : Deploy to GitHub Pages
106+ id : deployment
107+ uses : actions/deploy-pages@v4
0 commit comments