#################################################################################################### ## NOTE: Environment variables not declared within the actual "script"s sections, are being read ## ## from bitbucket's repository/workspace variables' configuration page or the Docker container. ## #################################################################################################### image: name: docker-registry.mysmartpbx.org:5000/kazoo_firewall_agent:1.0-rockylinux-9 username: $DOCKER_REGISTRY_USERNAME password: $DOCKER_REGISTRY_PASSWORD # Keeping this parameter just for historic and documentation reasons: # If "run-as-user" parameter is set to a given user ID (UID) and the given UID does not exist on # the configured Docker Image, some steps may work as expected but there won't be any output from # the pipelines steps available on the Pipelines UI. Not matter if the pipeline succeeds or not, # not output will be available. Once you remove (or comment) the parameter, steps continue working # as expected and they will also contain all the expected output from the steps' scripts. #run-as-user: 1000 # circleci UID from main docker image. definitions: caches: go-deps-cache: key: files: - go.mod path: $HOME/go steps: - step: &default name: "default" runs-on: - "self.hosted" - "linux" - step: &info-step name: "Informational step" clone: enabled: false image: "alpine" # Image size is only 5MB! Remember to override it in future steps if needed. - step: &build-rpm-packages <<: *default name: "Build RockyLinux9 RPM packages" caches: - go-deps-cache script: - | echo "Preparing source for packaging" mkdir -vp /tmp/packaging/rpmbuild/{SOURCES,BUILD,BUILDROOT,i386,x86_64,SPECS} mkdir -vp /tmp/packaging/${BITBUCKET_REPO_SLUG} cp -R ./* /tmp/packaging/${BITBUCKET_REPO_SLUG} cp ./kfa.spec /tmp/packaging/rpmbuild/SPECS/. cd /tmp/packaging echo " - removing files that should not be packaged in the source tar" rm -rf ${BITBUCKET_REPO_SLUG}/*.org rm -rf ${BITBUCKET_REPO_SLUG}/*.md rm -rf ${BITBUCKET_REPO_SLUG}/.git* echo " - creating the source tar" tar -zcvf ${BITBUCKET_REPO_SLUG}.tar.gz ${BITBUCKET_REPO_SLUG} cp ${BITBUCKET_REPO_SLUG}.tar.gz rpmbuild/SOURCES/. - | echo "Packaging" rpmbuild \ --define "_topdir %(pwd)/rpmbuild" \ --define "_rpmdir %{_topdir}" \ --define "_srcrpmdir %{_topdir}" \ --define "custom_version 1.0" \ -vv -bb rpmbuild/SPECS/kfa.spec mv /tmp/packaging/rpmbuild/x86_64 $BITBUCKET_CLONE_DIR/RPMS - | cd $BITBUCKET_CLONE_DIR echo "Pushing STEP artifacts to artifacts repository" ROS_VERSION=$(rpm -E %{rhel}) export ARTIFACTS_FILENAME=artifacts-${BITBUCKET_REPO_SLUG}-build${BITBUCKET_BUILD_NUMBER}-rocky${ROS_VERSION}-step${BITBUCKET_STEP_UUID}-${BITBUCKET_STEP_RUN_NUMBER}.tar.gz echo " - compressing artifacts into ${ARTIFACTS_FILENAME}" tar zcvf /tmp/${ARTIFACTS_FILENAME} RPMS/** export SKIP_METADATA=1 # Instruct upload_pkgs.sh script to skip triggering repositories metadata update. echo " - pushing compressed artifacts to artifacts server" /tmp/packager/upload_pkgs.sh "$YUM_REPOSITORY_CREDS" "/artifacts" /tmp/$ARTIFACTS_FILENAME artifacts: - RPMS/** pipelines: custom: # Manual builds. pull_artifact_push_packages: - variables: - name: ARTIFACT_NAME description: "Name of the artifact. HINT: can be seen in the output of the step that uploads it." - name: ROCKY_OS_VERSION description: "RockyLinux OS version these packages were created for. e.g.: 8. NOTE: Used for filtering files to upload and to know to which folder to upload the packages to." default: "9" allowed-values: - "8" - "9" - name: STABILITY description: "Package stability level." default: "staging" allowed-values: - "stable" - "staging" - "experimental" - step: name: "Pull artifacts & push packages to YUM repository" clone: enabled: false # Not need for the repository content for this step. script: - export ARTIFACTS_URL="http://${YUM_REPOSITORY_CREDS}@docker-registry.mysmartpbx.org/artifacts" - export RPMS_LISTING_PATTERN="RPMS/*\.el${ROCKY_OS_VERSION}\.*\.rpm" - env # Helpful for debugging purposes. - curl -v $ARTIFACTS_URL/$ARTIFACT_NAME -o $ARTIFACT_NAME - tar xvf $ARTIFACT_NAME - ls -lah $RPMS_LISTING_PATTERN - export UPLOAD_URI="/packages/upload/rockylinux/${ROCKY_OS_VERSION}/${STABILITY}/" - /tmp/packager/upload_pkgs.sh "$YUM_REPOSITORY_CREDS" "${UPLOAD_URI}" "${RPMS_LISTING_PATTERN}" branches: 'master': - parallel: name: "Build Rocky 9 packages" steps: - step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. <<: *info-step script: - echo "Pipeline triggered by a change on ${BITBUCKET_BRANCH} branch" - step: <<: *build-rpm-packages pull-requests: '**': - parallel: name: "Build Rocky 9 packages" steps: - step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. <<: *info-step script: - echo "Pipeline triggered by a PR change" - step: <<: *build-rpm-packages tags: '**': - parallel: name: "Build Rocky 9 packages" steps: - step: # Informational step only. I find pipelines lack to appropiately tell what triggered the build. <<: *info-step script: - echo "Pipeline triggered by a brand new TAG" - step: <<: *build-rpm-packages