74 lines
1.9 KiB
YAML
74 lines
1.9 KiB
YAML
---
|
|
on:
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: 'self-hosted'
|
|
steps:
|
|
- uses: 'actions/checkout@v4'
|
|
- uses: 'actions/setup-go@v5'
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
- name: 'fmt'
|
|
run: |
|
|
make tidy no-dirty
|
|
- name: 'check'
|
|
run: |
|
|
make check tidy no-dirty
|
|
build:
|
|
if: "${{ startsWith(github.ref, 'refs/tags/') }}"
|
|
needs:
|
|
- 'test'
|
|
runs-on: 'self-hosted'
|
|
steps:
|
|
- uses: 'actions/checkout@v4'
|
|
- uses: 'actions/setup-go@v5'
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
- name: 'build'
|
|
run: |
|
|
printf '%s' "$GIT_CRYPT_SECRET" | base64 -d > secret
|
|
git-crypt unlock secret
|
|
make build
|
|
env:
|
|
GIT_CRYPT_SECRET: '${{ secrets.GIT_CRYPT }}'
|
|
- uses: 'actions/upload-artifact@v3'
|
|
with:
|
|
if-no-files-found: 'error'
|
|
name: 'ods'
|
|
path: 'ods'
|
|
deploy:
|
|
needs:
|
|
- 'build'
|
|
runs-on: 'self-hosted'
|
|
steps:
|
|
- uses: 'actions/download-artifact@v3'
|
|
with:
|
|
name: 'ods'
|
|
- run: |
|
|
umask 077
|
|
printf '%s' "$SSH_PRIVATE_KEY" > private_key
|
|
SSHOPTS="-i private_key -o StrictHostKeyChecking=accept-new"
|
|
rsync -e "ssh ${SSHOPTS}" ods root@ods.adyxax.org:/usr/local/bin/
|
|
ssh ${SSHOPTS} root@ods.adyxax.org "systemctl restart ods"
|
|
env:
|
|
SSH_PRIVATE_KEY: '${{ secrets.SSH_PRIVATE_KEY }}'
|
|
publish:
|
|
needs:
|
|
- 'build'
|
|
runs-on: 'self-hosted'
|
|
steps:
|
|
- uses: 'actions/download-artifact@v3'
|
|
with:
|
|
name: 'ods'
|
|
- uses: 'actions/forgejo-release@v2'
|
|
with:
|
|
direction: 'upload'
|
|
tag: '${{ github.ref_name }}'
|
|
sha: '${{ github.sha }}'
|
|
release-dir: './'
|
|
token: '${{ env.GITHUB_TOKEN }}'
|
|
hide-archive-link: true
|
|
release-notes-assistant: true
|