91 lines
4.1 KiB
YAML
91 lines
4.1 KiB
YAML
name: Build and Publish Docker Image
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build-and-push:
|
|
name: Build and Push Docker Image
|
|
runs-on: my_custom_label
|
|
container: node:22
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Prepare Env for Docker
|
|
run: |
|
|
whoami
|
|
which docker || true
|
|
apt update
|
|
cat /etc/os-release
|
|
apt install -y ca-certificates curl gnupg
|
|
mkdir -p /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
|
focal stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
apt update
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
- name: Get Version from version.ini
|
|
id: get_version
|
|
run: |
|
|
# Extract version value from version.ini
|
|
VERSION=$(awk -F'=[ \t]*' '/^version[ \t]*=/ {gsub(/[ \t"'\''\r]/, "", $2); print $2}' version.ini)
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
|
|
- name: Build Dockerfile
|
|
run: |
|
|
export BUILDIMGTAG="`cat Dockerfile | tail -n1 | sed 's/^.*\///g'`"
|
|
docker build -t $BUILDIMGTAG:${{ env.VERSION }} .
|
|
docker images
|
|
|
|
- name: Tag and Push (Harbor)
|
|
run: |
|
|
export BUILDIMGTAG="`cat Dockerfile | tail -n1 | sed 's/^.*\///g'`"
|
|
export FINALBUILDTAG="`cat Dockerfile | tail -n1 | sed 's/^#//g'`"
|
|
docker tag $BUILDIMGTAG:${{ env.VERSION }} $FINALBUILDTAG:${{ env.VERSION }}
|
|
docker images
|
|
echo $CR_PAT | docker login harbor.freshbrewed.science -u $CR_USER --password-stdin
|
|
docker push $FINALBUILDTAG:${{ env.VERSION }}
|
|
env: # Or as an environment variable
|
|
CR_PAT: ${{ secrets.CR_PAT }}
|
|
CR_USER: ${{ secrets.CR_USER }}
|
|
|
|
- name: Tag and Push (Dockerhub)
|
|
run: |
|
|
export BUILDIMGTAG="`cat Dockerfile | tail -n1 | sed 's/^.*\///g'`"
|
|
docker tag $BUILDIMGTAG:${{ env.VERSION }} $DHUSER/$BUILDIMGTAG:${{ env.VERSION }}
|
|
docker images
|
|
echo $DHPAT | docker login -u $DHUSER --password-stdin
|
|
docker push $DHUSER/$BUILDIMGTAG:${{ env.VERSION }}
|
|
env: # Or as an environment variable
|
|
DHPAT: ${{ secrets.DHPAT }}
|
|
DHUSER: ${{ secrets.DHUSER }}
|
|
|
|
- name: Prepare Env for Helm OCI Push (Helm v3 reference only)
|
|
run: |
|
|
if [ ! -f /tmp/linux-amd64/helm ]; then
|
|
apt update
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y unzip curl || true
|
|
wget https://get.helm.sh/helm-v3.14.0-linux-amd64.tar.gz -O /tmp/helm.tar.gz || true
|
|
cd /tmp
|
|
tar xzvf helm.tar.gz
|
|
chmod +x linux-amd64/helm
|
|
fi
|
|
|
|
- name: Package Helm Chart
|
|
run: |
|
|
set -x
|
|
/tmp/linux-amd64/helm package ./helm-chart
|
|
export HLMPKG=`ls -tr *.tgz | tail -n1 | tr -d '\n'`
|
|
/tmp/linux-amd64/helm registry login harbor.freshbrewed.science -u $CR_USER -p $CR_PAT
|
|
/tmp/linux-amd64/helm push ./$HLMPKG oci://harbor.freshbrewed.science/chartrepo/k8s-pulse
|
|
env: # Or as an environment variable
|
|
CR_PAT: ${{ secrets.CR_PAT }}
|
|
CR_USER: ${{ secrets.CR_USER }}
|
|
|