Skip to content

Build

Build #62

Workflow file for this run

name: Build
on:
push:
paths:
- '.github/workflows/build.yml'
schedule:
- cron: '0 0 * * *' # every day in 00:00
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
IMAGE_NAME: aws-kubectl
jobs:
build_and_push:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Create workdir
run: |
mkdir -p build/kubectl
mkdir -p build/awscli
- name: Install kubectl
working-directory: build/kubectl
run: |
LATEST_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/$LATEST_VERSION/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$LATEST_VERSION/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
echo "Create dir with bin version ./bin" && mkdir ./bin
sudo install -o root -g root -m 0755 ./kubectl ./bin/kubectl
- name: Get version kubectl
working-directory: build/kubectl/bin
id: kubectl
run: echo "version=$(./kubectl version --client -o json | jq '.clientVersion.gitVersion' | tr -d 'v"')" >> $GITHUB_OUTPUT
- name: Install awscli
working-directory: build/awscli
run: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscli.zip" && unzip awscli.zip
sudo ./aws/install --bin-dir ./bin --install-dir ./local --update
ls -la
- name: Get version awscli
working-directory: build/awscli
id: awscli
run: echo "version=$(aws --version | cut -d' ' -f1 | cut -d'/' -f2)" >> $GITHUB_OUTPUT
- name: Check kubectl and awscli version
run: |
echo "kubectl: '${{ steps.kubectl.outputs.version }}'"
echo "awscli: '${{ steps.awscli.outputs.version }}'"
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push Docker Image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64
file: Dockerfile
push: true
provenance: false
tags: |
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:${{ steps.awscli.outputs.version }}-${{ steps.kubectl.outputs.version }}
cache-from: type=gha
cache-to: type=gha,mode=max