10 Commits
v2 ... v3

Author SHA1 Message Date
d830676408 Remove quotes from command run line.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-20 10:28:46 +05:00
48dda3455b PATH definition and proper command line output.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-20 00:03:21 +05:00
b4e9d9ec58 Try to use INPUT_COMMAND variable while at actions mode.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-19 23:54:51 +05:00
4e1dc58611 More verbosive entrypoint.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-19 23:30:31 +05:00
21040eaa65 Get rid of command-args separation.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-19 23:19:23 +05:00
bf978b222b Fix args position.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-19 15:28:35 +05:00
c7e5ae7513 Try to make it github/gitea actionable.
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-07-19 15:11:50 +05:00
b22fd7cdfc Remove "newer mac" line from README as it is invalid now.
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-07 21:18:00 +05:00
829167d269 Clarify multiarch support in README.
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-07 21:17:15 +05:00
6590e5bd40 Script for multiarch image.
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-07 21:13:47 +05:00
5 changed files with 77 additions and 2 deletions

View File

@@ -17,3 +17,5 @@ RUN mkdir /home/container && chmod 0777 /home/container
ENV HOME=/home/container ENV HOME=/home/container
ENV GOPATH=/home/container/go ENV GOPATH=/home/container/go
ENV GOCACHE=/home/container/.cache ENV GOCACHE=/home/container/.cache
ENTRYPOINT ["/src/entrypoint.sh"]

View File

@@ -2,8 +2,6 @@
Docker image with everything you might need for developing apps in Go. Docker image with everything you might need for developing apps in Go.
**Note that for newer mac hardware you have to use Docker Desktop or amd64 virtual machine in lima/other tools!**
## What's inside ## What's inside
Debian 12 (slim) is used as base image. Debian 12 (slim) is used as base image.
@@ -18,6 +16,14 @@ Debian 12 (slim) is used as base image.
| `go-junit-report` | 2.1.0 | go-junit-report | [External link](https://github.com/jstemmer/go-junit-report) | | `go-junit-report` | 2.1.0 | go-junit-report | [External link](https://github.com/jstemmer/go-junit-report) |
| `delve` | 1.22.1 | delve | [External link](https://github.com/go-delve/delve) | | `delve` | 1.22.1 | delve | [External link](https://github.com/go-delve/delve) |
## Multiarch support
This image contains versions for both amd64 (AMD/Intel CPUs and their clones) and arm64 (Rockchips, Apple Silicon and so on).
Note, that **amd64** image built on my CI server, while **arm64** image I building on my local machine with `built_multiarch.sh`
for each published tag. It is because I have no separate arm64 machine (yet) and it's emulation on my server's CPU is freaking
slow (imagine Linux installation is going for three whole hours!).
## HOME ## HOME
Home directory is `/home/container`. Home directory is `/home/container`.

14
action.yml Normal file
View File

@@ -0,0 +1,14 @@
# action.yml
name: "Go Toolbox"
description: "A toolbox for golang applications development."
author: "Stanislav N. aka pztrn"
inputs:
command:
description: "Command to run."
required: true
default: "task -l"
runs:
using: "docker"
image: "Dockerfile"
args:
- ${{ inputs.command }}

30
build_multiarch.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# This script builds arm64 toolbox image, pushes it to packages and create version manifest with
# both amd64 and arm64 images.
# This script is launched on my local machine (which is macbook with M2 Pro CPU) and uses
# lima with arm64 version of Docker.
IMAGE_NAME="code.pztrn.name/containers/go-toolbox"
VERSION=$1
if [ "${VERSION}" == "" ]; then
echo "! No version specified as first argument!"
exit 1
fi
echo "* Building multiarch image with amd64 and arm64 images for version '${VERSION}'..."
echo "* Pulling ${IMAGE_NAME}:${VERSION} (amd64)..."
docker pull "${IMAGE_NAME}:${VERSION}"
echo "* Retagging pulled image as ${IMAGE_NAME}:${VERSION}-amd64..."
docker image tag "${IMAGE_NAME}:${VERSION}" "${IMAGE_NAME}:${VERSION}-amd64"
echo "* Pushing ${IMAGE_NAME}:${VERSION}-amd64..."
docker push "${IMAGE_NAME}:${VERSION}-amd64"
echo "* Building arm64 version..."
docker build -t "${IMAGE_NAME}:${VERSION}-arm64" .
echo "* Pushing arm64 image..."
docker push "${IMAGE_NAME}:${VERSION}-arm64"
echo "* Creating multiarch manifest..."
docker manifest create "${IMAGE_NAME}:${VERSION}" "${IMAGE_NAME}:${VERSION}-amd64" "${IMAGE_NAME}:${VERSION}-arm64"
echo "* Pushing multiarch manifest as ${IMAGE_NAME}:${VERSION}..."
docker manifest push "${IMAGE_NAME}:${VERSION}"

23
entrypoint.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/bash
# Entrypoint that handles both GitHub/Gitea actions things and direct commands execution.
CMD=$*
# Just ensure we have PATH defined properly.
PATH="${PATH}:/usr/bin/:/usr/sbin/:/bin/:/usr/local/bin/:/opt/bin/"
if [ "${CMD}" == "" ]; then
CMD="${INPUT_COMMAND}"
fi
if [ "${CMD}" == "" ]; then
echo "! No command to run!"
exit 1
fi
echo "----------"
echo "Launching command:"
echo "${CMD}"
echo "----------"
${CMD}