Skip to content

feat: support build arm images #1

feat: support build arm images

feat: support build arm images #1

Workflow file for this run

name: build-images
on:
pull_request_target:
types: [ opened, synchronize, reopened ]
paths:
- 'cmd/**'
- 'pkg/**'
- '**.go'
- 'go.*'
- '**.yml'
push:
paths:
- 'cmd/**'
- 'pkg/**'
- '**.go'
- 'go.*'
- '**.yml'
workflow_dispatch:
jobs:
build-fadvisor:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
- id: git-versions
run: |
echo "::set-output name=git-version::$(git describe --tags --always)"
- id: git-branch
run: |
echo "::set-output name=git-branch::$(echo ${GITHUB_REF##*/} | tr '[A-Z]' '[a-z]')"
- id: build-name-image
run: |
echo "::set-output name=build-name-image::fadvisor"
- id: build-name-file
run: |
echo "::set-output name=build-name-file::$(echo "${{steps.build-name-image.outputs.build-name-image}}" | tr '/' '-')"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Inspect builder
run: |
echo "Name: ${{ steps.buildx.outputs.name }}"
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
echo "Status: ${{ steps.buildx.outputs.status }}"
echo "Flags: ${{ steps.buildx.outputs.flags }}"
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to Coding Container Registry
uses: docker/login-action@v1
with:
registry: finops-docker.pkg.coding.net
username: ${{ secrets.CODING_USERNAME }}
password: ${{ secrets.CODING_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: build-ldflags
run: |
echo "::set-output name=build-ldflags::$(make echoLDFLAGS)"
- name: Build fadvisor and push - push
if: ${{ github.event_name == 'push' }}
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
build-args: |
PKGNAME=fadvisor
LDFLAGS=${{steps.build-ldflags.outputs.build-ldflags}}
BUILD=CI
tags: |
gocrane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}-${{steps.git-versions.outputs.git-version}}
gocrane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}
ghcr.io/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}-${{steps.git-versions.outputs.git-version}}
ghcr.io/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}
finops-docker.pkg.coding.net/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}-${{steps.git-versions.outputs.git-version}}
finops-docker.pkg.coding.net/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:${{steps.git-branch.outputs.git-branch}}
- name: Build fadvisor and push - pull_request_target
if: ${{ github.event_name == 'pull_request_target' }}
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
build-args: |
PKGNAME=fadvisor
LDFLAGS=${{steps.build-ldflags.outputs.build-ldflags}}
BUILD=CI
tags: |
gocrane/${{steps.build-name-image.outputs.build-name-image}}:pr-${{github.event.number}}-${{steps.git-versions.outputs.git-version}}
ghcr.io/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:pr-${{github.event.number}}-${{steps.git-versions.outputs.git-version}}
finops-docker.pkg.coding.net/gocrane/crane/${{steps.build-name-image.outputs.build-name-image}}:pr-${{github.event.number}}-${{steps.git-versions.outputs.git-version}}
post-comment:
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request_target' }}
needs:
- build-fadvisor
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
- id: git-versions
run: |
echo "::set-output name=git-version::$(git describe --tags --always)"
- id: image-tags
run: |
echo "::set-output name=image-tags::pr-${{github.event.number}}-${{steps.git-versions.outputs.git-version}}"
- name: Get current date
id: date
run: echo "::set-output name=date::$(TZ='Asia/Shanghai' date +'%Y-%m-%d %H:%M')"
- name: maintain-comment
uses: actions-cool/maintain-one-comment@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
🎉 Successfully Build Images.
**Now Support ARM Platforms.**
Comment Post Time: ${{ steps.date.outputs.date }}
Git Version: ${{steps.git-versions.outputs.git-version}}
#### Docker Registry
Overview: https://hub.docker.com/u/gocrane
| Image | Pull Command |
| --------------------------------------------- | --------------------------------------------------------- |
| fadvisor:${{steps.image-tags.outputs.image-tags}} | docker pull gocrane/fadvisor:${{steps.image-tags.outputs.image-tags}}|
---
#### Coding Registry
Overview: https://finops.coding.net/public-artifacts/gocrane/crane/packages
| Image | Pull Command |
| --------------------------------------------- | --------------------------------------------------------- |
| fadvisor:${{steps.image-tags.outputs.image-tags}} | docker pull finops-docker.pkg.coding.net/gocrane/crane/fadvisor:${{steps.image-tags.outputs.image-tags}} |
---
#### Ghcr Registry
Overview: https://github.com/orgs/gocrane/packages?repo_name=crane
| Image | Pull Command |
| --------------------------------------------- | --------------------------------------------------------- |
| fadvisor:${{steps.image-tags.outputs.image-tags}} | docker pull ghcr.io/gocrane/crane/fadvisor:${{steps.image-tags.outputs.image-tags}} |
<!-- Created by actions-cool/maintain-one-comment -->
body-include: '<!-- Created by actions-cool/maintain-one-comment -->'