Build & Deploy #6
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" | |
workflow_dispatch: | |
inputs: | |
is_release_build: | |
description: 'Is this a release build?' | |
required: false | |
default: 'false' | |
env: | |
artifact: 1 | |
jobs: | |
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: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
- 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: | |
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: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
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: | |
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: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
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_rpm_job: | |
needs: prepare_build | |
if: ${{ needs.prepare_build.outputs.tag_created == 'true' }} | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 90 | |
strategy: | |
matrix: | |
network: ["BETA", "LIVE"] #No path to build TEST exists ci/build-rhel.sh | |
steps: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
with: | |
submodules: "recursive" | |
ref: "develop" #build-rhel.sh needs develop branch and then sets the tag | |
repository: ${{ github.repository }} | |
- name: Build local/nano-env:rhel | |
run: ci/actions/linux/install_deps.sh | |
env: | |
COMPILER: rhel | |
DOCKER_REGISTRY: local | |
- name: RockyLinux 8 Base | |
run: ci/build-docker-image.sh docker/ci/Dockerfile-rhel local/nano-env:rhel | |
- name: Build Artifact | |
run: | | |
mkdir -p ${GITHUB_WORKSPACE}/artifacts | |
docker run -v ${GITHUB_WORKSPACE}:/workspace -v ${GITHUB_WORKSPACE}/artifacts:/root/rpmbuild \ | |
local/nano-env:rhel /bin/bash -c " \ | |
NETWORK=${{ matrix.network }} \ | |
TAG=${{ needs.prepare_build.outputs.ci_tag }} \ | |
REPO_TO_BUILD=${{ github.repository }} \ | |
RPM_RELEASE=1 \ | |
ci/build-rhel.sh" | |
- name: Deploy Artifacts | |
run: ci/actions/deploy.sh | |
env: | |
LINUX_RPM: 1 | |
NETWORK: ${{ matrix.network }} | |
# TAG: ${{ needs.prepare_build.outputs.ci_tag }} # (not used in the deploy script if LINUX_RPM==1 ) | |
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: | |
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: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
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 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: | |
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: | |
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0 | |
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 |