diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9eeb14b0..5acc94a2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,39 +1,15 @@ -name: Deploy +name: Deploy (Production) -on: - workflow_dispatch: - inputs: - hostname: - description: Hostname - type: string - required: true - default: antville.org +on: workflow_dispatch jobs: - stage: + deploy: runs-on: antville environment: - name: production - url: ${{ inputs.hostname }} + name: antville.org + url: https://antville.org steps: - - uses: actions/checkout@v4 - - - name: Build with Gradle - run: ./gradlew installDist - - - name: Copy build files to server - run: | - rsync ./build/install/helma/ ${{ inputs.hostname }}:./ \ - --verbose --archive --delete --compress \ - --filter '+ /bin' \ - --filter '+ /extras' \ - --filter '+ /launcher.jar' \ - --filter '- /lib/ext' \ - --filter '+ /lib' \ - --filter '+ /modules' \ - --filter '- /*' - - - name: Restart Helma - run: ssh ${{ inputs.hostname }} restart + - name: Copy files to production server + run: ssh staging-server deploy-helma diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml new file mode 100644 index 00000000..17e693d4 --- /dev/null +++ b/.github/workflows/stage.yml @@ -0,0 +1,32 @@ +name: Deploy (Staging) + +on: workflow_dispatch + +jobs: + stage: + runs-on: antville + + environment: + name: stage + url: ${{ vars.stage_url }} + + steps: + - uses: actions/checkout@v4 + + - name: Build with Gradle + run: ./gradlew installDist + + - name: Publish to staging server + run: | + rsync ./build/install/helma/ staging-server:./ \ + --verbose --archive --delete --compress \ + --filter '+ /bin' \ + --filter '+ /extras' \ + --filter '+ /launcher.jar' \ + --filter '- /lib/ext' \ + --filter '+ /lib' \ + --filter '+ /modules' \ + --filter '- /*' + + - name: Restart Helma + run: ssh staging-server restart diff --git a/.gitignore b/.gitignore index 7bf7bcbc..552a74e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ -# Generally ignore hidden files .* -# Manage some Codium configuration .vscode/* !.vscode !.vscode/extensions.json @@ -9,22 +7,22 @@ !.vscode/settings.json !.vscode/tasks.json -# Ignore files created during build or run +build + +/apps /bin /backups -build +/db /docs +/extras /lib /licenses /log - -# Ignore files managed in src/dist -/*.properties -/apps -/db -/extras -/launcher.jar /static -# Manage Gradle configuration +/*.properties !/gradle.properties + +/launcher.jar +/passwd +/start.* diff --git a/build.gradle b/build.gradle index 25eef9d1..63d5400e 100644 --- a/build.gradle +++ b/build.gradle @@ -147,11 +147,9 @@ installDist { dependsOn build } -def processSource = tasks.register('processSource', Sync) { +tasks.register('processSource', Sync) { def gitOutput = new ByteArrayOutputStream() - outputs.dir "${project.buildDir}/src" - exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = gitOutput @@ -166,11 +164,9 @@ def processSource = tasks.register('processSource', Sync) { .replaceAll('__builddate__', new Date().format("d MMM yyyy")) .replaceAll('__commithash__', gitOutput.toString().trim()) .replaceAll('__version__', version) - } into outputs.files.singleFile + } into "${project.buildDir}/src" } -tasks.compileJava.source = processSource.map { it.outputs.files } - tasks.register('update') { dependsOn installDist diff --git a/src/dist/extras/deploy.sh b/src/dist/extras/deploy.sh old mode 100755 new mode 100644 index 869cf945..6ebd6bf2 --- a/src/dist/extras/deploy.sh +++ b/src/dist/extras/deploy.sh @@ -3,11 +3,50 @@ # Use this script as forced command of an authorized SSH key: # command="/home/helma/extras/deploy.sh" ssh-ed25519 AAAAC3NzaC… +# Define HELMA_HOST and ANTVILLE_HOST in this file +# shellcheck source=/dev/null +. "$HOME"/deploy.env + case "$SSH_ORIGINAL_COMMAND" in ping) echo pong ;; + deploy-helma) + rsync ./ "$HELMA_HOST":./ \ + --archive --compress --delete --verbose \ + --filter '+ /bin' \ + --filter '+ /extras' \ + --filter '+ /launcher.jar' \ + --filter '- /lib/ext' \ + --filter '+ /lib' \ + --filter '+ /modules' \ + --filter '- /*' + printf 'Restarting Helma on HELMA_host… ' + ssh "$HELMA_HOST" sudo /bin/systemctl restart helma + ;; + + deploy-antville) + rsync ./apps/antville/ "$ANTVILLE_HOST":./apps/antville/ \ + --archive --compress --delete --verbose \ + --filter '+ /claustra' \ + --filter '+ /code' \ + --filter '+ /compat' \ + --filter '+ /i18n' \ + --filter '+ /lib' \ + --filter '- /*' + rsync ./apps/antville/static/helma/ "$ANTVILLE_HOST":./apps/antville/static/helma/ \ + --archive --compress --verbose \ + --filter '+ /fonts' \ + --filter '+ /formica.html' \ + --filter '+ /img' \ + --filter '+ /scripts' \ + --filter '+ /styles' \ + --filter '- /*' + printf 'Restarting Helma on ANTVILLE_host… ' + ssh "$ANTVILLE_HOST" sudo /bin/systemctl restart helma + ;; + restart) printf 'Restarting Helma… ' sudo /bin/systemctl restart helma