change workflow in pre-db-migrate (replace needs from run-tools to bu… #82
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |