Skip to content

change workflow in pre-db-migrate (replace needs from run-tools to bu… #82

change workflow in pre-db-migrate (replace needs from run-tools to bu…

change workflow in pre-db-migrate (replace needs from run-tools to bu… #82

Workflow file for this run

name: Build and deploy JWizard API
on:
push:
branches:
- master
paths:
- ".github/workflows/**"
- "dokka/**"
- "gradle/libs.versions.toml"
- "jwa-*/**"
- "build.gradle"
- "gradle.properties"
- "settings.gradle"
workflow_dispatch:
env:
PM2_API_NAME: JWizardApi
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
SSH_PORT: ${{ secrets.SSH_PORT }}
SSH_KEY: ${{ secrets.SSH_KEY }}
SSH_PASSPHRASE: ${{ secrets.SSH_PASSPHRASE }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Determinate build version
id: version
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Clean build directory
run: ./gradlew clean --no-daemon
- name: Package to JAR
run: ./gradlew shadowJar --no-daemon
env:
JWIZARD_VERSION: ${{ steps.version.outputs.sha_short }}
JWIZARD_MAVEN_NAME: ${{ secrets.MVN_LIB_READER_NAME }}
JWIZARD_MAVEN_SECRET: ${{ secrets.MVN_LIB_READER_SECRET }}
- name: Upload generated JAR artifact
uses: actions/upload-artifact@v4
with:
name: output-jar
path: .bin/jwizard-api.jar
run-tools:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout tools repository
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/jwizard-tools
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python environment
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install requirements
run: pip install -r requirements.txt
- name: Grand permissions to run packages grabber
run: chmod +x exec/run-with-config
- name: Run cache version
run: exec/run-with-config cache_version \
"${{ secrets.CONFIG_FILE_CONTENT }}" \
--repo ${{ github.repository }}
- name: Run packages grabber
run: exec/run-with-config packages_grabber \
"${{ secrets.CONFIG_FILE_CONTENT }}" \
--repo ${{ github.repository }}
generate-docs:
runs-on: ubuntu-latest
needs: build
env:
SERVER_OUTPUT: "/var/www/jwizard-docs/jwa"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Determinate build version
id: version
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Generate KDoc documentation
run: ./gradlew dokkaHtmlMultiModule --no-daemon
env:
JWIZARD_VERSION: ${{ steps.version.outputs.sha_short }}
JWIZARD_MAVEN_NAME: ${{ secrets.MVN_LIB_READER_NAME }}
JWIZARD_MAVEN_SECRET: ${{ secrets.MVN_LIB_READER_SECRET }}
- name: Copy generated content on server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
port: ${{ secrets.SSH_PORT }}
key: ${{ secrets.SSH_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
source: docs/*
target: ${{ env.SERVER_OUTPUT }}
rm: true
strip_components: 1
pre-db-migrate:
runs-on: ubuntu-latest
needs: build
steps:
- name: Stop existing process
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USERNAME }}
port: ${{ env.SSH_PORT }}
key: ${{ env.SSH_KEY }}
passphrase: ${{ env.SSH_PASSPHRASE }}
script: ~/exec/process stop ${{ env.PM2_API_NAME }}
db-migrate:
runs-on: ubuntu-latest
needs: pre-db-migrate
steps:
- name: Checkout tools repository
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/jwizard-tools
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python environment
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install requirements
run: pip install -r requirements.txt
- name: Grand permissions to run packages grabber
run: chmod +x exec/run-with-config
- name: Run migrator
run: exec/run-with-config db_migrator \
"${{ secrets.CONFIG_FILE_CONTENT }}" \
--pipeline infra
deploy:
runs-on: ubuntu-latest
needs: db-migrate
env:
SERVER_OUTPUT: "/var/www/jwizard-api"
steps:
- name: Download generated JAR artifact
uses: actions/download-artifact@v4
with:
name: output-jar
- name: Move files to server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USERNAME }}
port: ${{ env.SSH_PORT }}
key: ${{ env.SSH_KEY }}
passphrase: ${{ env.SSH_PASSPHRASE }}
source: "jwizard-api.jar"
target: ${{ env.SERVER_OUTPUT }}
rm: true
- name: Re-create config file
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USERNAME }}
port: ${{ env.SSH_PORT }}
key: ${{ env.SSH_KEY }}
passphrase: ${{ env.SSH_PASSPHRASE }}
script: exec/make-conf ${{ env.SERVER_OUTPUT }} "${{ secrets.CONFIG_FILE_CONTENT }}"
- name: Start process
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ env.SSH_HOST }}
username: ${{ env.SSH_USERNAME }}
port: ${{ env.SSH_PORT }}
key: ${{ env.SSH_KEY }}
passphrase: ${{ env.SSH_PASSPHRASE }}
script: ~/exec/process start ${{ env.PM2_API_NAME }}