Skip to content

Build and push final image #374

Build and push final image

Build and push final image #374

name: Build and push final image
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
start-runner:
runs-on: ubuntu-latest
steps:
- name: start runner
uses: gagoar/invoke-aws-lambda@master
with:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
FunctionName: StartCirohRunner
if: startsWith(github.event.pull_request.head.repo.full_name, 'CIROH-UA') ||
(startsWith(github.ref, 'refs/heads/main') && github.event_name != 'pull_request')
- name: wait runner up
shell: bash
run: |
sleep 300
if: startsWith(github.event.pull_request.head.repo.full_name, 'CIROH-UA') ||
(startsWith(github.ref, 'refs/heads/main') && github.event_name != 'pull_request')
init:
needs: start-runner
runs-on: ARM64
steps:
- name: clear docker cache
run: |
docker system prune -af
deps:
needs: init
uses: ./.github/workflows/docker_deps_image.yml
with:
runner_label: ARM64
secrets: inherit
troute:
needs: deps
uses: ./.github/workflows/docker_troute_image.yml
with:
runner_label: ARM64
secrets: inherit
ngen:
needs: troute
uses: ./.github/workflows/docker_ngen_image.yml
with:
runner_label: ARM64
secrets: inherit
final:
needs: ngen
runs-on: ARM64
steps:
- name: deploy
uses: actions/checkout@v2
- name: Build and test Docker image
uses: ./.github/action_templates/build-and-test
with:
docker-auth-token: ${{ secrets.DOCKER_AUTH_TOKEN }}
image-name: "ciroh-ngen-image"
dockerfile-name: "Dockerfile"
platform: ARM64
if: ${{ !startsWith(github.ref, 'refs/heads/main') }}
- name: Build and push Docker image
uses: ./.github/action_templates/build-and-push
with:
docker-auth-token: ${{ secrets.DOCKER_AUTH_TOKEN }}
image-name: "ciroh-ngen-image"
dockerfile-name: "Dockerfile"
platform: ARM64
if: startsWith(github.ref, 'refs/heads/main')
check_result:
needs: final
runs-on: ARM64
outputs:
output1: ${{ steps.step1.outputs.result }}
steps:
- id: step1
run: echo "result=success" >> "$GITHUB_OUTPUT"
slack:
runs-on: ARM64
if: startsWith(github.event.pull_request.head.repo.full_name, 'CIROH-UA') ||
(startsWith(github.ref, 'refs/heads/main') && github.event_name != 'pull_request')
needs: [deps, troute, ngen, final, check_result]
env:
OUTPUT: ${{needs.check_result.outputs.output1}}
steps:
- name: Set env JOBSTATUS
run: |
echo "$OUTPUT"
if [[ "success" = "$OUTPUT" ]]
then
echo "JOBSTATUS=success" >> "$GITHUB_ENV"
else
echo "JOBSTATUS=failure" >> "$GITHUB_ENV"
fi
- run: echo "$JOBSTATUS"
- name: deploy
uses: actions/checkout@v2
- name: Publish slack message
if: always()
uses: ./.github/action_templates/slack
with:
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
job-status: ${{ env.JOBSTATUS }}
pull_request_url: ${{ github.event.pull_request.html_url }}
head_commit_url: ${{ github.event.head_commit.url }}
stop-runner:
needs: slack
runs-on: ubuntu-latest
if: startsWith(github.event.pull_request.head.repo.full_name, 'CIROH-UA') ||
(startsWith(github.ref, 'refs/heads/main') && github.event_name != 'pull_request')
steps:
- name: stop runner
uses: gagoar/invoke-aws-lambda@master
with:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
FunctionName: StopCirohRunner