mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-26 07:59:37 -05:00
5a2809aca2
We only need new images for bootstrapper changes for each release. Between releases we can use debug images. For releases we have to build images manually anyway. Therefore, let's not build these images unnecessarily.
73 lines
3.0 KiB
YAML
73 lines
3.0 KiB
YAML
# We build the bootstrapper as part of each PR to see that the build still works. An image is only created once merged to main (see condition on call-coreos).
|
|
name: Build and Upload the bootstrapper
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
|
|
# Abort runs of *this* workflow, if a new commit with the same ref is pushed.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-bootstrapper:
|
|
name: "Build the bootstrapper"
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
|
|
outputs:
|
|
bootstrapper-name: ${{ steps.copy.outputs.bootstrapper-name }}
|
|
steps:
|
|
- name: Checkout
|
|
id: checkout
|
|
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@dc7b9719a96d48369863986a06765841d7ea23f6
|
|
|
|
- name: Install Dependencies
|
|
id: prepare
|
|
run: sudo apt-get update && sudo apt-get -y install awscli cmake make
|
|
|
|
- name: Build and tag the bootstrapper
|
|
id: build
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake ..
|
|
make bootstrapper
|
|
mv bootstrapper bootstrapper-$(sha512sum bootstrapper | cut -d " " -f 1)
|
|
|
|
- name: Copy bootstrapper to S3 if not exists
|
|
id: copy
|
|
# Only upload the bootstrapper if this action is triggered from main branch
|
|
if: ${{ github.ref == 'refs/heads/main' }}
|
|
run: >
|
|
aws s3api head-object --bucket ${{ secrets.PUBLIC_BUCKET_NAME }} --key bootstrapper/$(ls | grep "bootstrapper-")
|
|
|| (
|
|
echo "::set-output name=bootstrapper-name::$(ls | grep "bootstrapper-")"
|
|
&& aws s3 cp ${{ github.workspace }}/build/ s3://${{ secrets.PUBLIC_BUCKET_NAME }}/bootstrapper/ --exclude "*" --include "bootstrapper-*" --include "constellation" --recursive --quiet)
|
|
shell: bash {0}
|
|
working-directory: ${{ github.workspace }}/build/
|
|
# This is disabled for now as release images need to be built manually anyway.
|
|
# For cases where you need a new image because of bootstrapper changes, either trigger a manual build or use a debug image.
|
|
# call-coreos:
|
|
# needs: build-bootstrapper
|
|
# if: ${{ (github.ref == 'refs/heads/main') && startsWith(needs.build-bootstrapper.outputs.bootstrapper-name, 'bootstrapper-') }}
|
|
# uses: ./.github/workflows/build-coreos.yml
|
|
# with:
|
|
# bootstrapper-name: ${{ needs.build-bootstrapper.outputs.bootstrapper-name }}
|
|
# secrets:
|
|
# CI_GITHUB_REPOSITORY: ${{ secrets.CI_GITHUB_REPOSITORY }}
|
|
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
|
|
# BUCKET_NAME: ${{ secrets.BUCKET_NAME }}
|
|
# PUBLIC_BUCKET_NAME: ${{ secrets.PUBLIC_BUCKET_NAME }}
|
|
# AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
|