# SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen # # SPDX-License-Identifier: CC0-1.0 --- workflow: rules: - if: $CI_MERGE_REQUEST_IID - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG stages: - test - release - build - deploy variables: harbor_registry: "harbor.gwdg.de" harbor_repo: "sub-fe" project_name: "repdav" lint dockerfile: stage: test image: hadolint/hadolint:latest-debian before_script: - mkdir -p reports script: - hadolint --format gitlab_codeclimate Dockerfile > reports/hadolint-$(md5sum Dockerfile | cut -d" " -f1).json artifacts: name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" when: always reports: codequality: - "reports/*" paths: - "reports/*" rules: - if: $CI_MERGE_REQUEST_IID changes: - Dockerfile release: stage: release image: docker.io/node:18.12 before_script: - npm ci --unsafe-perm script: - npx semantic-release rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH build container image: stage: build image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] script: # always succeed and don't print error message - tag=$(git tag --contains $CI_COMMIT_SHORT_SHA 2>&1) || true # use tag for version if not empty; else commit sha - "[[ -n $tag ]] && export version=$tag || export version=$CI_COMMIT_SHORT_SHA" - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"},\"$harbor_registry\":{\"auth\":\"$HARBOR_ROBOT_TOKEN64\"}}}" > /kaniko/.docker/config.json - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --build-arg build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ') --build-arg vcs_ref=${CI_COMMIT_SHORT_SHA} --build-arg version=${version} --destination $CI_REGISTRY_IMAGE/$project_name:$version --destination $harbor_registry/$harbor_repo/$project_name:$version rules: # prevent job creation on release commits to $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ when: never - if: $CI_MERGE_REQUEST_IID - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG generate app sbom: stage: deploy image: docker.io/node:18.12 before_script: - npm ci --ignore-scripts - npm run build script: - npx cdxgen --type nodejs --required-only --server-url https://deps.sub.uni-goettingen.de --api-key ${DEPS_UPLOAD_TOKEN} --project-name ${project_name} --project-version ${CI_COMMIT_TAG} rules: - if: $CI_COMMIT_TAG generate container sbom: stage: deploy image: docker.io/alpine:3.16 before_script: - apk add curl - curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin script: - syft --output cyclonedx-json --file bom.json $CI_REGISTRY_IMAGE/${project_name}:${CI_COMMIT_TAG} - 'curl -X POST "https://deps.sub.uni-goettingen.de/api/v1/bom" --header "accept: application/json" --header "X-Api-Key: ${DEPS_UPLOAD_TOKEN}" --header "Content-Type: multipart/form-data" --form "autoCreate=true" --form "projectName=${project_name}-container" --form "projectVersion=${CI_COMMIT_TAG}" --form "bom=@bom.json"' rules: - if: $CI_COMMIT_TAG