diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a0087df --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,124 @@ +name: build + +on: + push: + paths-ignore: + - '**/*.md' + workflow_dispatch: + schedule: + # Once in week 3:33 on Sunday (0 and 7 are Sunday) + - cron: '33 3 * * 0' + +# This allows a subsequently queued workflow run to interrupt previous runs +concurrency: + group: pep-build-${{ github.event.pull_request.head.label || github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + pep-build: + runs-on: ubuntu-latest + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + steps: + - uses: actions/checkout@v4 + - name: Install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + dver=$(docker-compose version) + echo "$dver" + echo "$dver" >> $GITHUB_STEP_SUMMARY + - name: Configure fcu + run: | + mkdir fcu_config + cd fcu_config + echo "${{ secrets.FCU_KEYS_TAR_GZ_B64 }}" > fcu_keys.tar.gz.b64 + base64 -d fcu_keys.tar.gz.b64 > fcu_keys.tar.gz + tar -xzf fcu_keys.tar.gz + - name: Download the factory_configurator_utility.zip (as the repo does not have it) + run: | + cd fcu_config + mkdir config + cp fcu.yml config/fcu.yml + curl -X GET \ + https://api.us-east-1.mbedcloud.com/downloads/fcu/factory_configurator_utility.zip \ + -H "Authorization: Bearer ${{ secrets.EDGE_EXAMPLES_API_KEY }}" \ + -o factory_configurator_utility.zip + + - name: Build + run: docker-compose build --build-arg fcu_config=fcu_config + - name: Start the docker + run: | + docker-compose up & + - name: Check the processes + run: | + retries=30 + max_attempts=6 # 60 seconds + remaining_checks=${max_attempts} + attempt=1 + + while [[ "${attempt}" -le "${max_attempts}" ]]; do + procs=$(docker-compose ps --services) + if [[ -n "${procs}" ]]; then + echo "docker-compose up is running with $procs..." + break + fi + if [[ "${attempt}" -eq "${max_attempts}" ]]; then + echo "FAIL: docker-compose up not getting started..." + return 1 + fi + attempt=$((attempt + 1)) + sleep 10 + done + + while [ $retries -gt 0 ]; do + procs=$(docker-compose ps --services |grep mongo) + if [ -z "$procs" ]; then + echo "Waiting for docker container to start..." + sleep 10 + retries=$((retries-1)) + else + break + fi + done + procs=$(docker-compose ps) + echo "# docker-compose ps:" + echo "$procs" + # Check we find mongo in $procs + mongo=$(echo "$procs" | grep mongo) + if [[ -z "$mongo" ]]; then + echo "Failed to start mongoDB" + exit 1 + fi + state=$(echo "$mongo" | awk '{print $5}') + echo "mongoDB state: $state" + if [[ "$state" != "Up"* ]]; then + echo "Failed to get mongoDB container up." + exit 1 + fi + api=$(echo "$procs" | grep api-server) + if [[ -z "$api" ]]; then + echo "Failed to start api-server" + exit 1 + fi + state=$(echo "$api" | awk '{print $5}') + echo "api-server state: $state" + if [[ "$state" != "Up"* ]]; then + echo "Failed to get api-server container up." + exit 1 + fi + + - name: Get the logs + run: | + logs=$(docker-compose logs) + echo "# docker-compose logs:" >> $GITHUB_STEP_SUMMARY + echo $logs >> $GITHUB_STEP_SUMMARY +# MongoDB only creates the database once you inject some data to it +# - name: Inspect mongo db volume +# run: | +# mong=$(docker volume inspect pelion-edge-provisioner_mongo_data) +# echo "# docker volume inspect pelion-edge-provisioner_mongo_data:" >> $GITHUB_STEP_SUMMARY +# echo $mong >> $GITHUB_STEP_SUMMARY + - name: Stop the container + run: docker-compose down +