Build & Deploy #20
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 & 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 |