mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-10-30 23:45:06 +01:00 
			
		
		
		
	Add Release action for cc-backend
This commit is contained in:
		
							
								
								
									
										331
									
								
								.github/workflows/Release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										331
									
								
								.github/workflows/Release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,331 @@ | ||||
| # See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions | ||||
|  | ||||
| # Workflow name | ||||
| name: Release | ||||
|  | ||||
| # Run on tag push | ||||
| on: | ||||
|  push: | ||||
|   tags: | ||||
|   - '**' | ||||
|  | ||||
| jobs: | ||||
|  | ||||
|   # | ||||
|   # Build on AlmaLinux 8.5 using golang-1.18.2 | ||||
|   # | ||||
|   AlmaLinux-RPM-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     # See: https://hub.docker.com/_/almalinux | ||||
|     container: almalinux:8.5 | ||||
|     # The job outputs link to the outputs of the 'rpmrename' step | ||||
|     # Only job outputs can be used in child jobs | ||||
|     outputs: | ||||
|       rpm : ${{steps.rpmrename.outputs.RPM}} | ||||
|       srpm : ${{steps.rpmrename.outputs.SRPM}} | ||||
|     steps: | ||||
|  | ||||
|     # Use dnf to install development packages | ||||
|     - name: Install development packages | ||||
|       run: | | ||||
|           dnf --assumeyes group install "Development Tools" "RPM Development Tools" | ||||
|           dnf --assumeyes install wget openssl-devel diffutils delve which npm | ||||
|           dnf --assumeyes install 'dnf-command(builddep)' | ||||
|  | ||||
|     # Checkout git repository and submodules | ||||
|     # fetch-depth must be 0 to use git describe | ||||
|     # See: https://github.com/marketplace/actions/checkout | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|         fetch-depth: 0 | ||||
|  | ||||
|     # Use dnf to install build dependencies | ||||
|     - name: Install build dependencies | ||||
|       run: | | ||||
|           wget -q http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-bin-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-src-1.18.2-1.module_el8.7.0+1173+5d37c0fd.noarch.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/go-toolset-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm | ||||
|           rpm -i go*.rpm | ||||
|           npm install --global yarn rollup svelte rollup-plugin-svelte | ||||
|           #dnf --assumeyes builddep build/package/cc-backend.spec | ||||
|  | ||||
|     - name: RPM build ClusterCockpit | ||||
|       id: rpmbuild | ||||
|       run: make RPM | ||||
|  | ||||
|     # AlmaLinux 8.5 is a derivate of RedHat Enterprise Linux 8 (UBI8), | ||||
|     # so the created RPM both contain the substring 'el8' in the RPM file names | ||||
|     # This step replaces the substring 'el8' to 'alma85'. It uses the move operation | ||||
|     # because it is unclear whether the default AlmaLinux 8.5 container contains the  | ||||
|     # 'rename' command. This way we also get the new names for output. | ||||
|     - name: Rename RPMs (s/el8/alma85/) | ||||
|       id: rpmrename | ||||
|       run: | | ||||
|         OLD_RPM="${{steps.rpmbuild.outputs.RPM}}" | ||||
|         OLD_SRPM="${{steps.rpmbuild.outputs.SRPM}}" | ||||
|         NEW_RPM="${OLD_RPM/el8/alma85}" | ||||
|         NEW_SRPM=${OLD_SRPM/el8/alma85} | ||||
|         mv "${OLD_RPM}" "${NEW_RPM}" | ||||
|         mv "${OLD_SRPM}" "${NEW_SRPM}" | ||||
|         echo "::set-output name=SRPM::${NEW_SRPM}" | ||||
|         echo "::set-output name=RPM::${NEW_RPM}" | ||||
|  | ||||
|     # See: https://github.com/actions/upload-artifact | ||||
|     - name: Save RPM as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend RPM for AlmaLinux 8.5 | ||||
|         path: ${{ steps.rpmrename.outputs.RPM }} | ||||
|     - name: Save SRPM as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend SRPM for AlmaLinux 8.5 | ||||
|         path: ${{ steps.rpmrename.outputs.SRPM }} | ||||
|  | ||||
|   # | ||||
|   # Build on UBI 8 using golang-1.18.2 | ||||
|   # | ||||
|   UBI-8-RPM-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     # See: https://catalog.redhat.com/software/containers/ubi8/ubi/5c359854d70cc534b3a3784e?container-tabs=gti | ||||
|     container: registry.access.redhat.com/ubi8/ubi:8.5-226.1645809065 | ||||
|     # The job outputs link to the outputs of the 'rpmbuild' step | ||||
|     outputs: | ||||
|       rpm : ${{steps.rpmbuild.outputs.RPM}} | ||||
|       srpm : ${{steps.rpmbuild.outputs.SRPM}} | ||||
|     steps: | ||||
|  | ||||
|     # Use dnf to install development packages | ||||
|     - name: Install development packages | ||||
|       run: dnf --assumeyes --disableplugin=subscription-manager install rpm-build go-srpm-macros rpm-build-libs rpm-libs gcc make python38 git wget openssl-devel diffutils delve which | ||||
|  | ||||
|     # Checkout git repository and submodules | ||||
|     # fetch-depth must be 0 to use git describe | ||||
|     # See: https://github.com/marketplace/actions/checkout | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|         fetch-depth: 0 | ||||
|  | ||||
|     # Use dnf to install build dependencies | ||||
|     - name: Install build dependencies | ||||
|       run: | | ||||
|           wget -q http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-bin-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/golang-src-1.18.2-1.module_el8.7.0+1173+5d37c0fd.noarch.rpm \ | ||||
|                   http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/go-toolset-1.18.2-1.module_el8.7.0+1173+5d37c0fd.x86_64.rpm | ||||
|           rpm -i go*.rpm | ||||
|           dnf --assumeyes --disableplugin=subscription-manager install npm | ||||
|           npm install --global yarn rollup svelte rollup-plugin-svelte | ||||
|           #dnf --assumeyes builddep build/package/cc-backend.spec | ||||
|  | ||||
|     - name: RPM build ClusterCockpit | ||||
|       id: rpmbuild | ||||
|       run: make RPM | ||||
|  | ||||
|     # See: https://github.com/actions/upload-artifact | ||||
|     - name: Save RPM as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend RPM for UBI 8 | ||||
|         path: ${{ steps.rpmbuild.outputs.RPM }} | ||||
|     - name: Save SRPM as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend SRPM for UBI 8 | ||||
|         path: ${{ steps.rpmbuild.outputs.SRPM }} | ||||
|  | ||||
|   # | ||||
|   # Build on Ubuntu 20.04 using official go 1.19.1 package | ||||
|   # | ||||
|   Ubuntu-focal-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     container: ubuntu:20.04 | ||||
|     # The job outputs link to the outputs of the 'debrename' step | ||||
|     # Only job outputs can be used in child jobs | ||||
|     outputs: | ||||
|       deb : ${{steps.debrename.outputs.DEB}} | ||||
|     steps: | ||||
|     # Use apt to install development packages | ||||
|     - name: Install development packages | ||||
|       run: | | ||||
|           apt update && apt --assume-yes upgrade | ||||
|           apt --assume-yes install build-essential sed git wget bash | ||||
|           apt --assume-yes install npm | ||||
|           npm install --global yarn rollup svelte rollup-plugin-svelte | ||||
|     # Checkout git repository and submodules | ||||
|     # fetch-depth must be 0 to use git describe | ||||
|     # See: https://github.com/marketplace/actions/checkout | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|         fetch-depth: 0 | ||||
|     # Use official golang package | ||||
|     - name: Install Golang | ||||
|       run: | | ||||
|           wget -q https://go.dev/dl/go1.19.1.linux-amd64.tar.gz | ||||
|           tar -C /usr/local -xzf go1.19.1.linux-amd64.tar.gz | ||||
|           export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH | ||||
|           go version | ||||
|     - name: DEB build ClusterCockpit | ||||
|       id: dpkg-build | ||||
|       run: | | ||||
|           ls -la | ||||
|           pwd | ||||
|           env | ||||
|           export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH | ||||
|           git config --global --add safe.directory $(pwd) | ||||
|           make DEB | ||||
|     - name: Rename DEB (add '_ubuntu20.04') | ||||
|       id: debrename | ||||
|       run: | | ||||
|         OLD_DEB_NAME=$(echo "${{steps.dpkg-build.outputs.DEB}}" | rev | cut -d '.' -f 2- | rev) | ||||
|         NEW_DEB_FILE="${OLD_DEB_NAME}_ubuntu20.04.deb" | ||||
|         mv "${{steps.dpkg-build.outputs.DEB}}" "${NEW_DEB_FILE}" | ||||
|         echo "::set-output name=DEB::${NEW_DEB_FILE}" | ||||
|     # See: https://github.com/actions/upload-artifact | ||||
|     - name: Save DEB as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend DEB for Ubuntu 20.04 | ||||
|         path: ${{ steps.debrename.outputs.DEB }} | ||||
|  | ||||
|   # | ||||
|   # Build on Ubuntu 20.04 using official go 1.19.1 package | ||||
|   # | ||||
|   Ubuntu-jammy-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     container: ubuntu:22.04 | ||||
|     # The job outputs link to the outputs of the 'debrename' step | ||||
|     # Only job outputs can be used in child jobs | ||||
|     outputs: | ||||
|       deb : ${{steps.debrename.outputs.DEB}} | ||||
|     steps: | ||||
|     # Use apt to install development packages | ||||
|     - name: Install development packages | ||||
|       run: | | ||||
|           apt update && apt --assume-yes upgrade | ||||
|           apt --assume-yes install build-essential sed git wget bash npm | ||||
|           npm install --global yarn rollup svelte rollup-plugin-svelte | ||||
|     # Checkout git repository and submodules | ||||
|     # fetch-depth must be 0 to use git describe | ||||
|     # See: https://github.com/marketplace/actions/checkout | ||||
|     - name: Checkout | ||||
|       uses: actions/checkout@v2 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|         fetch-depth: 0 | ||||
|     # Use official golang package | ||||
|     - name: Install Golang | ||||
|       run: | | ||||
|           wget -q https://go.dev/dl/go1.19.1.linux-amd64.tar.gz | ||||
|           tar -C /usr/local -xzf go1.19.1.linux-amd64.tar.gz | ||||
|           export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH | ||||
|           go version | ||||
|     - name: DEB build ClusterCockpit | ||||
|       id: dpkg-build | ||||
|       run: | | ||||
|           ls -la | ||||
|           pwd | ||||
|           env | ||||
|           export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH | ||||
|           git config --global --add safe.directory $(pwd) | ||||
|           make DEB | ||||
|     - name: Rename DEB (add '_ubuntu22.04') | ||||
|       id: debrename | ||||
|       run: | | ||||
|         OLD_DEB_NAME=$(echo "${{steps.dpkg-build.outputs.DEB}}" | rev | cut -d '.' -f 2- | rev) | ||||
|         NEW_DEB_FILE="${OLD_DEB_NAME}_ubuntu22.04.deb" | ||||
|         mv "${{steps.dpkg-build.outputs.DEB}}" "${NEW_DEB_FILE}" | ||||
|         echo "::set-output name=DEB::${NEW_DEB_FILE}" | ||||
|     # See: https://github.com/actions/upload-artifact | ||||
|     - name: Save DEB as artifact | ||||
|       uses: actions/upload-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend DEB for Ubuntu 22.04 | ||||
|         path: ${{ steps.debrename.outputs.DEB }} | ||||
|  | ||||
|   # | ||||
|   # Create release with fresh RPMs | ||||
|   # | ||||
|   Release: | ||||
|     runs-on: ubuntu-latest | ||||
|     # We need the RPMs, so add dependency | ||||
|     needs: [AlmaLinux-RPM-build, UBI-8-RPM-build, Ubuntu-focal-build, Ubuntu-jammy-build] | ||||
|  | ||||
|     steps: | ||||
|     # See: https://github.com/actions/download-artifact | ||||
|     - name: Download AlmaLinux 8.5 RPM | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend RPM for AlmaLinux 8.5 | ||||
|     - name: Download AlmaLinux 8.5 SRPM | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend SRPM for AlmaLinux 8.5 | ||||
|      | ||||
|     - name: Download UBI 8 RPM | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend RPM for UBI 8 | ||||
|     - name: Download UBI 8 SRPM | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend SRPM for UBI 8 | ||||
|  | ||||
|     - name: Download Ubuntu 20.04 DEB | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend DEB for Ubuntu 20.04 | ||||
|  | ||||
|     - name: Download Ubuntu 22.04 DEB | ||||
|       uses: actions/download-artifact@v2 | ||||
|       with: | ||||
|         name: cc-backend DEB for Ubuntu 22.04 | ||||
|  | ||||
|     # The download actions do not publish the name of the downloaded file, | ||||
|     # so we re-use the job outputs of the parent jobs. The files are all | ||||
|     # downloaded to the current folder. | ||||
|     # The gh-release action afterwards does not accept file lists but all | ||||
|     # files have to be listed at 'files'. The step creates one output per | ||||
|     # RPM package (2 per distro) | ||||
|     - name: Set RPM variables | ||||
|       id: files | ||||
|       run: | | ||||
|         ALMA_85_RPM=$(basename "${{ needs.AlmaLinux-RPM-build.outputs.rpm}}") | ||||
|         ALMA_85_SRPM=$(basename "${{ needs.AlmaLinux-RPM-build.outputs.srpm}}") | ||||
|         UBI_8_RPM=$(basename "${{ needs.UBI-8-RPM-build.outputs.rpm}}") | ||||
|         UBI_8_SRPM=$(basename "${{ needs.UBI-8-RPM-build.outputs.srpm}}") | ||||
|         U_2004_DEB=$(basename "${{ needs.Ubuntu-focal-build.outputs.deb}}") | ||||
|         U_2204_DEB=$(basename "${{ needs.Ubuntu-jammy-build.outputs.deb}}") | ||||
|         echo "ALMA_85_RPM::${ALMA_85_RPM}" | ||||
|         echo "ALMA_85_SRPM::${ALMA_85_SRPM}" | ||||
|         echo "UBI_8_RPM::${UBI_8_RPM}" | ||||
|         echo "UBI_8_SRPM::${UBI_8_SRPM}" | ||||
|         echo "U_2004_DEB::${U_2004_DEB}" | ||||
|         echo "U_2204_DEB::${U_2204_DEB}" | ||||
|         echo "::set-output name=ALMA_85_RPM::${ALMA_85_RPM}" | ||||
|         echo "::set-output name=ALMA_85_SRPM::${ALMA_85_SRPM}" | ||||
|         echo "::set-output name=UBI_8_RPM::${UBI_8_RPM}" | ||||
|         echo "::set-output name=UBI_8_SRPM::${UBI_8_SRPM}" | ||||
|         echo "::set-output name=U_2004_DEB::${U_2004_DEB}" | ||||
|         echo "::set-output name=U_2204_DEB::${U_2204_DEB}" | ||||
|  | ||||
|     # See: https://github.com/softprops/action-gh-release | ||||
|     - name: Release | ||||
|       uses: softprops/action-gh-release@v1 | ||||
|       if: startsWith(github.ref, 'refs/tags/') | ||||
|       with: | ||||
|         name: cc-backend-${{github.ref_name}} | ||||
|         files: | | ||||
|          ${{ steps.files.outputs.ALMA_85_RPM }} | ||||
|          ${{ steps.files.outputs.ALMA_85_SRPM }} | ||||
|          ${{ steps.files.outputs.UBI_8_RPM }} | ||||
|          ${{ steps.files.outputs.UBI_8_SRPM }} | ||||
|          ${{ steps.files.outputs.U_2004_DEB }} | ||||
|          ${{ steps.files.outputs.U_2204_DEB }} | ||||
							
								
								
									
										88
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								Makefile
									
									
									
									
									
								
							| @@ -49,6 +49,7 @@ tags: | ||||
|  | ||||
| $(VAR): | ||||
| 	@mkdir $(VAR) | ||||
| 	@touch ./var/job.db | ||||
| 	cd web/frontend && yarn install | ||||
|  | ||||
| $(DB): | ||||
| @@ -57,3 +58,90 @@ $(DB): | ||||
| $(SVELTE_TARGETS): $(SVELTE_SRC) | ||||
| 	$(info ===>  BUILD frontend) | ||||
| 	cd web/frontend && yarn build | ||||
|  | ||||
| install: $(TARGET) | ||||
| 	@WORKSPACE=$(PREFIX) | ||||
| 	@if [ -z "$${WORKSPACE}" ]; then exit 1; fi | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/usr/$(BINDIR) | ||||
| 	@install -Dpm 755 $(TARGET) $${WORKSPACE}/usr/$(BINDIR)/$(TARGET) | ||||
| 	@install -Dpm 600 configs/config.json $${WORKSPACE}/etc/$(TARGET)/$(TARGET).json | ||||
|  | ||||
| .ONESHELL: | ||||
| .PHONY: RPM | ||||
| RPM: build/package/cc-backend.spec | ||||
| 	@WORKSPACE="$${PWD}" | ||||
| 	@SPECFILE="$${WORKSPACE}/build/package/cc-backend.spec" | ||||
| 	# Setup RPM build tree | ||||
| 	@eval $$(rpm --eval "ARCH='%{_arch}' RPMDIR='%{_rpmdir}' SOURCEDIR='%{_sourcedir}' SPECDIR='%{_specdir}' SRPMDIR='%{_srcrpmdir}' BUILDDIR='%{_builddir}'") | ||||
| 	@mkdir --parents --verbose "$${RPMDIR}" "$${SOURCEDIR}" "$${SPECDIR}" "$${SRPMDIR}" "$${BUILDDIR}" | ||||
| 	# Create source tarball | ||||
| 	@COMMITISH="HEAD" | ||||
| 	@VERS=$$(git describe --tags $${COMMITISH}) | ||||
| 	@VERS=$${VERS#v} | ||||
| 	@VERS=$$(echo $$VERS | sed -e s+'-'+'_'+g) | ||||
| 	@if [ "$${VERS}" = "" ]; then VERS="$(VERSION)"; fi | ||||
| 	@eval $$(rpmspec --query --queryformat "NAME='%{name}' VERSION='%{version}' RELEASE='%{release}' NVR='%{NVR}' NVRA='%{NVRA}'" --define="VERS $${VERS}" "$${SPECFILE}") | ||||
| 	@PREFIX="$${NAME}-$${VERSION}" | ||||
| 	@FORMAT="tar.gz" | ||||
| 	@SRCFILE="$${SOURCEDIR}/$${PREFIX}.$${FORMAT}" | ||||
| 	@git archive --verbose --format "$${FORMAT}" --prefix="$${PREFIX}/" --output="$${SRCFILE}" $${COMMITISH} | ||||
| 	# Build RPM and SRPM | ||||
| 	@rpmbuild -ba --define="VERS $${VERS}" --rmsource --clean "$${SPECFILE}" | ||||
| 	# Report RPMs and SRPMs when in GitHub Workflow | ||||
| 	@if [ "$${GITHUB_ACTIONS}" = true ]; then | ||||
| 	@     RPMFILE="$${RPMDIR}/$${ARCH}/$${NVRA}.rpm" | ||||
| 	@     SRPMFILE="$${SRPMDIR}/$${NVR}.src.rpm" | ||||
| 	@     echo "RPM: $${RPMFILE}" | ||||
| 	@     echo "SRPM: $${SRPMFILE}" | ||||
| 	@     echo "::set-output name=SRPM::$${SRPMFILE}" | ||||
| 	@     echo "::set-output name=RPM::$${RPMFILE}" | ||||
| 	@fi | ||||
|  | ||||
| .ONESHELL: | ||||
| .PHONY: DEB | ||||
| DEB: build/package/cc-backend.deb.control | ||||
| 	@BASEDIR=$${PWD} | ||||
| 	@WORKSPACE=$${PWD}/.dpkgbuild | ||||
| 	@DEBIANDIR=$${WORKSPACE}/debian | ||||
| 	@DEBIANBINDIR=$${WORKSPACE}/DEBIAN | ||||
| 	@mkdir --parents --verbose $$WORKSPACE $$DEBIANBINDIR | ||||
| 	#@mkdir --parents --verbose $$DEBIANDIR | ||||
| 	@CONTROLFILE="$${BASEDIR}/build/package/cc-backend.deb.control" | ||||
| 	@COMMITISH="HEAD" | ||||
| 	@VERS=$$(git describe --tags --abbrev=0 $${COMMITISH}) | ||||
| 	@VERS=$${VERS#v} | ||||
| 	@VERS=$$(echo $$VERS | sed -e s+'-'+'_'+g) | ||||
| 	@if [ "$${VERS}" = "" ]; then VERS="$(VERSION)"; fi | ||||
| 	@ARCH=$$(uname -m) | ||||
| 	@ARCH=$$(echo $$ARCH | sed -e s+'_'+'-'+g) | ||||
| 	@if [ "$${ARCH}" = "x86-64" ]; then ARCH=amd64; fi | ||||
| 	@PREFIX="$${NAME}-$${VERSION}_$${ARCH}" | ||||
| 	@SIZE_BYTES=$$(du -bcs --exclude=.dpkgbuild "$${WORKSPACE}"/ | awk '{print $$1}' | head -1 | sed -e 's/^0\+//') | ||||
| 	@SIZE="$$(awk -v size="$$SIZE_BYTES" 'BEGIN {print (size/1024)+1}' | awk '{print int($$0)}')" | ||||
| 	#@sed -e s+"{VERSION}"+"$$VERS"+g -e s+"{INSTALLED_SIZE}"+"$$SIZE"+g -e s+"{ARCH}"+"$$ARCH"+g $$CONTROLFILE > $${DEBIANDIR}/control | ||||
| 	@sed -e s+"{VERSION}"+"$$VERS"+g -e s+"{INSTALLED_SIZE}"+"$$SIZE"+g -e s+"{ARCH}"+"$$ARCH"+g $$CONTROLFILE > $${DEBIANBINDIR}/control | ||||
| 	@mkdir --parents --verbose "$${WORKSPACE}"/$(VAR) | ||||
| 	@touch "$${WORKSPACE}"/$(VAR)/job.db | ||||
| 	@cd web/frontend && yarn install && yarn build && cd - | ||||
| 	@go build -ldflags=${LD_FLAGS} ./cmd/cc-backend | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/usr/$(BINDIR) | ||||
| 	@cp $(TARGET) $${WORKSPACE}/usr/$(BINDIR)/$(TARGET) | ||||
| 	@chmod 0755 $${WORKSPACE}/usr/$(BINDIR)/$(TARGET) | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/etc/$(TARGET) | ||||
| 	@cp configs/config.json $${WORKSPACE}/etc/$(TARGET)/$(TARGET).json | ||||
| 	@chmod 0600 $${WORKSPACE}/etc/$(TARGET)/$(TARGET).json | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/usr/lib/systemd/system | ||||
| 	@cp build/package/$(TARGET).service $${WORKSPACE}/usr/lib/systemd/system/$(TARGET).service | ||||
| 	@chmod 0644 $${WORKSPACE}/usr/lib/systemd/system/$(TARGET).service | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/etc/default | ||||
| 	@cp build/package/$(TARGET).config $${WORKSPACE}/etc/default/$(TARGET) | ||||
| 	@chmod 0600 $${WORKSPACE}/etc/default/$(TARGET) | ||||
| 	@mkdir --parents --verbose $${WORKSPACE}/usr/lib/sysusers.d | ||||
| 	@cp build/package/$(TARGET).sysusers $${WORKSPACE}/usr/lib/sysusers.d/$(TARGET).conf | ||||
| 	@chmod 0644 $${WORKSPACE}/usr/lib/sysusers.d/$(TARGET).conf | ||||
| 	@DEB_FILE="cc-metric-store_$${VERS}_$${ARCH}.deb" | ||||
| 	@dpkg-deb -b $${WORKSPACE} "$$DEB_FILE" | ||||
| 	@rm -r "$${WORKSPACE}" | ||||
| 	@if [ "$${GITHUB_ACTIONS}" = "true" ]; then | ||||
| 	@     echo "::set-output name=DEB::$${DEB_FILE}" | ||||
| 	@fi | ||||
|   | ||||
							
								
								
									
										17
									
								
								build/package/cc-backend.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								build/package/cc-backend.config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| CC_USER=clustercockpit | ||||
|  | ||||
| CC_GROUP=clustercockpit | ||||
|  | ||||
| CC_HOME=/tmp | ||||
|  | ||||
| LOG_DIR=/var/log | ||||
|  | ||||
| DATA_DIR=/var/run/cc-backend | ||||
|  | ||||
| MAX_OPEN_FILES=10000 | ||||
|  | ||||
| CONF_DIR=/etc/cc-backend | ||||
|  | ||||
| CONF_FILE=/etc/cc-backend/cc-backend.json | ||||
|  | ||||
| RESTART_ON_UPGRADE=true | ||||
							
								
								
									
										12
									
								
								build/package/cc-backend.deb.control
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								build/package/cc-backend.deb.control
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| Package: cc-backend | ||||
| Version: {VERSION} | ||||
| Installed-Size: {INSTALLED_SIZE} | ||||
| Architecture: {ARCH} | ||||
| Maintainer: thomas.gruber@fau.de | ||||
| Depends: libc6 (>= 2.2.1) | ||||
| Build-Depends: debhelper-compat (= 13), git, golang-go, npm, yarn | ||||
| Description: ClusterCockpit backend and web frontend | ||||
| Homepage: https://github.com/ClusterCockpit/cc-backend | ||||
| Source: cc-backend | ||||
| Rules-Requires-Root: no | ||||
|  | ||||
							
								
								
									
										18
									
								
								build/package/cc-backend.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								build/package/cc-backend.service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| [Unit] | ||||
| Description=ClusterCockpit backend and web frontend (cc-backend) | ||||
| Documentation=https://github.com/ClusterCockpit/cc-backend | ||||
| Wants=network-online.target | ||||
| After=network-online.target | ||||
|  | ||||
| [Service] | ||||
| EnvironmentFile=/etc/default/cc-backend | ||||
| Type=simple | ||||
| User=clustercockpit | ||||
| Group=clustercockpit | ||||
| Restart=on-failure | ||||
| TimeoutStopSec=100 | ||||
| LimitNOFILE=infinity | ||||
| ExecStart=/usr/bin/cc-backend --config ${CONF_FILE} | ||||
|  | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
							
								
								
									
										70
									
								
								build/package/cc-backend.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								build/package/cc-backend.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| Name:           cc-backend | ||||
| Version:        %{VERS} | ||||
| Release:        1%{?dist} | ||||
| Summary:        ClusterCockpit backend and web frontend | ||||
|  | ||||
| License:        MIT | ||||
| Source0:        %{name}-%{version}.tar.gz | ||||
|  | ||||
| #BuildRequires:  go-toolset | ||||
| #BuildRequires:  systemd-rpm-macros | ||||
| #BuildRequires:  npm | ||||
|  | ||||
| Provides:       %{name} = %{version} | ||||
|  | ||||
| %description | ||||
| ClusterCockpit backend and web frontend | ||||
|  | ||||
| %global debug_package %{nil} | ||||
|  | ||||
| %prep | ||||
| %autosetup | ||||
|  | ||||
|  | ||||
| %build | ||||
| #CURRENT_TIME=$(date +%Y-%m-%d:T%H:%M:\%S) | ||||
| #LD_FLAGS="-s -X main.buildTime=${CURRENT_TIME} -X main.version=%{VERS}" | ||||
| mkdir ./var | ||||
| touch ./var/job.db | ||||
| cd web/frontend && yarn install && yarn build && cd - | ||||
| go build -ldflags="-s -X main.version=%{VERS}" ./cmd/cc-backend | ||||
|  | ||||
|  | ||||
| %install | ||||
| # Install cc-backend | ||||
| #make PREFIX=%{buildroot} install | ||||
| install -Dpm 755 cc-backend %{buildroot}/%{_bindir}/%{name} | ||||
| install -Dpm 0600 configs/config.json %{buildroot}%{_sysconfdir}/%{name}/%{name}.json | ||||
| # Integrate into system | ||||
| install -Dpm 0644 build/package/%{name}.service %{buildroot}%{_unitdir}/%{name}.service | ||||
| install -Dpm 0600 build/package/%{name}.config %{buildroot}%{_sysconfdir}/default/%{name} | ||||
| install -Dpm 0644 build/package/%{name}.sysusers %{buildroot}%{_sysusersdir}/%{name}.conf | ||||
|  | ||||
|  | ||||
| %check | ||||
| # go test should be here... :) | ||||
|  | ||||
| %pre | ||||
| %sysusers_create_package scripts/%{name}.sysusers | ||||
|  | ||||
| %post | ||||
| %systemd_post %{name}.service | ||||
|  | ||||
| %preun | ||||
| %systemd_preun %{name}.service | ||||
|  | ||||
| %files | ||||
| # Binary | ||||
| %attr(-,clustercockpit,clustercockpit) %{_bindir}/%{name} | ||||
| # Config | ||||
| %dir %{_sysconfdir}/%{name} | ||||
| %attr(0600,clustercockpit,clustercockpit) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.json | ||||
| # Systemd | ||||
| %{_unitdir}/%{name}.service | ||||
| %{_sysconfdir}/default/%{name} | ||||
| %{_sysusersdir}/%{name}.conf | ||||
|  | ||||
| %changelog | ||||
| * Mon Mar 07 2022 Thomas Gruber - 0.1 | ||||
| - Initial metric store implementation | ||||
|  | ||||
							
								
								
									
										2
									
								
								build/package/cc-backend.sysusers
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								build/package/cc-backend.sysusers
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| #Type Name           ID GECOS                     Home directory           Shell | ||||
| u     clustercockpit -  "User for ClusterCockpit" /run/cc-backend /sbin/nologin | ||||
		Reference in New Issue
	
	Block a user