Files
sharedinbox/.forgejo/workflows/ci.yml
T

154 lines
5.6 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
check:
name: Full Project Check
runs-on: codeberg-small
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Install Dagger & Task
run: |
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin sh
curl -sL https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin
sudo apt-get update && sudo apt-get install -y stunnel4 netcat-openbsd
- name: Setup Dagger Remote Engine (via stunnel)
env:
DAGGER_STUNNEL_URL1: ${{ secrets.DAGGER_STUNNEL_URL1 }}
DAGGER_STUNNEL_URL2: ${{ secrets.DAGGER_STUNNEL_URL2 }}
DAGGER_CA_CERT: ${{ secrets.DAGGER_CA_CERT }}
DAGGER_CLIENT_CERT: ${{ secrets.DAGGER_CLIENT_CERT }}
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
run: scripts/setup_dagger_remote.sh
- name: Run Full Check Suite
run: dagger call --progress=plain -m ci check
build-linux:
name: Build Linux Release
runs-on: codeberg-small
needs: check
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Install Dagger & Task
run: |
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin sh
curl -sL https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin
sudo apt-get update && sudo apt-get install -y stunnel4 netcat-openbsd
- name: Setup Dagger Remote Engine (via stunnel)
env:
DAGGER_STUNNEL_URL1: ${{ secrets.DAGGER_STUNNEL_URL1 }}
DAGGER_STUNNEL_URL2: ${{ secrets.DAGGER_STUNNEL_URL2 }}
DAGGER_CA_CERT: ${{ secrets.DAGGER_CA_CERT }}
DAGGER_CLIENT_CERT: ${{ secrets.DAGGER_CLIENT_CERT }}
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
run: scripts/setup_dagger_remote.sh
- name: Build & Deploy Linux to server
continue-on-error: true
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_HOST: ${{ secrets.SSH_HOST }}
run: |
HASH=$(git rev-parse --short HEAD)
dagger call --progress=plain -m ci deploy-linux --ssh-key env:SSH_PRIVATE_KEY --ssh-user "$SSH_USER" --ssh-host "$SSH_HOST" --commit-hash "$HASH"
deploy-playstore:
name: Build & Deploy to Play Store
runs-on: codeberg-small
needs: check
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 50
- name: Install Dagger & Task
run: |
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin sh
curl -sL https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin
sudo apt-get update && sudo apt-get install -y stunnel4 netcat-openbsd
- name: Setup Dagger Remote Engine (via stunnel)
env:
DAGGER_STUNNEL_URL1: ${{ secrets.DAGGER_STUNNEL_URL1 }}
DAGGER_STUNNEL_URL2: ${{ secrets.DAGGER_STUNNEL_URL2 }}
DAGGER_CA_CERT: ${{ secrets.DAGGER_CA_CERT }}
DAGGER_CLIENT_CERT: ${{ secrets.DAGGER_CLIENT_CERT }}
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
run: scripts/setup_dagger_remote.sh
- name: Build & Deploy to Play Store
env:
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }}
run: |
dagger call --progress=plain -m ci publish-android --play-store-config env:PLAY_STORE_CONFIG_JSON
- name: Build & Deploy APK to server
continue-on-error: true
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_HOST: ${{ secrets.SSH_HOST }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
run: |
HASH=$(git rev-parse --short HEAD)
dagger call --progress=plain -m ci deploy-apk --ssh-key env:SSH_PRIVATE_KEY --ssh-user "$SSH_USER" --ssh-host "$SSH_HOST" --commit-hash "$HASH"
publish-website:
name: Publish Website Build History
runs-on: codeberg-small
needs: [build-linux, deploy-playstore]
if: |
always() &&
github.ref == 'refs/heads/main' &&
(needs.build-linux.result == 'success' || needs.deploy-playstore.result == 'success')
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install Dagger & Task
run: |
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin sh
curl -sL https://taskfile.dev/install.sh | sh -s -- -b /usr/local/bin
sudo apt-get update && sudo apt-get install -y stunnel4 netcat-openbsd
- name: Setup Dagger Remote Engine (via stunnel)
env:
DAGGER_STUNNEL_URL1: ${{ secrets.DAGGER_STUNNEL_URL1 }}
DAGGER_STUNNEL_URL2: ${{ secrets.DAGGER_STUNNEL_URL2 }}
DAGGER_CA_CERT: ${{ secrets.DAGGER_CA_CERT }}
DAGGER_CLIENT_CERT: ${{ secrets.DAGGER_CLIENT_CERT }}
DAGGER_CLIENT_KEY: ${{ secrets.DAGGER_CLIENT_KEY }}
run: scripts/setup_dagger_remote.sh
- name: Generate build history and deploy website
continue-on-error: true
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_HOST: ${{ secrets.SSH_HOST }}
run: |
dagger call --progress=plain -m ci publish-website --ssh-key env:SSH_PRIVATE_KEY --ssh-user "$SSH_USER" --ssh-host "$SSH_HOST"