1515env :
1616 DOCKER_BUILDKIT : 1
1717 SERVICESTACK_LICENSE : ${{ secrets.SERVICESTACK_LICENSE }}
18+ APPSETTINGS_JSON : ${{ secrets.APPSETTINGS_JSON }}
1819 KAMAL_DEPLOY_IP : ${{ secrets.KAMAL_DEPLOY_IP }}
1920 KAMAL_DEPLOY_HOST : ${{ secrets.KAMAL_DEPLOY_HOST }}
20- POSTGRES_PASSWORD : ${{ secrets.POSTGRES_PASSWORD }}
2121 KAMAL_REGISTRY_USERNAME : ${{ github.actor }}
2222 KAMAL_REGISTRY_PASSWORD : ${{ secrets.GITHUB_TOKEN }}
23+ POSTGRES_PASSWORD : ${{ secrets.POSTGRES_PASSWORD }}
2324
2425jobs :
2526 release :
@@ -29,12 +30,18 @@ jobs:
2930 - name : Checkout code
3031 uses : actions/checkout@v5
3132
33+ - name : Encode APPSETTINGS_JSON for runtime
34+ if : env.APPSETTINGS_JSON != null
35+ run : |
36+ # Base64 encode to avoid shell/YAML quoting issues; keep as a single env var.
37+ b64=$(printf '%s' "$APPSETTINGS_JSON" | base64 -w0)
38+ echo "APPSETTINGS_JSON_BASE64=$b64" >> $GITHUB_ENV
39+
3240 - name : Set up environment variables
3341 run : |
34- echo "image_repository_name=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
35- echo "repository_name=$(echo ${{ github.repository }} | cut -d '/' -f 2)" >> $GITHUB_ENV
36- echo "repository_name_lower=$(echo ${{ github.repository }} | cut -d '/' -f 2 | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
37- echo "org_name=$(echo ${{ github.repository }} | cut -d '/' -f 1)" >> $GITHUB_ENV
42+ echo "IMAGE=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
43+ repo_name="$(echo ${{ github.repository }} | cut -d '/' -f 2)"
44+ echo "SERVICE=$(echo $repo_name | tr '[:upper:]' '[:lower:]' | tr '.' '-')" >> $GITHUB_ENV
3845 if find . -maxdepth 2 -type f -name "Configure.Db.Migrations.cs" | grep -q .; then
3946 echo "HAS_MIGRATIONS=true" >> $GITHUB_ENV
4047 else
@@ -74,25 +81,22 @@ jobs:
7481 - name : Ensure directories exist with correct permissions
7582 run : |
7683 echo "Creating directories with correct permissions"
77- kamal server exec "mkdir -p /opt/docker/${{ env.repository_name }}/App_Data /opt/docker/${{ env.repository_name }}/initdb.d /opt/docker/${{ env.repository_name }}/postgres "
84+ kamal server exec "mkdir -p /opt/docker/${{ env.SERVICE }}/App_Data /opt/docker/${{ env.SERVICE }}/initdb.d"
7885
7986 echo "Setting app file permissions"
80- kamal server exec "chown -R 1654:1654 /opt/docker/${{ env.repository_name }}/App_Data /opt/docker/${{ env.repository_name }}/initdb.d"
81-
82- echo "Setting postgres file permissions"
83- kamal server exec "chown -R 999:999 /opt/docker/${{ env.repository_name }}/postgres"
87+ kamal server exec "chown -R 1654:1654 /opt/docker/${{ env.SERVICE }}/App_Data /opt/docker/${{ env.SERVICE }}/initdb.d"
8488
8589 - name : Check if first run and execute kamal app boot if necessary
8690 run : |
87- FIRST_RUN_FILE="~/first-run/${{ env.repository_name }}"
91+ FIRST_RUN_FILE="~/first-run/${{ env.SERVICE }}"
8892 if ! kamal server exec -q "test -f $FIRST_RUN_FILE"; then
8993 kamal server exec -q "mkdir -p ~/first-run && touch $FIRST_RUN_FILE" || true
9094
9195 if [ -n "${{env.INIT_DB_SQL}}" ]; then
9296 echo "Initializing DB with INIT_DB_SQL secret..."
9397 # Save the SQL content to a temporary file
9498 echo "${{ env.INIT_DB_SQL }}" > init-db.sql
95- cat init-db.sql | kamal server exec -i "cat > /opt/docker/${{ env.repository_name }}/initdb.d/${{ env.repository_name }}.sql" && rm init-db.sql || true
99+ cat init-db.sql | kamal server exec -i "cat > /opt/docker/${{ env.SERVICE }}/initdb.d/${{ env.SERVICE }}.sql" && rm init-db.sql || true
96100 fi
97101 # Start all kamal accessories
98102 kamal accessory boot all || true
@@ -105,13 +109,13 @@ jobs:
105109
106110 - name : Verify file permissions before deploy
107111 run : |
108- kamal server exec --no-interactive "chown -R 1654:1654 /opt/docker/${{ env.repository_name }}/App_Data /opt/docker/${{ env.repository_name }}/initdb.d && chown -R 999:999 /opt/docker/${{ env.repository_name }}/postgres "
112+ kamal server exec --no-interactive "chown -R 1654:1654 /opt/docker/${{ env.SERVICE }}/App_Data /opt/docker/${{ env.SERVICE }}/initdb.d"
109113
110114 - name : Deploy with Kamal
111115 run : |
112116 kamal lock release -v
113117 kamal server exec --no-interactive 'echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin'
114- kamal server exec --no-interactive 'docker pull ghcr.io/ ${{ env.image_repository_name }}:latest'
118+ kamal server exec --no-interactive 'docker pull ${{ env.IMAGE }}:latest'
115119 kamal deploy -P --version latest
116120
117121 - name : Migration
0 commit comments