Loading .gitlab-ci-bc-Go_Package.yml +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 Loading @@ -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" Loading @@ -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 Loading
.gitlab-ci-bc-Go_Package.yml +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 Loading @@ -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" Loading @@ -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