From 6ffb01cfd3f3f66e6a6fc46464012e6f8108c75c Mon Sep 17 00:00:00 2001 From: "Ryan (hackercat)" Date: Fri, 28 May 2021 11:31:42 +0000 Subject: [PATCH] Refactor again (#11) --- .github/containerscan/allowedlist.yaml | 4 - .github/dependabot.yml | 10 +- .github/linters/.hadolint.yml | 4 +- .github/workflows/build-alpine.yml | 162 +++++++++++++++-------- .github/workflows/build-ubuntu.yml | 149 ++++++++++++++------- .github/workflows/lint.yml | 4 +- .gitignore | 7 + .mega-linter.yml | 6 + .prettierrc.yml | 2 + README.md | 5 +- linux/alpine/act/Dockerfile | 68 ++++++++++ linux/alpine/act/base/Dockerfile | 65 --------- linux/alpine/{act => }/go/Dockerfile | 15 ++- linux/alpine/{act => }/runner/Dockerfile | 14 +- linux/alpine/{act => }/rust/Dockerfile | 16 +-- linux/ubuntu/act/Dockerfile | 42 +++--- linux/ubuntu/go/Dockerfile | 21 +++ linux/ubuntu/js/Dockerfile | 32 +++++ linux/ubuntu/mega/Dockerfile | 19 +++ linux/ubuntu/runner/Dockerfile | 32 +++-- linux/ubuntu/rust/Dockerfile | 20 +++ 21 files changed, 461 insertions(+), 236 deletions(-) delete mode 100644 .github/containerscan/allowedlist.yaml create mode 100644 .mega-linter.yml create mode 100644 .prettierrc.yml create mode 100644 linux/alpine/act/Dockerfile delete mode 100644 linux/alpine/act/base/Dockerfile rename linux/alpine/{act => }/go/Dockerfile (74%) rename linux/alpine/{act => }/runner/Dockerfile (82%) rename linux/alpine/{act => }/rust/Dockerfile (56%) create mode 100644 linux/ubuntu/go/Dockerfile create mode 100644 linux/ubuntu/js/Dockerfile create mode 100644 linux/ubuntu/mega/Dockerfile create mode 100644 linux/ubuntu/rust/Dockerfile diff --git a/.github/containerscan/allowedlist.yaml b/.github/containerscan/allowedlist.yaml deleted file mode 100644 index d11a127..0000000 --- a/.github/containerscan/allowedlist.yaml +++ /dev/null @@ -1,4 +0,0 @@ -general: - vulnerabilities: - bestPracticeViolations: - - DKL-DI-0001 # * FATAL:Avoid sudo command diff --git a/.github/dependabot.yml b/.github/dependabot.yml index fb7922b..eed44bb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,7 @@ -version: 2 +--- updates: - # Maintain dependencies for GitHub Actions - - package-ecosystem: 'github-actions' - directory: '/' + - directory: / + package-ecosystem: github-actions schedule: - interval: 'monthly' + interval: monthly +version: 2 diff --git a/.github/linters/.hadolint.yml b/.github/linters/.hadolint.yml index afd3ddf..d0dd9b5 100644 --- a/.github/linters/.hadolint.yml +++ b/.github/linters/.hadolint.yml @@ -1,9 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/hadolint/hadolint/master/contrib/hadolint.json +--- ignored: - SC2086 - - SC2059 - DL3004 - DL3002 - DL3008 + - DL3016 - DL3018 - DL3003 trustedRegistries: diff --git a/.github/workflows/build-alpine.yml b/.github/workflows/build-alpine.yml index 31fa4b4..1c26434 100644 --- a/.github/workflows/build-alpine.yml +++ b/.github/workflows/build-alpine.yml @@ -1,27 +1,32 @@ name: Build alpine images on: - schedule: - - cron: 0 12 */7 * * - push: - paths: - - '.github/workflows/build-alpine.yml' - - 'linux/alpine/act/**' - pull_request: - paths: - - '.github/workflows/build-alpine.yml' - - 'linux/alpine/act/**' + #schedule: + # - cron: 0 12 */7 * * + #push: + # paths: + # - '.github/workflows/build-alpine.yml' + # - 'linux/alpine/**' + # branches: + # - 'master' + #pull_request: + # paths: + # - '.github/workflows/build-alpine.yml' + # - 'linux/alpine/**' workflow_dispatch: +env: + SLUG: ${{ github.repository_owner }}/alpine + IMAGE: alpine + PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7 + jobs: build: - name: Build runs-on: ubuntu-latest - if: ${{ ( github.actor == github.repository_owner && github.event_name != 'pull_request' ) || ( github.actor != github.repository_owner ) }} + environment: Images steps: - name: Login to GitHub Container Registry id: ghcr - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: registry: ghcr.io @@ -30,7 +35,6 @@ jobs: - name: Login to Quay id: quay - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: registry: quay.io @@ -39,15 +43,21 @@ jobs: - name: Login to Docker Hub id: dckr - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_TOKEN }} - - name: Print date in UTC format - id: print-date - run: echo "::set-output name=date::$(date +%Y%m%d)" + - name: Print tag + id: print-tag + run: | + if [ ${{ github.event_name }} == 'pull_request'}} && ${{ !env.ACT }} ]; then + echo "::set-output name=tag::PR-${{ github.event.number }}" + elif [ "${ACT}" == "true" ]; then + echo "::set-output name=tag::dev" + else + echo "::set-output name=tag::$(date +%Y%m%d)" + fi - name: Set up QEMU uses: docker/setup-qemu-action@v1 @@ -57,56 +67,100 @@ jobs: - uses: actions/checkout@v2 - - name: Build and push ${{ github.repository_owner }}/alpine:act-${{ steps.print-date.outputs.date }} - id: act + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} uses: docker/build-push-action@v2 env: - GHCR_TAG: ghcr.io/${{ github.repository_owner }}/alpine:act - QUAY_TAG: quay.io/${{ github.repository_owner }}/alpine:act - DCKR_TAG: docker.io/${{ github.repository_owner }}/alpine:act + TAG: act-${{ steps.print-tag.outputs.tag }} with: context: . - push: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} - file: ./linux/alpine/act/base/Dockerfile - platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + file: ./linux/${{ env.IMAGE }}/act/Dockerfile + platforms: ${{ env.PLATFORMS }} tags: | - ${{ env.GHCR_TAG }} - ${{ env.GHCR_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.QUAY_TAG }} - ${{ env.QUAY_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.DCKR_TAG }} - ${{ env.DCKR_TAG }}-${{ steps.print-date.outputs.date }} + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} build-args: | - BASEIMAGE=node - TAG=lts-alpine3.13 - DISTRIB_RELEASE=${{ steps.release.outputs.RELEASE }} - BUILD_TAG_VERSION=${{ steps.print-date.outputs.date }} + IMAGEOS=${{ env.IMAGE }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} BUILD_TAG=act BUILD_REF=${{ github.sha }} - - name: Build and push ${{ github.repository_owner }}/alpine:runner-${{ steps.print-date.outputs.date }} - id: runner + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} uses: docker/build-push-action@v2 - if: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} env: - GHCR_TAG: ghcr.io/${{ github.repository_owner }}/alpine:runner - QUAY_TAG: quay.io/${{ github.repository_owner }}/alpine:runner - DCKR_TAG: docker.io/${{ github.repository_owner }}/alpine:runner + TAG: runner-${{ steps.print-tag.outputs.tag }} with: context: . - push: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} - file: ./linux/alpine/act/runner/Dockerfile - platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + file: ./linux/${{ env.IMAGE }}/runner/Dockerfile + platforms: ${{ env.PLATFORMS }} tags: | - ${{ env.GHCR_TAG }} - ${{ env.GHCR_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.QUAY_TAG }} - ${{ env.QUAY_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.DCKR_TAG }} - ${{ env.DCKR_TAG }}-${{ steps.print-date.outputs.date }} + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} build-args: | - BASEIMAGE=catthehacker/alpine - TAG=act-${{ steps.print-date.outputs.date }} - BUILD_TAG_VERSION=${{ steps.print-date.outputs.date }} + IMAGE=ghcr.io/${{ env.SLUG }} + IMAGEOS=${{ env.IMAGE }} + TAG=act-${{ steps.print-tag.outputs.tag }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} BUILD_TAG=runner BUILD_REF=${{ github.sha }} + + - uses: actions/setup-go@v1 + with: + go-version: 1.16 + + - uses: actions/checkout@v2 + with: + ref: cat/fix/change-image + repository: catthehacker/act-fork + path: act + + - env: + ACT_TEST_IMAGE: ghcr.io/${{ env.SLUG }}:act-${{ steps.print-tag.outputs.tag }} + ACT_REPOSITORY: catthehacker/act-fork + ACT_OWNER: catthehacker + run: | + cd act/ + go test ./... + + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} + uses: docker/build-push-action@v2 + env: + TAG: act + with: + context: . + push: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} + file: ./linux/${{ env.IMAGE }}/act/Dockerfile + platforms: ${{ env.PLATFORMS }} + tags: | + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} + build-args: | + IMAGEOS=${{ env.IMAGE }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=${{ env.TAG }} + BUILD_REF=${{ github.sha }} + + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} + uses: docker/build-push-action@v2 + env: + TAG: runner + with: + context: . + push: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} + file: ./linux/${{ env.IMAGE }}/runner/Dockerfile + platforms: ${{ env.PLATFORMS }} + tags: | + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} + build-args: | + IMAGE=ghcr.io/${{ env.SLUG }} + IMAGEOS=${{ env.IMAGE }} + TAG=act-${{ steps.print-tag.outputs.tag }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=${{ env.TAG }} + BUILD_REF=${{ github.sha }} diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 29dafe5..af68d6b 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -7,6 +7,8 @@ on: paths: - '.github/workflows/build-ubuntu.yml' - 'linux/ubuntu/**' + branches: + - 'master' pull_request: paths: - '.github/workflows/build-ubuntu.yml' @@ -14,24 +16,23 @@ on: workflow_dispatch: env: + SLUG: ${{ github.repository_owner }}/ubuntu + IMAGE: ubuntu + PLATFORMS: linux/amd64,linux/arm64 NODE: '12' jobs: build: - name: Build runs-on: ubuntu-latest - if: ${{ ( github.actor == github.repository_owner && github.event_name != 'pull_request' ) || ( github.actor != github.repository_owner ) }} + environment: Images strategy: fail-fast: true max-parallel: 4 matrix: - BASEIMAGE: [ubuntu] TAG: [latest, 20.04, 18.04, 16.04] - IMAGE_TYPE: [act] steps: - name: Login to GitHub Container Registry id: ghcr - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: registry: ghcr.io @@ -40,7 +41,6 @@ jobs: - name: Login to Quay id: quay - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: registry: quay.io @@ -49,18 +49,25 @@ jobs: - name: Login to Docker Hub id: dckr - if: ${{ github.actor == github.repository_owner && !env.ACT }} uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_TOKEN }} - - name: Print date in UTC format - id: print-date - run: echo "::set-output name=date::$(date +%Y%m%d)" + - name: Print tag + id: print-tag + shell: sh + run: | + if ${{ github.event_name == 'pull_request' }} && ${{ !env.ACT }} ; then + echo "::set-output name=tag::PR-${{ github.event.number }}" + elif ${{ !env.ACT }} ; then + echo "::set-output name=tag::$(date +%Y%m%d)" + else + echo "::set-output name=tag::dev" + fi - name: Set Ubuntu version to RELEASE - id: release + id: print-release run: | if [ "latest" = "${{ matrix.TAG }}" ]; then echo "::set-output name=RELEASE::$(lsb_release -rs)" @@ -76,56 +83,102 @@ jobs: - uses: actions/checkout@v2 - - name: Build and push ${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:act-${{ matrix.TAG }}-${{ steps.print-date.outputs.date }} - id: act + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} uses: docker/build-push-action@v2 env: - GHCR_TAG: ghcr.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:act-${{ matrix.TAG }} - QUAY_TAG: quay.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:act-${{ matrix.TAG }} - DCKR_TAG: docker.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:act-${{ matrix.TAG }} + TAG: act-${{ matrix.TAG }}-${{ steps.print-tag.outputs.tag }} with: context: . - push: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} - file: ./linux/${{ matrix.BASEIMAGE }}/act/Dockerfile - platforms: linux/amd64,linux/arm64 + push: true + file: ./linux/${{ env.IMAGE }}/act/Dockerfile + platforms: ${{ env.PLATFORMS }} tags: | - ${{ env.GHCR_TAG }} - ${{ env.GHCR_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.QUAY_TAG }} - ${{ env.QUAY_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.DCKR_TAG }} - ${{ env.DCKR_TAG }}-${{ steps.print-date.outputs.date }} + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} build-args: | - BASEIMAGE=buildpack-deps - TAG=${{ steps.release.outputs.RELEASE }} + IMAGEOS=${{ env.IMAGE }} NODE_VERSION=${{ env.NODE }} - BUILD_TAG_VERSION=${{ steps.print-date.outputs.date }} - BUILD_TAG=act + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=act-${{ matrix.TAG }} BUILD_REF=${{ github.sha }} - - name: Build and push ${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:runner-${{ matrix.TAG }}-${{ steps.print-date.outputs.date }} - id: runner + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} uses: docker/build-push-action@v2 - if: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} env: - GHCR_TAG: ghcr.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:runner-${{ matrix.TAG }} - QUAY_TAG: quay.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:runner-${{ matrix.TAG }} - DCKR_TAG: docker.io/${{ github.repository_owner }}/${{ matrix.BASEIMAGE }}:runner-${{ matrix.TAG }} + TAG: runner-${{ matrix.TAG }}-${{ steps.print-tag.outputs.tag }} with: context: . - push: ${{ github.event_name != 'pull_request' && github.event_name != 'push' && !env.ACT }} - file: ./linux/${{ matrix.BASEIMAGE }}/runner/Dockerfile - platforms: linux/amd64,linux/arm64 + push: true + file: ./linux/${{ env.IMAGE }}/runner/Dockerfile + platforms: ${{ env.PLATFORMS }} tags: | - ${{ env.GHCR_TAG }} - ${{ env.GHCR_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.QUAY_TAG }} - ${{ env.QUAY_TAG }}-${{ steps.print-date.outputs.date }} - ${{ env.DCKR_TAG }} - ${{ env.DCKR_TAG }}-${{ steps.print-date.outputs.date }} + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} build-args: | - BASEIMAGE=catthehacker/ubuntu - TAG=act-${{ matrix.TAG }} - BUILD_TAG_VERSION=${{ steps.print-date.outputs.date }} - BUILD_TAG=${{ matrix.IMAGE_TYPE }} + IMAGE=ghcr.io/${{ env.SLUG }} + IMAGEOS=${{ env.IMAGE }} + TAG=act-${{ matrix.TAG }}-${{ steps.print-tag.outputs.tag }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=runner + BUILD_REF=${{ github.sha }} + + - uses: actions/setup-go@v1 + with: + go-version: 1.16 + + - uses: actions/checkout@v2 + with: + ref: cat/fix/change-image + repository: catthehacker/act-fork + path: act + + - env: + ACT_TEST_IMAGE: ghcr.io/${{ env.SLUG }}:act-${{ matrix.TAG }}-${{ steps.print-tag.outputs.tag }} + ACT_REPOSITORY: catthehacker/act-fork + ACT_OWNER: catthehacker + run: | + cd act/ + go test ./... + + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} + uses: docker/build-push-action@v2 + env: + TAG: act + with: + context: . + push: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} + file: ./linux/${{ env.IMAGE }}/act/Dockerfile + platforms: ${{ env.PLATFORMS }} + tags: | + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} + build-args: | + NODE_VERSION=${{ env.NODE }} + IMAGEOS=${{ env.IMAGE }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=act-${{ matrix.TAG }} + BUILD_REF=${{ github.sha }} + + - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} + uses: docker/build-push-action@v2 + env: + TAG: runner + with: + context: . + push: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} + file: ./linux/${{ env.IMAGE }}/runner/Dockerfile + platforms: ${{ env.PLATFORMS }} + tags: | + ghcr.io/${{ env.SLUG }}:${{ env.TAG }} + quay.io/${{ env.SLUG }}:${{ env.TAG }} + docker.io/${{ env.SLUG }}:${{ env.TAG }} + build-args: | + IMAGE=ghcr.io/${{ env.SLUG }} + IMAGEOS=${{ env.IMAGE }} + TAG=act-${{ matrix.TAG }}-${{ steps.print-tag.outputs.tag }} + BUILD_TAG_VERSION=${{ steps.print-tag.outputs.tag }} + BUILD_TAG=runner-${{ matrix.TAG }} BUILD_REF=${{ github.sha }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9a3f5b2..91a8d7c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,6 +2,8 @@ name: Lint Code Base on: push: + branches: + - 'master' pull_request: workflow_dispatch: @@ -15,7 +17,7 @@ jobs: with: fetch-depth: 0 - name: Lint - uses: github/super-linter@v3 + uses: nvuillam/mega-linter/flavors/documentation@v4 env: VALIDATE_ALL_CODEBASE: ${{ github.event_name != 'pull_request' }} DEFAULT_BRANCH: master diff --git a/.gitignore b/.gitignore index 0458d9d..cc5cac7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ build.ps1 + +# custom stuff +.secrets +.env + +# mega-linter +report diff --git a/.mega-linter.yml b/.mega-linter.yml new file mode 100644 index 0000000..2ee8471 --- /dev/null +++ b/.mega-linter.yml @@ -0,0 +1,6 @@ +--- +DISABLE: + - COPYPASTE +DISABLE_LINTERS: + - SPELL_CSPELL + - DOCKERFILE_DOCKERFILELINT diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..7b1894d --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,2 @@ +--- +singleQuote: true diff --git a/README.md b/README.md index 959f681..2e64b91 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## When updates will be applied to images - A package that will be required for action(s) to work properly might be added/removed/changed -- Any maintainance that will be required due to: +- Any maintenance that will be required due to: - Docker Hub - Quay - GitHub Container Registry @@ -34,6 +34,7 @@ - [`/linux/alpine/act/`](./linux/alpine/act/) - Alpine base image for `act` - docker.io (DockerHub) - `catthehacker/alpine:act` + - `catthehacker/alpine:runner` [actions/virtual-environments]: https://github.com/actions/virtual-environments -[catthehacker/runner-image]: https://github.com/catthehacker/runner-image +[catthehacker/runner-image]: https://github.com/catthehacker/virtual-environments diff --git a/linux/alpine/act/Dockerfile b/linux/alpine/act/Dockerfile new file mode 100644 index 0000000..808f5ad --- /dev/null +++ b/linux/alpine/act/Dockerfile @@ -0,0 +1,68 @@ +ARG IMAGE=alpine +ARG TAG=3.13 +FROM ${IMAGE}:${TAG} + +# > automatic buildx ARGs +ARG TARGETARCH +ARG TARGETVARIANT + +# > ARGs before FROM are not accessible +ARG IMAGE=alpine +ARG TAG=3.13 +ARG IMAGEOS=alpine + +SHELL [ "/bin/ash", "-l", "-o", "pipefail", "-c" ] + +# > setup environment required for GitHub Actions, install dependencies/packages +RUN set -euxo pipefail \ + && printf "\n\n\tšŸ‹\t Build started \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Adding environment variables \tšŸ‹\t\n\n" \ + && echo "USER=$(whoami)" | tee -a /etc/environment \ + && echo "RUNNER_USER=$(whoami)" | tee -a /etc/environment \ + && echo "IMAGE_OS=${IMAGE}" | tee -a /etc/environment \ + && echo "ImageOS=${IMAGE}" | tee -a /etc/environment \ + #&& echo "LSB_RELEASE=${DISTRIB_RELEASE}" | tee -a /etc/environment \ + && AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache \ + && echo "AGENT_TOOLSDIRECTORY=${AGENT_TOOLSDIRECTORY}" | tee -a /etc/environment \ + && echo "RUN_TOOL_CACHE=${AGENT_TOOLSDIRECTORY}" | tee -a /etc/environment \ + && echo "DEPLOYMENT_BASEPATH=/opt/runner" | tee -a /etc/environment \ + && echo ". /etc/environment" | tee -a /etc/profile \ + && printf "\n\n\tšŸ‹\t Creating tool cache directory and '/github' \tšŸ‹\t\n\n" \ + && mkdir -p ${AGENT_TOOLSDIRECTORY} \ + && chown 1000:1000 ${AGENT_TOOLSDIRECTORY} \ + && chmod 0777 ${AGENT_TOOLSDIRECTORY} \ + && mkdir -p /github \ + && chown 1000:1000 /github \ + && chmod 0777 /github \ + && printf "\n\n\tšŸ‹\t Installing packages \tšŸ‹\t\n\n" \ + && apk --no-cache add bash openssh-client gawk jq curl git wget sudo gnupg ca-certificates yaml zstd zip unzip xz icu build-base python3 nodejs docker-cli \ + && ln -s $(which python3) /usr/local/bin/python \ + && printf "\n\n\tšŸ‹\t Docker: $(docker -v) \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Node: $(node -v) \tšŸ‹\t\n\n" \ + && apk list -I | sort \ + && printf "\n\n\tšŸ‹\t Creating ~/.ssh and adding 'github.com' \tšŸ‹\t\n\n" \ + && mkdir -p ~/.ssh \ + && chmod 700 ~/.ssh \ + && ssh-keyscan github.com | tee ~/.ssh/known_hosts \ + && printf "\n\n\tšŸ‹\t Installed base utils \tšŸ‹\t\n\n" \ + && sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' \ + && sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' \ + && sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' \ + && printf "\n\n\tšŸ‹\t Cleaning image \tšŸ‹\t\n\n" \ + && apk clean cache \ + && rm -rf /var/cache/* /var/log/* /tmp/* || echo 'Failed to delete directories' \ + && printf "\n\n\tšŸ‹\t Cleaned up image \tšŸ‹\t\n\n" + +ARG BUILD_TAG_VERSION="dev" +ARG BUILD_TAG="act" +ARG BUILD_REF="master" + +LABEL org.opencontainers.image.vendor="catthehacker" +LABEL org.opencontainers.image.authors="me@hackerc.at" +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${IMAGEOS}/${BUILD_TAG}/" +LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images" +LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} +LABEL org.opencontainers.image.revision=${BUILD_REF} + +USER root diff --git a/linux/alpine/act/base/Dockerfile b/linux/alpine/act/base/Dockerfile deleted file mode 100644 index b118282..0000000 --- a/linux/alpine/act/base/Dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -ARG BASEIMAGE=node -ARG TAG=lts-alpine3.13 -FROM ${BASEIMAGE}:${TAG} - -ARG TARGETARCH -ARG TARGETVARIANT - -# > ARGs before FROM are not accessible -ARG BASEIMAGE=alpine -ARG TAG=3.13 -ARG AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache -ARG IMAGE_TYPE=act -ENV ImageOS=alpine - - -SHELL [ "/bin/ash", "-o", "pipefail", "-l", "-c" ] - -# > setup environment required for GitHub Actions, install dependencies/packages -RUN set -euxo pipefail \ - && printf "Build started\nAdding environment variables\n\n" \ - && echo "USER=$(whoami)" | tee -a /etc/environment \ - && echo "RUNNER_USER=$(whoami)" | tee -a /etc/environment \ - && echo "IMAGE_OS=${ImageOS}" | tee -a /etc/environment \ - && echo "ImageOS=${ImageOS}" | tee -a /etc/environment \ - #&& echo "LSB_RELEASE=${DISTRIB_RELEASE}" | tee -a /etc/environment \ - && echo "AGENT_TOOLSDIRECTORY=${AGENT_TOOLSDIRECTORY}" | tee -a /etc/environment \ - && echo "RUN_TOOL_CACHE=${AGENT_TOOLSDIRECTORY}" | tee -a /etc/environment \ - && echo "DEPLOYMENT_BASEPATH=/opt/runner" | tee -a /etc/environment \ - && echo ". /etc/environment" | tee -a /etc/profile \ - && printf "Creating tool cache directory and '/github'\n\n" \ - && mkdir -p ${AGENT_TOOLSDIRECTORY} \ - && chown 1000:1000 ${AGENT_TOOLSDIRECTORY} \ - && chmod 0777 ${AGENT_TOOLSDIRECTORY} \ - && mkdir -p /github \ - && chown 1000:1000 /github \ - && chmod 0777 /github \ - && printf "Installing packages\n\n" \ - && apk --no-cache add openssh-client gawk jq curl git wget sudo gnupg ca-certificates yaml zstd zip unzip xz icu build-base python3 \ - && printf "Creating ~/.ssh and adding 'github.com'\n\n" \ - && mkdir -p ~/.ssh \ - && chmod 700 ~/.ssh \ - && ssh-keyscan github.com | tee ~/.ssh/known_hosts \ - && printf "Installed base utils\nInstalling docker\n" \ - && apk --no-cache add docker-cli \ - && printf "Cleaning image\n" \ - && apk clean cache \ - && rm -rf /var/cache/* /var/log/* /tmp/* || echo 'Failed to delete directories' \ - && printf "Cleaned up image\n" - -ARG BUILD_TAG_VERSION="master" -ARG BUILD_TAG=${IMAGE_TYPE} -ARG BUILD_REF="master" - -LABEL org.opencontainers.image.vendor="catthehacker" -LABEL org.opencontainers.image.authors="me@hackerc.at" -LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" -LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} -LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} -LABEL org.opencontainers.image.revision=${BUILD_REF} - -SHELL [ "/bin/ash", "-l", "-c" ] - -# > Force bash with environment -ENTRYPOINT [ "/bin/ash", "-l", "-c" ] diff --git a/linux/alpine/act/go/Dockerfile b/linux/alpine/go/Dockerfile similarity index 74% rename from linux/alpine/act/go/Dockerfile rename to linux/alpine/go/Dockerfile index 281e364..6fca5bb 100644 --- a/linux/alpine/act/go/Dockerfile +++ b/linux/alpine/go/Dockerfile @@ -1,21 +1,24 @@ -ARG BASEIMAGE=catthehacker/alpine +ARG IMAGE=ghcr.io/catthehacker/alpine ARG TAG=act -FROM ${BASEIMAGE}:${TAG} +FROM ${IMAGE}:${TAG} -SHELL [ "/bin/ash", "-o", "pipefail", "-l", "-c" ] +ARG TARGETARCH +ARG TARGETVARIANT -RUN set -Eeuxo pipefail \ +SHELL [ "/bin/ash", "-l", "-o", "pipefail", "-c" ] + +RUN set -euxo pipefail \ && printf "Installing Go(lang)\n" \ && sudo apk add --no-cache go -ARG BUILD_TAG_VERSION="master" +ARG BUILD_TAG_VERSION="dev" ARG BUILD_TAG="go" ARG BUILD_REF="master" LABEL org.opencontainers.image.vendor="catthehacker" LABEL org.opencontainers.image.authors="me@hackerc.at" LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" +LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images" LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/alpine/act/runner/Dockerfile b/linux/alpine/runner/Dockerfile similarity index 82% rename from linux/alpine/act/runner/Dockerfile rename to linux/alpine/runner/Dockerfile index de8f1c8..6af344c 100644 --- a/linux/alpine/act/runner/Dockerfile +++ b/linux/alpine/runner/Dockerfile @@ -1,8 +1,11 @@ -ARG BASEIMAGE=catthehacker/alpine +ARG IMAGE=ghcr.io/catthehacker/alpine ARG TAG=act -FROM ${BASEIMAGE}:${TAG} +FROM ${IMAGE}:${TAG} -SHELL [ "/bin/ash", "-o", "pipefail", "-l", "-c" ] +ARG TARGETARCH +ARG TARGETVARIANT + +SHELL [ "/bin/ash", "-l", "-o", "pipefail", "-c" ] ARG RUNNER=runner @@ -26,14 +29,11 @@ RUN set -euxo pipefail \ && chmod 644 "/home/${RUNNER}/.ssh/known_hosts" \ && chown -R ${RUNNER}:${RUNNER} "/home/${RUNNER}/.ssh" -ARG BUILD_TAG_VERSION="master" +ARG BUILD_TAG_VERSION="dev" ARG BUILD_TAG="runner" ARG BUILD_REF="master" -LABEL org.opencontainers.image.vendor="catthehacker" -LABEL org.opencontainers.image.authors="me@hackerc.at" LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/alpine/act/rust/Dockerfile b/linux/alpine/rust/Dockerfile similarity index 56% rename from linux/alpine/act/rust/Dockerfile rename to linux/alpine/rust/Dockerfile index 5b362cd..0990734 100644 --- a/linux/alpine/act/rust/Dockerfile +++ b/linux/alpine/rust/Dockerfile @@ -1,21 +1,21 @@ -ARG BASEIMAGE=catthehacker/alpine +ARG IMAGE=ghcr.io/catthehacker/alpine ARG TAG=act -FROM ${BASEIMAGE}:${TAG} +FROM ${IMAGE}:${TAG} -SHELL [ "/bin/ash", "-o", "pipefail", "-l", "-c" ] +ARG TARGETARCH +ARG TARGETVARIANT -RUN set -Eeuxo pipefail \ +SHELL [ "/bin/ash", "-l", "-o", "pipefail", "-c" ] + +RUN set -euxo pipefail \ && printf "Installing Rust\n" \ && curl https://sh.rustup.rs -sSf | sh -s -- -y -ARG BUILD_TAG_VERSION="master" +ARG BUILD_TAG_VERSION="dev" ARG BUILD_TAG="rust" ARG BUILD_REF="master" -LABEL org.opencontainers.image.vendor="catthehacker" -LABEL org.opencontainers.image.authors="me@hackerc.at" LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/ubuntu/act/Dockerfile b/linux/ubuntu/act/Dockerfile index 7860263..2ffaf08 100644 --- a/linux/ubuntu/act/Dockerfile +++ b/linux/ubuntu/act/Dockerfile @@ -1,22 +1,26 @@ -ARG BASEIMAGE=buildpack-deps +ARG IMAGE=buildpack-deps ARG TAG=20.04 -FROM ${BASEIMAGE}:${TAG} +FROM ${IMAGE}:${TAG} + +# > automatic buildx ARGs +ARG TARGETARCH +ARG TARGETVARIANT # > ARGs before FROM are not accessible -ARG BASEIMAGE=buildpack-deps +ARG IMAGE=buildpack-deps ARG TAG=20.04 -# > Node version +# > NodeJS version ARG NODE_VERSION=12 # > Force apt to not be interactive/not ask ARG DEBIAN_FRONTEND=noninteractive -SHELL [ "/bin/bash", "--login", "-o", "pipefail", "-c" ] +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] # > setup environment required for GitHub Actions RUN set -Eeuxo pipefail \ - && printf "Build started\n" \ + && printf "\n\n\tšŸ‹\t Build started \tšŸ‹\t\n\n" \ && echo "USER=$(whoami)" | tee -a /etc/environment \ && echo "RUNNER_USER=$(whoami)" | tee -a /etc/environment \ && ImageOS=ubuntu$(echo ${TAG} | cut -d'.' -f 1) \ @@ -34,44 +38,46 @@ RUN set -Eeuxo pipefail \ && mkdir -p /github \ && chown 1000:1000 /github \ && chmod 0777 /github \ - && printf "Installing packages\n\n" \ + && printf "\n\n\tšŸ‹\t Installing packages \tšŸ‹\t\n\n" \ && apt-get -yq update \ - && printf "Updated apt lists and upgraded packages\n\n" \ && apt-get -yq install --no-install-recommends ssh lsb-release gawk jq curl git wget sudo gnupg-agent ca-certificates software-properties-common apt-transport-https libyaml-0-2 zstd unzip xz-utils "$(apt-cache search libicu | grep -E 'libicu[[:digit:]]+ -' | cut -d \" \" -f 1)" \ + && ln -s $(which python3) /usr/local/bin/python \ && [[ "${TAG}" == "16.04" ]] && printf 'git-lfs not available for Xenial' || apt-get -yq install --no-install-recommends git-lfs \ - && printf "Creating ~/.ssh and adding 'github.com'\n\n" \ + && printf "\n\n\tšŸ‹\t Updated apt lists and upgraded packages \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Creating ~/.ssh and adding 'github.com' \tšŸ‹\t\n\n" \ && mkdir -p ~/.ssh \ && chmod 700 ~/.ssh \ && ssh-keyscan github.com | tee ~/.ssh/known_hosts \ - && printf "Installed base utils\nInstalling docker\n" \ + && printf "\n\n\tšŸ‹\t Installed base utils\nInstalling docker \tšŸ‹\t\n\n" \ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \ && add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ && apt-get -yq update \ && apt-get -yq install --no-install-recommends docker-ce-cli \ - && printf "Installing Node.JS\n" \ + && printf "\n\n\tšŸ‹\t Installed $(docker -v)\n \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Installing Node.JS \tšŸ‹\t\n\n" \ && curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \ && DISTRO="$(lsb_release -s -c)" \ && echo "deb https://deb.nodesource.com/node_${NODE_VERSION}.x $DISTRO main" | tee /etc/apt/sources.list.d/nodesource.list \ && echo "deb-src https://deb.nodesource.com/node_${NODE_VERSION}.x $DISTRO main" | tee -a /etc/apt/sources.list.d/nodesource.list \ && apt-get -yq update \ && apt-get -yq install --no-install-recommends nodejs="${NODE_VERSION}*" \ - && printf "Installed Node.JS $(node -v)\n" \ + && printf "\n\n\tšŸ‹\t Installed Node.JS $(node -v) \tšŸ‹\t\n\n" \ && dpkg-query -f '${binary:Package}\n' -W \ - && printf "Cleaning image\n" \ + && printf "\n\n\tšŸ‹\t Cleaning image \tšŸ‹\t\n\n" \ && apt-get clean \ && rm -rf /var/cache/* /var/log/* /var/lib/apt/lists/* /tmp/* || echo 'Failed to delete directories' \ - && printf "Cleaned up image\n" + && printf "\n\n\tšŸ‹\t Cleaned up image \tšŸ‹\t\n\n" -ARG BUILD_TAG_VERSION="master" +ARG BUILD_TAG_VERSION="dev" ARG BUILD_TAG="act" ARG BUILD_REF="master" LABEL org.opencontainers.image.vendor="catthehacker" LABEL org.opencontainers.image.authors="me@hackerc.at" -LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${IMAGE}/${BUILD_TAG}/" +LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images" LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} -LABEL org.opencontainers.image.title=${BUILD_TAG} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} LABEL org.opencontainers.image.revision=${BUILD_REF} USER root diff --git a/linux/ubuntu/go/Dockerfile b/linux/ubuntu/go/Dockerfile new file mode 100644 index 0000000..d0e6024 --- /dev/null +++ b/linux/ubuntu/go/Dockerfile @@ -0,0 +1,21 @@ +ARG IMAGE=ghcr.io/catthehacker/alpine +ARG TAG=act-latest +FROM ${IMAGE}:${TAG} + +ARG TARGETARCH +ARG TARGETVARIANT + +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] + +RUN set -Eeuxo pipefail \ + && printf "Installing Go(lang)\n" \ + && sudo apk add --no-cache go + +ARG BUILD_TAG_VERSION="dev" +ARG BUILD_TAG="go" +ARG BUILD_REF="master" + +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" +LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} +LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/ubuntu/js/Dockerfile b/linux/ubuntu/js/Dockerfile new file mode 100644 index 0000000..ec9b769 --- /dev/null +++ b/linux/ubuntu/js/Dockerfile @@ -0,0 +1,32 @@ +ARG IMAGE=ghcr.io/catthehacker/ubuntu +ARG TAG=act-latest +FROM ${IMAGE}:${TAG} + +ARG TARGETARCH +ARG TARGETVARIANT + +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] +RUN set -Eeuxo pipefail \ + && printf "\n\n\tšŸ‹\t Installing JS tools \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Installed NPM $(npm -v) \tšŸ‹\t\n\n" \ + && npm install -g npm \ + && npm install -g pnpm \ + && npm install -g yarn \ + && printf "\n\n\tšŸ‹\t Installed NPM $(npm -v) \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Installed PNPM $(pnpm -v) \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Installed YARN $(yarn -v) \tšŸ‹\t\n\n" \ + && npm install -g grunt gulp n parcel-bundler typescript newman vercel webpack webpack-cli lerna \ + && npm install -g --unsafe-perm netlify-cli \ + && printf "\n\n\tšŸ‹\t Cleaning image \tšŸ‹\t\n\n" \ + && apt-get clean \ + && rm -rf /var/cache/* /var/log/* /var/lib/apt/lists/* /tmp/* || echo 'Failed to delete directories' \ + && printf "\n\n\tšŸ‹\t Cleaned up image \tšŸ‹\t\n\n" + +ARG BUILD_TAG_VERSION="dev" +ARG BUILD_TAG="rust" +ARG BUILD_REF="master" + +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" +LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} +LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/ubuntu/mega/Dockerfile b/linux/ubuntu/mega/Dockerfile new file mode 100644 index 0000000..c2b5479 --- /dev/null +++ b/linux/ubuntu/mega/Dockerfile @@ -0,0 +1,19 @@ +ARG IMAGE=ghcr.io/catthehacker/alpine +ARG TAG=act-latest +FROM ${IMAGE}:${TAG} + +ARG TARGETARCH +ARG TARGETVARIANT + +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] + +RUN #TODO + +ARG BUILD_TAG_VERSION="dev" +ARG BUILD_TAG="rust" +ARG BUILD_REF="master" + +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" +LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} +LABEL org.opencontainers.image.revision=${BUILD_REF} diff --git a/linux/ubuntu/runner/Dockerfile b/linux/ubuntu/runner/Dockerfile index 3040efb..9302fb3 100644 --- a/linux/ubuntu/runner/Dockerfile +++ b/linux/ubuntu/runner/Dockerfile @@ -1,27 +1,27 @@ -ARG BASEIMAGE=catthehacker/ubuntu +ARG IMAGE=ghcr.io/catthehacker/ubuntu ARG TAG=act-latest -FROM ${BASEIMAGE}:${TAG} +FROM ${IMAGE}:${TAG} + +ARG TARGETARCH +ARG TARGETVARIANT # > ARGs before FROM are not accessible -ARG BASEIMAGE=catthehacker/ubuntu +ARG IMAGE=catthehacker/ubuntu ARG TAG=act-latest # > non-root user ARG RUNNER=runner -SHELL [ "/bin/bash", "--login", "-o", "pipefail", "-c" ] +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] # > Create non-root user RUN set -Eeuxo pipefail \ - && printf "Creating non-root user\n" \ + && printf "\n\n\tšŸ‹\t Creating non-root user \tšŸ‹\t\n\n" \ && groupadd -g 1000 ${RUNNER} \ && useradd -u 1000 -g ${RUNNER} -G sudo -m -s /bin/bash ${RUNNER} \ - && sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' \ - && sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' \ - && sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' \ && echo "${RUNNER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \ - && printf "Runner user: $(su - ${RUNNER} -c id)\n" \ - && printf "Created non-root user $(grep ${RUNNER} /etc/passwd)\n" \ + && printf "\n\n\tšŸ‹\t Runner user: $(su - ${RUNNER} -c id) \tšŸ‹\t\n\n" \ + && printf "\n\n\tšŸ‹\t Created non-root user $(grep ${RUNNER} /etc/passwd) \tšŸ‹\t\n\n" \ && sed -i /etc/environment -e "s/USER=root/USER=${RUNNER}/g" \ && echo "RUNNER_TEMP=/home/${RUNNER}/work/_temp" | tee -a /etc/environment \ && mkdir -p "/home/${RUNNER}/work/_temp" \ @@ -30,18 +30,16 @@ RUN set -Eeuxo pipefail \ && chmod 700 "/home/${RUNNER}/.ssh" \ && ssh-keyscan github.com | tee "/home/${RUNNER}/.ssh/known_hosts" \ && chmod 644 "/home/${RUNNER}/.ssh/known_hosts" \ - && chown -R ${RUNNER}:${RUNNER} "/home/${RUNNER}/.ssh" + && chown -R ${RUNNER}:${RUNNER} "/home/${RUNNER}/.ssh" \ + && printf "\n\n\tšŸ‹\t Finished building \tšŸ‹\t\n\n" -ARG BUILD_TAG_VERSION="master" +ARG BUILD_TAG_VERSION="dev" ARG BUILD_TAG="runner" ARG BUILD_REF="master" -LABEL org.opencontainers.image.vendor="catthehacker" -LABEL org.opencontainers.image.authors="me@hackerc.at" -LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/linux/${BASEIMAGE}/${IMAGE_TYPE}" -LABEL org.opencontainers.image.source="https://github.com/catthehacker/docker_images.git" +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} -LABEL org.opencontainers.image.title=${BUILD_TAG} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} LABEL org.opencontainers.image.revision=${BUILD_REF} USER ${RUNNER} diff --git a/linux/ubuntu/rust/Dockerfile b/linux/ubuntu/rust/Dockerfile new file mode 100644 index 0000000..1696fee --- /dev/null +++ b/linux/ubuntu/rust/Dockerfile @@ -0,0 +1,20 @@ +ARG IMAGE=ghcr.io/catthehacker/alpine +ARG TAG=act-latest +FROM ${IMAGE}:${TAG} + +ARG TARGETARCH +ARG TARGETVARIANT + +SHELL [ "/bin/bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c" ] +RUN set -euxo pipefail \ + && printf "Installing Rust\n" \ + && curl https://sh.rustup.rs -sSf | sh -s -- -y + +ARG BUILD_TAG_VERSION="dev" +ARG BUILD_TAG="rust" +ARG BUILD_REF="master" + +LABEL org.opencontainers.image.url="https://github.com/catthehacker/docker_images/tree/${BUILD_REF}/linux/${ImageOS}/${BUILD_TAG}/" +LABEL org.opencontainers.image.version=${BUILD_TAG_VERSION} +LABEL org.opencontainers.image.title=${BUILD_TAG}-${TARGETARCH}-${TARGETVARIANT} +LABEL org.opencontainers.image.revision=${BUILD_REF}