diff --git a/default.kibot.yaml b/default.kibot.yaml index 98ed39c..63bf35d 100644 --- a/default.kibot.yaml +++ b/default.kibot.yaml @@ -146,7 +146,7 @@ outputs: type: compress extends: _JLCPCB_compress options: - output: '%f_%r_JLC.%x' + output: '%f_JLC.%x' groups: diff --git a/kibot-ci.yml b/kibot-ci.yml index c649190..85a7fb6 100644 --- a/kibot-ci.yml +++ b/kibot-ci.yml @@ -10,7 +10,7 @@ variables: GIT_SUBMODULE_STRATEGY: normal GIT_SUBMODULE_FORCE_HTTPS: "true" # GIT_SUBMODULE_UPDATE_FLAGS: --remote --merge - PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/kicad/" + PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/kicad" stages: - gen_mech @@ -66,6 +66,7 @@ image: echo ${sch_arr[i-1]} python3 $CI_PROJECT_DIR/.gitlab/.scripts/orig.py ${dir_arr[i-1]} kibot -e ${dir_arr[i-1]}/${sch_arr[i-1]} -c $CI_PROJECT_DIR/.gitlab/default.kibot.yaml -d $CI_PROJECT_DIR/Fabrication/${dir_arr[i-1]} -s $SUFFIX + mv $CI_PROJECT_DIR/Fabrication/${dir_arr[i-1]}/*.zip Fabrication/ 2> /dev/null || true done - cd $CI_PROJECT_DIR @@ -105,6 +106,7 @@ image: git_tag: - | if [[ $GITLAB_CI == 'true' && $CI_COMMIT_BRANCH == "main" ]]; then + TAG=$(echo ${CI_COMMIT_MESSAGE} | tr -d \\n) echo "running git tag" git tag $CI_COMMIT_MESSAGE elif [[ $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" && "$CI_MERGE_REQUEST_TITLE" =~ [^a-zA-Z0-9.-_] ]]; then @@ -154,6 +156,9 @@ image: done fi + strip_tag: + - TAG=$(echo ${CI_COMMIT_MESSAGE} | tr -d \\n) + output_mech: stage: gen_mech artifacts: @@ -206,7 +211,6 @@ outputs_all: upload_job: stage: upload - image: curlimages/curl:latest needs: - job: outputs_all artifacts: true @@ -214,13 +218,23 @@ upload_job: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch - variables: - FAB_COMM: "curl --header \"JOB-TOKEN: ${CI_JOB_TOKEN}\" --upload-file Fabrication/$d ${PACKAGE_REGISTRY_URL}/$d" script: + - !reference [.commands, strip_tag] + - apt-get update && apt-get -y install zip curl - | - for f in $(find Fabrication/ \! -type d) + zip -r Fabrication/All.zip Fabrication/ + for d in $(find Fabrication/* -maxdepth 0 -type d) do - curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $f ${PACKAGE_REGISTRY_URL}/$(filename $f) + zip=$d.zip + zip -r $zip $d + done + for d in $(find Fabrication/ -maxdepth 1 -name '*.zip') + do + b=$(basename $d) + f=$(echo "${b%.*}") + url=${PACKAGE_REGISTRY_URL}/$TAG/$f-$TAG.zip + echo "uploading: $d to $url" + curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $d $url done artifacts: when: always @@ -228,7 +242,6 @@ upload_job: - Fabrication/**/* expire_in: 1 week - release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest @@ -239,23 +252,24 @@ release_job: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch - variables: - FAB_COMM: "echo \"--assets-link \"{\"name\":\"$d\",\"url\":\"${PACKAGE_REGISTRY_URL}/$CI_COMMIT_MESSAGE/$d\"}\" \\\"" script: + - !reference [.commands, strip_tag] + - apk add jq curl - | - echo "running release_job for $CI_COMMIT_MESSAGE" - echo "#!/bin/bash" >> fab.sh - echo "release-cli create --name \"Release $CI_COMMIT_MESSAGE\" --tag-name $CI_COMMIT_MESSAGE \\" >> fab.sh - echo "--assets-link \"{\"name\":\"All\",\"url\":\"${PACKAGE_REGISTRY_URL}/$CI_COMMIT_MESSAGE\"}\" \\" >> fab.sh - for d in $(ls -d */) + echo "running release_job for $TAG" + echo "#!/bin/sh" >> fab.sh + packid=$(curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages | jq .[0].id) + echo "release-cli create --name \"Release $TAG\" --tag-name \"$TAG\" \\" >> fab.sh + cnt=$(curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/$packid/package_files | jq length) + ids=$(curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/$packid/package_files | jq .[].id) + names=$(curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/$packid/package_files | jq .[].file_name) + i=1 + while [ "$i" -le $cnt ] do - echo "--assets-link \"{\"name\":\"$d\",\"url\":\"${PACKAGE_REGISTRY_URL}/$CI_COMMIT_MESSAGE/$d\"}\" \\" >> fab.sh + id=$(echo $ids | cut -d' ' -f $i) + name=$(echo $names | cut -d' ' -f $i) + echo " --assets-link \"{\\\"name\\\":\\\"$name\\\",\\\"url\\\":\\\"${CI_PROJECT_URL}/-/package_files/$id/download\\\"}\" \\" >> fab.sh + i=$(( i + 1 )) done - chmod u+x fab.sh - ./fab.sh - artifacts: - when: always - name: "$CI_PROJECT_TITLE-$CI_COMMIT_MESSAGE" - paths: - - Fabrication/**/* - expire_in: 1 week + chmod +x fab.sh + ./fab.sh || true