Skip to content

Version 0.13.3

Version 0.13.3 #8

name: Docker Build and Push
on:
release:
types: [created]
env:
LOCAL_BUILD: false
jobs:
get_version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.set_version.outputs.version }}
steps:
- name: Write release version
id: set_version
run: |
TAG=${{ github.event.release.tag_name }}
VERSION=${TAG#v}
echo "VERSION: $VERSION"
echo "version=$VERSION" >> $GITHUB_ENV
echo "::set-output name=version::$VERSION"
build-and-push-amd64:
runs-on: ubuntu-latest
needs: get_version
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
buildkitd-flags: --debug
driver-opts: image=moby/buildkit:v0.9.1
- name: Login to GitHub Container Registry
if: env.LOCAL_BUILD != 'true'
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push for amd64 platform
run: |
docker buildx build \
--push \
--platform linux/amd64 \
--tag ghcr.io/${{ github.repository_owner }}/node:amd64-${{ needs.get_version.outputs.version }} \
.
build-and-push-armv7:
runs-on: ubuntu-latest
needs: get_version
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: image=moby/buildkit:v0.9.1
- name: Login to GitHub Container Registry
if: env.LOCAL_BUILD != 'true'
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set Swap Space
uses: pierotofy/[email protected]
with:
swap-size-gb: 10
- run: |
# Workaround for https://github.com/rust-lang/cargo/issues/8719
sudo mkdir -p /var/lib/docker
sudo mount -t tmpfs -o size=10G none /var/lib/docker
sudo systemctl restart docker
- name: Build and push for armv7
run: |
docker buildx build \
--push \
--platform linux/arm/v7 \
--tag ghcr.io/${{ github.repository_owner }}/node:armv7-${{ needs.get_version.outputs.version }} \
.
build-and-push-arm64:
runs-on: ubuntu-latest
needs: get_version
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: image=moby/buildkit:v0.9.1
- name: Login to GitHub Container Registry
if: env.LOCAL_BUILD != 'true'
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push for arm64v8 platform
run: |
docker buildx build \
--push \
--platform linux/arm64/v8 \
--tag ghcr.io/${{ github.repository_owner }}/node:arm64-${{ needs.get_version.outputs.version }} \
.
build-and-push-manifest:
needs: [build-and-push-amd64, build-and-push-armv7, build-and-push-arm64, get_version]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: image=moby/buildkit:v0.9.1
- name: Login to GitHub Container Registry
if: env.LOCAL_BUILD != 'true'
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create manifest list and push to registry
run: |
docker manifest create ghcr.io/${{ github.repository_owner }}/node:${{ needs.get_version.outputs.version }} \
ghcr.io/${{ github.repository_owner }}/node:amd64-${{ needs.get_version.outputs.version }} \
ghcr.io/${{ github.repository_owner }}/node:arm64-${{ needs.get_version.outputs.version }} \
ghcr.io/${{ github.repository_owner }}/node:armv7-${{ needs.get_version.outputs.version }}
docker manifest push ghcr.io/${{ github.repository_owner }}/node:${{ needs.get_version.outputs.version }}
docker manifest create ghcr.io/${{ github.repository_owner }}/node:latest \
ghcr.io/${{ github.repository_owner }}/node:amd64-${{ needs.get_version.outputs.version }} \
ghcr.io/${{ github.repository_owner }}/node:arm64-${{ needs.get_version.outputs.version }} \
ghcr.io/${{ github.repository_owner }}/node:armv7-${{ needs.get_version.outputs.version }}
docker manifest push ghcr.io/${{ github.repository_owner }}/node:latest