Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
d830676408
|
|||
48dda3455b
|
|||
b4e9d9ec58
|
|||
4e1dc58611
|
|||
21040eaa65
|
|||
bf978b222b
|
|||
c7e5ae7513
|
|||
b22fd7cdfc
|
|||
829167d269
|
|||
6590e5bd40
|
|||
c2977ada4d
|
|||
29be2ee77d
|
|||
8d53a9937d
|
@@ -1,4 +1,4 @@
|
||||
FROM debian:12.5-slim
|
||||
FROM debian:12.6-slim
|
||||
|
||||
COPY . /src
|
||||
RUN for file in $(find /src -type f -name "*.sh"); do chmod +x $file; done
|
||||
@@ -17,3 +17,5 @@ RUN mkdir /home/container && chmod 0777 /home/container
|
||||
ENV HOME=/home/container
|
||||
ENV GOPATH=/home/container/go
|
||||
ENV GOCACHE=/home/container/.cache
|
||||
|
||||
ENTRYPOINT ["/src/entrypoint.sh"]
|
||||
|
18
README.md
18
README.md
@@ -2,22 +2,28 @@
|
||||
|
||||
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
|
||||
|
||||
Debian 12 (slim) is used as base image.
|
||||
|
||||
| Binary | Version | Project | Repo |
|
||||
| ----------------- | ------- | --------------- | ------------------------------------------------------------- |
|
||||
| `go` | 1.22.2 | Go | |
|
||||
| `golangci-lint` | 1.57.2 | golangci-lint | [External link](https://github.com/golangci/golangci-lint) |
|
||||
| `go` | 1.22.5 | Go | |
|
||||
| `golangci-lint` | 1.59.1 | golangci-lint | [External link](https://github.com/golangci/golangci-lint) |
|
||||
| `gofumpt` | 0.6.0 | gofumpt | [External link](https://github.com/mvdan/gofumpt) |
|
||||
| `mockery_v2` | 2.42.2 | mockery | [External link](https://github.com/vektra/mockery) |
|
||||
| `task` | 3.36.0 | taskfile | [External link](https://github.com/go-task/task) |
|
||||
| `mockery_v2` | 2.43.2 | mockery | [External link](https://github.com/vektra/mockery) |
|
||||
| `task` | 3.38.0 | taskfile | [External link](https://github.com/go-task/task) |
|
||||
| `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) |
|
||||
|
||||
## 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 directory is `/home/container`.
|
||||
|
14
action.yml
Normal file
14
action.yml
Normal 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
30
build_multiarch.sh
Executable 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
23
entrypoint.sh
Executable 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}
|
@@ -6,7 +6,7 @@
|
||||
|
||||
set -xe
|
||||
|
||||
go_version=1.22.2
|
||||
go_version=1.22.5
|
||||
|
||||
# shellcheck disable=SC2086,SC2046,SC2164
|
||||
cd $(dirname ${BASH_SOURCE[0]})
|
||||
|
@@ -4,7 +4,7 @@
|
||||
# Line above disables shellcheck linters:
|
||||
# * SC2154 - variable referenced but not assigned (false positive, assigned when sourced arch.sh).
|
||||
|
||||
golangci_lint_version=1.57.2
|
||||
golangci_lint_version=1.59.1
|
||||
|
||||
# shellcheck disable=SC2086,SC2046,SC2164
|
||||
cd "$(dirname ${BASH_SOURCE[0]})"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
mockery_v2_version=2.42.2
|
||||
mockery_v2_version=2.43.2
|
||||
|
||||
cd /tmp || exit 1
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
# Line above disables shellcheck linters:
|
||||
# * SC2154 - variable referenced but not assigned (false positive, assigned when sourced arch.sh).
|
||||
|
||||
taskfile_version=3.36.0
|
||||
taskfile_version=3.38.0
|
||||
|
||||
# shellcheck disable=SC2086,SC2046,SC2164
|
||||
cd "$(dirname ${BASH_SOURCE[0]})"
|
||||
|
Reference in New Issue
Block a user