diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5acc94a2..9eeb14b0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,15 +1,39 @@ -name: Deploy (Production) +name: Deploy -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + hostname: + description: Hostname + type: string + required: true + default: antville.org jobs: - deploy: + stage: runs-on: antville environment: - name: antville.org - url: https://antville.org + name: production + url: ${{ inputs.hostname }} steps: - - name: Copy files to production server - run: ssh staging-server deploy-helma + - 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 diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml deleted file mode 100644 index 17e693d4..00000000 --- a/.github/workflows/stage.yml +++ /dev/null @@ -1,32 +0,0 @@ -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 552a74e2..7bf7bcbc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ +# Generally ignore hidden files .* +# Manage some Codium configuration .vscode/* !.vscode !.vscode/extensions.json @@ -7,22 +9,22 @@ !.vscode/settings.json !.vscode/tasks.json -build - -/apps +# Ignore files created during build or run /bin /backups -/db +build /docs -/extras /lib /licenses /log + +# Ignore files managed in src/dist +/*.properties +/apps +/db +/extras +/launcher.jar /static -/*.properties +# Manage Gradle configuration !/gradle.properties - -/launcher.jar -/passwd -/start.* diff --git a/build.gradle b/build.gradle index 63d5400e..25eef9d1 100644 --- a/build.gradle +++ b/build.gradle @@ -147,9 +147,11 @@ installDist { dependsOn build } -tasks.register('processSource', Sync) { +def processSource = tasks.register('processSource', Sync) { def gitOutput = new ByteArrayOutputStream() + outputs.dir "${project.buildDir}/src" + exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = gitOutput @@ -164,9 +166,11 @@ tasks.register('processSource', Sync) { .replaceAll('__builddate__', new Date().format("d MMM yyyy")) .replaceAll('__commithash__', gitOutput.toString().trim()) .replaceAll('__version__', version) - } into "${project.buildDir}/src" + } into outputs.files.singleFile } +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 100644 new mode 100755 index 6ebd6bf2..869cf945 --- a/src/dist/extras/deploy.sh +++ b/src/dist/extras/deploy.sh @@ -3,50 +3,11 @@ # 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