192 lines
5.9 KiB
YAML
192 lines
5.9 KiB
YAML
name: Build & Deploy
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * 3,6" # Every Wednesday and Saturday at 00:00
|
|
workflow_dispatch:
|
|
inputs:
|
|
is_release_build:
|
|
description: 'Is this a release build?'
|
|
required: false
|
|
default: 'false'
|
|
|
|
env:
|
|
artifact: 1
|
|
|
|
jobs:
|
|
prepare_build:
|
|
name: Prepare Build
|
|
runs-on: ubuntu-22.04
|
|
outputs:
|
|
ci_tag: ${{ steps.set_vars.outputs.ci_tag }}
|
|
tag_created: ${{ steps.set_vars.outputs.tag_created }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set the tag and version
|
|
id: tag_set
|
|
run: |
|
|
ci/actions/generate_next_git_tag.sh -c
|
|
env:
|
|
GITHUB_ACTOR: ${{ github.actor }}
|
|
IS_RELEASE_BUILD: ${{ github.event.inputs.is_release_build || 'false' }}
|
|
|
|
- name: Set output
|
|
id: set_vars
|
|
run: |
|
|
echo "ci_tag=$CI_TAG" >> $GITHUB_OUTPUT
|
|
echo "tag_created=$TAG_CREATED" >> $GITHUB_OUTPUT
|
|
|
|
osx_job:
|
|
name: macOS [${{ matrix.network }}]
|
|
needs: prepare_build
|
|
if: ${{ needs.prepare_build.outputs.tag_created == 'true' }}
|
|
runs-on: macOS-14
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
network: ["TEST", "BETA", "LIVE"]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: "recursive"
|
|
ref: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
repository: ${{ github.repository }}
|
|
|
|
- name: Prepare
|
|
run: ci/prepare/macos/prepare.sh
|
|
|
|
- name: Build Artifact
|
|
run: ci/build-deploy.sh "/tmp/qt/lib/cmake/Qt5";
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
CI_TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
|
|
- name: Deploy Artifact
|
|
run: ci/actions/deploy.sh
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
S3_BUCKET_NAME: ${{ vars.S3_BUCKET_NAME }}
|
|
S3_BUILD_DIRECTORY: ${{ vars.S3_BUILD_DIRECTORY }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: us-east-2
|
|
|
|
linux_job:
|
|
name: Linux [${{ matrix.network }}]
|
|
needs: prepare_build
|
|
if: ${{ needs.prepare_build.outputs.tag_created == 'true' }}
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
network: ["TEST", "BETA", "LIVE"]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: "recursive"
|
|
ref: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
repository: ${{ github.repository }}
|
|
|
|
- name: Prepare
|
|
run: sudo -E ci/prepare/linux/prepare.sh
|
|
|
|
- name: Build Artifact
|
|
run: ci/build-deploy.sh "/usr/lib/x86_64-linux-gnu/cmake/Qt5"
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
CI_TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
|
|
- name: Deploy Artifact
|
|
run: ci/actions/deploy.sh
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
S3_BUCKET_NAME: ${{ vars.S3_BUCKET_NAME }}
|
|
S3_BUILD_DIRECTORY: ${{ vars.S3_BUILD_DIRECTORY }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: us-east-2
|
|
|
|
linux_docker_job:
|
|
name: Docker [${{ matrix.network }}]
|
|
needs: prepare_build
|
|
if: ${{ needs.prepare_build.outputs.tag_created == 'true' }}
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
network: ["TEST", "BETA", "LIVE"]
|
|
env:
|
|
CI_TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
DOCKER_REGISTRY: ${{ vars.DOCKER_REGISTRY }}
|
|
DOCKER_USER: ${{ vars.DOCKER_USER }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
IS_RELEASE_BUILD: ${{ github.event.inputs.is_release_build || 'false' }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: "recursive"
|
|
ref: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
repository: ${{ github.repository }}
|
|
|
|
- name: Build Docker
|
|
run: ci/actions/linux/docker-build.sh
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
|
|
- name: Deploy Docker (Docker Hub)
|
|
if: env.DOCKER_PASSWORD != ''
|
|
run: ci/actions/linux/docker-deploy.sh
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Deploy Docker (ghcr.io)
|
|
run: ci/actions/linux/ghcr-deploy.sh
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
DOCKER_REGISTRY: ghcr.io
|
|
DOCKER_USER: ${{ github.repository_owner }}
|
|
DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
windows_job:
|
|
name: Windows [${{ matrix.network }}]
|
|
needs: prepare_build
|
|
if: ${{ needs.prepare_build.outputs.tag_created == 'true' }}
|
|
runs-on: windows-latest
|
|
timeout-minutes: 90
|
|
strategy:
|
|
matrix:
|
|
network: ["TEST", "BETA", "LIVE"]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: "recursive"
|
|
ref: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
repository: ${{ github.repository }}
|
|
|
|
- name: Prepare
|
|
run: ci/prepare/windows/prepare.ps1
|
|
|
|
- name: Build Artifact
|
|
run: ci/actions/windows/build.ps1
|
|
env:
|
|
CSC_LINK: ${{ secrets.CSC_LINK }}
|
|
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
|
|
|
- name: Deploy Artifact
|
|
run: ci/actions/windows/deploy.ps1
|
|
env:
|
|
NETWORK: ${{ matrix.network }}
|
|
TAG: ${{ needs.prepare_build.outputs.ci_tag }}
|
|
S3_BUCKET_NAME: ${{ vars.S3_BUCKET_NAME }}
|
|
S3_BUILD_DIRECTORY: ${{ vars.S3_BUILD_DIRECTORY }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: us-east-2
|