name: Build and Deploy on: # Nightly build schedule: - cron: "0 9 * * *" # Manual nightly & release workflow_dispatch: inputs: mode: description: What type of build to trigger. Release builds MUST be ran from the `master` branch. required: true default: nightly type: choice options: - nightly - release macos: description: Build macOS required: true type: boolean default: true windows_32bit: description: Build Windows 32-bit required: true type: boolean default: true windows_64bit: description: Build Windows 64-bit required: true type: boolean default: true linux: description: Build Linux required: true type: boolean default: true deploy: description: Deploy artifacts required: true type: boolean default: true concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: # XXX: UPDATE THIS BEFORE WHEN GOING LIVE R2_BUCKET: "packages-element-io-test" jobs: prepare: uses: ./.github/workflows/build_prepare.yaml with: config: element.io/${{ inputs.mode || 'nightly' }} version: ${{ inputs.mode == 'release' && '' || 'develop' }} calculate-nightly-versions: ${{ inputs.mode != 'release' }} secrets: CF_R2_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} CF_R2_TOKEN: ${{ secrets.CF_R2_TOKEN }} CF_R2_S3_API: ${{ secrets.CF_R2_S3_API }} windows_32bit: if: github.event_name != 'workflow_dispatch' || inputs.windows_32bit needs: prepare name: Windows 32-bit uses: ./.github/workflows/build_windows.yaml secrets: inherit with: sign: true deploy-mode: true arch: x86 version: ${{ needs.prepare.outputs.win32-x86-version }} windows_64bit: if: github.event_name != 'workflow_dispatch' || inputs.windows_64bit needs: prepare name: Windows 64-bit uses: ./.github/workflows/build_windows.yaml secrets: inherit with: sign: true deploy-mode: true arch: x64 version: ${{ needs.prepare.outputs.win32-x64-version }} macos: if: github.event_name != 'workflow_dispatch' || inputs.macos needs: prepare name: macOS uses: ./.github/workflows/build_macos.yaml secrets: inherit with: sign: true deploy-mode: true # XXX: UPDATE THIS BEFORE WHEN GOING LIVE base-url: https://packages-element-io-test.element.io/${{ inputs.mode == 'release' && 'desktop' || 'nightly' }} version: ${{ needs.prepare.outputs.macos-version }} linux: if: github.event_name != 'workflow_dispatch' || inputs.linux needs: prepare name: Linux uses: ./.github/workflows/build_linux.yaml secrets: inherit with: sqlcipher: system deploy-mode: true version: ${{ needs.prepare.outputs.linux-version }} deploy: needs: - macos - linux - windows_32bit - windows_64bit runs-on: ubuntu-latest name: Deploy if: always() && (github.event != 'workflow_dispatch' || inputs.deploy) environment: packages.element.io steps: - name: Download artifacts uses: actions/download-artifact@v3 with: name: packages.element.io path: packages.element.io - name: Deploy debian repo if: github.event_name != 'workflow_dispatch' || inputs.linux run: | mv packages.element.io/debian . aws s3 cp --recursive debian/ s3://$R2_BUCKET/debian --endpoint-url $R2_URL --region auto env: AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }} R2_URL: ${{ secrets.CF_R2_S3_API }} - name: Deploy artifacts if: github.event_name != 'workflow_dispatch' || inputs.macos || inputs.windows_32bit || inputs.windows_64bit run: | aws s3 cp --recursive packages.element.io/ s3://$R2_BUCKET/$DEPLOYMENT_DIR --endpoint-url $R2_URL --region auto env: AWS_ACCESS_KEY_ID: ${{ secrets.CF_R2_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_R2_TOKEN }} R2_URL: ${{ secrets.CF_R2_S3_API }} DEPLOYMENT_DIR: ${{ inputs.mode == 'release' && 'desktop' || 'nightly' }}