My build action requiring more space #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is a basic workflow to help you get started with Actions | |
name: My build action requiring more space | |
on: | |
workflow_dispatch: | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
APP_ID: 730 | |
REMOTE_BUILDID: 0 | |
TAG_EXISTS: 'false' | |
TAG: null | |
jobs: | |
build: | |
name: Build my artifact | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
tag: [slim] | |
steps: | |
- name: Maximize build space | |
uses: easimon/maximize-build-space@master | |
with: | |
root-reserve-mb: 4096 | |
temp-reserve-mb: 2048 | |
build-mount-path: '/var/lib/' | |
remove-dotnet: 'true' | |
remove-android: 'true' | |
remove-haskell: 'true' | |
remove-codeql: 'true' | |
- name: Restart docker | |
run: sudo service docker restart | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build | |
run: | | |
echo "Free space:" | |
df -h | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build (Dockerfile.buildid) | |
run: docker build -f Dockerfile.buildid -t remote-buildid:${{ env.APP_ID }} --build-arg APP_ID=${{ env.APP_ID }} . | |
- name: Find the Remote buildid | |
id: remote-buildid | |
run: | | |
REMOTE_BUILDID=$(docker run --rm remote-buildid:${{ env.APP_ID }}) | |
echo "REMOTE_BUILDID=$REMOTE_BUILDID" >> $GITHUB_ENV | |
if [ "${{ matrix.tag }}" == "latest" ]; then | |
echo "TAG=${REMOTE_BUILDID}" >> $GITHUB_ENV | |
else | |
echo "TAG=${REMOTE_BUILDID}-${{ matrix.tag }}" >> $GITHUB_ENV | |
fi | |
- name: Remove Docker image | |
run: docker rmi remote-buildid:${{ env.APP_ID }} | |
- name: Check if tag exists | |
if: github.event_name != 'workflow_dispatch' | |
id: tag-exists | |
run: | | |
if docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.TAG }}; then | |
echo "TAG_EXISTS=true" >> $GITHUB_ENV | |
fi | |
- name: Log in to the Container registry | |
if: env.TAG_EXISTS == 'false' || github.event_name == 'workflow_dispatch' | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
if: env.TAG_EXISTS == 'false' || github.event_name == 'workflow_dispatch' | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=raw,value=${{ matrix.tag }} | |
type=raw,value=${{ env.TAG }} | |
- name: Build | |
run: | | |
echo "Free space:" | |
df -h | |
- name: Push Docker image | |
if: env.TAG_EXISTS == 'false' || github.event_name == 'workflow_dispatch' | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: true | |
provenance: false | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
annotations: ${{ steps.meta.outputs.annotations }} | |
build-args: | | |
TAG=${{ matrix.tag }} | |
REMOTE_BUILDID=${{ env.REMOTE_BUILDID }} |