Commit bd90d098 authored by Josef Melkus's avatar Josef Melkus
Browse files

update golang matrix so it uses one docker

parent 2520c21c
Loading
Loading
Loading
Loading
+67 −73
Original line number Diff line number Diff line
---
stages:
- "default"
  - default
Go Package:run:
  stage: "default"
  tags:
    - shared-fi
  stage: default
  image: golang:1.24
  variables:
    Go_Package_PACKAGE_NAME: ""
  services:
  - "docker:dind"
  image: "docker:latest"
  before_script:
  - "# Load dotenv from dependencies if present"
    - '# Load dotenv from dependencies if present'
    - "if [ -f build.env ]; then set -a; . build.env; set +a; fi"
  script:
  - "echo 'WARNING: multiple images detected across build steps: golang:1.24, javieraviles/zip:latest.\
    \ Falling back to per-step docker run (experimental).'"
  - "echo 'WARNING: Consider unifying build steps to a single image for better performance\
    \ and simplicity.'"
    - |-
      echo "== build =="
    mkdir -p .gitlab/steps
    cat > .gitlab/steps/build.sh << 'STEP'
    #!/bin/sh
    set -e
      #!/bin/bash
      set -e
      
@@ -44,18 +32,26 @@ Go Package:run:
      CGO_ENABLED=0 GOOS=${SYSTEM} GOARCH=${ARCHITECTURE} go build -o ./${PACKAGE_NAME}/bin/ ./cmd/...
      
      echo 'PACKAGE_NAME=$PACKAGE_NAME' >> build.env
    STEP
    chmod +x .gitlab/steps/build.sh
    docker run --rm -v "$CI_PROJECT_DIR:/ws" -w "/ws" golang:1.24 /bin/sh /ws/.gitlab/steps/build.sh
  - "echo \"== package ==\"\nmkdir -p .gitlab/steps\ncat > .gitlab/steps/package.sh\
    \ << 'STEP'\n#!/bin/sh\nset -e\nset -e\n\nif [ -d \"resources\" ]; then\n    cp\
    \ -r resources/* ./${PACKAGE_NAME}/etc/\nfi\n\nif [ -d \"doc\" ]; then\n\tcp -r\
    \ doc ./${PACKAGE_NAME}/\nfi\n\ncp LICENSE ./${PACKAGE_NAME}/\ncp README.md ./${PACKAGE_NAME}/\n\
    cp version.txt ./${PACKAGE_NAME}/\n\nzip -r \"${PACKAGE_NAME}.zip\" \"./${PACKAGE_NAME}/\"\
    \nSTEP\nchmod +x .gitlab/steps/package.sh\ndocker run --rm -v \"$CI_PROJECT_DIR:/ws\"\
    \ -w \"/ws\" javieraviles/zip:latest /bin/sh /ws/.gitlab/steps/package.sh"
    - |-
      echo "== package =="
      #!/bin/bash
      set -e
      if [ -d "resources" ]; then
          cp -r resources/* ./${PACKAGE_NAME}/etc/
      fi
      
      if [ -d "doc" ]; then
          cp -r doc ./${PACKAGE_NAME}/
      fi
      
      cp LICENSE ./${PACKAGE_NAME}/
      cp README.md ./${PACKAGE_NAME}/
      cp version.txt ./${PACKAGE_NAME}/
      
      go install github.com/sanderhahn/gozip/cmd/gozip@latest
      gozip -c "${PACKAGE_NAME}.zip" "./${PACKAGE_NAME}/"
  after_script:
  - "echo '# Staging published artifacts'"
    - echo '# Staging published artifacts'
    - |-
      ns="artifacts/Go_Package"
      mkdir -p "${'$'}ns"
@@ -63,30 +59,28 @@ Go Package:run:
      for f in ${PACKAGE_NAME}.zip; do cp -r "${'$'}f" "${'$'}ns/." || true; done
  artifacts:
    paths:
    - "artifacts/Go_Package/**"
    when: "always"
      - artifacts/Go_Package/**
    when: always
  parallel:
    matrix:
      - ARCHITECTURE:
      - "amd64"
      - "arm64"
      - "arm"
          - amd64
          - arm64
          - arm
        SYSTEM:
      - "linux"
          - linux
Go Package:aggregate:
  stage: "default"
  tags:
    - shared-fi
  stage: default
  script:
  - "echo 'Aggregating matrix artifacts for Go Package'"
  - "if ls **/build.env >/dev/null 2>&1; then cat **/build.env > agg.env; fi"
    - echo 'Aggregating matrix artifacts for Go Package'
    - if ls **/build.env >/dev/null 2>&1; then cat **/build.env > agg.env; fi
  artifacts:
    paths:
    - "artifacts/Go_Package/**"
    when: "always"
      - artifacts/Go_Package/**
    when: always
    reports:
      dotenv: "agg.env"
      dotenv: agg.env
  needs:
  - job: "Go Package:run"
    - job: Go Package:run
  dependencies:
  - "Go Package:run"
    - Go Package:run