From a93d1132106663a3b9cb559a3272d9d946c56f5d Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Thu, 27 Jul 2023 18:32:10 +0200 Subject: [PATCH 1/4] Makefile: Add the ability to create a source code release with all deps This adds two new recipes: "only-deps": Download all the deps required to build the project offline "release-package-source": Create a .tar.gz source release with all deps included --- .gitignore | 4 ++++ Makefile | 29 +++++++++++++++++++---------- web/app/.yarnrc | 2 ++ 3 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 web/app/.yarnrc diff --git a/.gitignore b/.gitignore index 5c34fde1..7a555744 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,10 @@ flamenco-worker.yaml flamenco-worker-credentials.yaml node_modules/ +# Directories used to store go and yarn dependencies for offline building +/vendor +/web/app/package-cache + # Directory for custom job compiler scripts: /scripts/ diff --git a/Makefile b/Makefile index e82ce733..2d083649 100644 --- a/Makefile +++ b/Makefile @@ -46,17 +46,14 @@ export CGO_ENABLED=0 all: application -# Install generators and build the software. -with-deps: - go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.9.0 - go install github.com/golang/mock/mockgen@v1.6.0 - $(MAKE) application +vendor: webapp-deps + go mod vendor vet: go vet ./... go run golang.org/x/vuln/cmd/govulncheck@latest ./... -application: webapp flamenco-manager flamenco-worker +application: webapp-deps flamenco-manager flamenco-worker flamenco-manager: $(MAKE) webapp-static @@ -93,7 +90,7 @@ flamenco-worker_race: shaman-checkout-id-setter: go build -v ${BUILD_FLAGS} ${PKG}/cmd/shaman-checkout-id-setter -webapp: +webapp-deps: yarn --cwd web/app install webapp-static: addon-packer @@ -331,6 +328,9 @@ RELEASE_PACKAGE_WINDOWS := flamenco-${VERSION}-windows-amd64.zip RELEASE_PACKAGE_EXTRA_FILES := README.md LICENSE CHANGELOG.md RELEASE_PACKAGE_SHAFILE := flamenco-${VERSION}.sha256 +RELEASE_SOURCE_ARCHIVE := flamenco-${VERSION}-src.tar +RELEASE_SOURCE_ARCHIVE_GZ := flamenco-${VERSION}-src.tar.gz + .PHONY: release-package release-package: $(MAKE) -s release-package-linux @@ -377,12 +377,21 @@ release-package-windows: zip -r -9 dist/${RELEASE_PACKAGE_WINDOWS} flamenco-manager.exe flamenco-worker.exe ${RELEASE_PACKAGE_EXTRA_FILES} tools/*-windows* @echo "Done! Created ${RELEASE_PACKAGE_WINDOWS}" +.PHONY: release-package-source +release-package-source: vendor + mkdir -p dist + rm -f dist/${RELEASE_SOURCE_ARCHIVE_GZ} + git archive -o dist/${RELEASE_SOURCE_ARCHIVE} HEAD + tar -rvf dist/${RELEASE_SOURCE_ARCHIVE} vendor web/app/package-cache + gzip dist/${RELEASE_SOURCE_ARCHIVE} + @echo "Done! Created ${RELEASE_SOURCE_ARCHIVE_GZ}" + .PHONY: publish-release-packages publish-release-packages: $(MAKE) -s check-environment - cd dist; sha256sum ${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} > ${RELEASE_PACKAGE_SHAFILE} + cd dist; sha256sum ${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} ${RELEASE_SOURCE_ARCHIVE_GZ} > ${RELEASE_PACKAGE_SHAFILE} cd dist; rsync -va \ - ${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} ${RELEASE_PACKAGE_SHAFILE} \ + ${RELEASE_PACKAGE_LINUX} ${RELEASE_PACKAGE_DARWIN} ${RELEASE_PACKAGE_WINDOWS} ${RELEASE_SOURCE_ARCHIVE_GZ} ${RELEASE_PACKAGE_SHAFILE} \ ${WEBSERVER_SSH}:${WEBSERVER_ROOT}/downloads/ -.PHONY: application version flamenco-manager flamenco-worker flamenco-manager_race flamenco-worker_race webapp webapp-static generate generate-go generate-py with-deps swagger-ui list-embedded test clean clean-webapp-static +.PHONY: application version flamenco-manager flamenco-worker flamenco-manager_race flamenco-worker_race webapp-deps webapp-static generate generate-go generate-py vendor swagger-ui list-embedded test clean clean-webapp-static diff --git a/web/app/.yarnrc b/web/app/.yarnrc new file mode 100644 index 00000000..4f5f5ec5 --- /dev/null +++ b/web/app/.yarnrc @@ -0,0 +1,2 @@ +yarn-offline-mirror "./package-cache" +yarn-offline-mirror-pruning true -- 2.30.2 From ba1572ac7b395f879c5bb6281af46e50f10a6091 Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Tue, 1 Aug 2023 14:56:12 +0200 Subject: [PATCH 2/4] Make sure yarn populates the offline package cache if it is missing --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2d083649..8b8b4122 100644 --- a/Makefile +++ b/Makefile @@ -91,7 +91,8 @@ shaman-checkout-id-setter: go build -v ${BUILD_FLAGS} ${PKG}/cmd/shaman-checkout-id-setter webapp-deps: - yarn --cwd web/app install + # We have to use --force here to ensure that the offile package cache is up to date with no missing files + yarn --cwd web/app install --force webapp-static: addon-packer $(MAKE) clean-webapp-static -- 2.30.2 From 17e07d5041515b8ba59ae6260b2f59183557085a Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Tue, 1 Aug 2023 15:16:44 +0200 Subject: [PATCH 3/4] Add a version prefix to the generated source tarball --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8b8b4122..dc185f86 100644 --- a/Makefile +++ b/Makefile @@ -382,8 +382,8 @@ release-package-windows: release-package-source: vendor mkdir -p dist rm -f dist/${RELEASE_SOURCE_ARCHIVE_GZ} - git archive -o dist/${RELEASE_SOURCE_ARCHIVE} HEAD - tar -rvf dist/${RELEASE_SOURCE_ARCHIVE} vendor web/app/package-cache + git archive --prefix=flamenco-${VERSION}/ -o dist/${RELEASE_SOURCE_ARCHIVE} HEAD + tar --transform 's,^,flamenco-${VERSION}/,' -rvf dist/${RELEASE_SOURCE_ARCHIVE} vendor web/app/package-cache gzip dist/${RELEASE_SOURCE_ARCHIVE} @echo "Done! Created ${RELEASE_SOURCE_ARCHIVE_GZ}" -- 2.30.2 From bdc63b30579a725e21c4be2f226ba5ee5a8a6ec9 Mon Sep 17 00:00:00 2001 From: Sebastian Parborg Date: Tue, 1 Aug 2023 16:28:09 +0200 Subject: [PATCH 4/4] Add webapp-deps target to webapp-static --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index dc185f86..2f2c4dbf 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ vet: go vet ./... go run golang.org/x/vuln/cmd/govulncheck@latest ./... -application: webapp-deps flamenco-manager flamenco-worker +application: flamenco-manager flamenco-worker flamenco-manager: $(MAKE) webapp-static @@ -91,10 +91,10 @@ shaman-checkout-id-setter: go build -v ${BUILD_FLAGS} ${PKG}/cmd/shaman-checkout-id-setter webapp-deps: - # We have to use --force here to ensure that the offile package cache is up to date with no missing files + # We have to use --force here to ensure that the offline package cache is up to date with no missing files yarn --cwd web/app install --force -webapp-static: addon-packer +webapp-static: webapp-deps addon-packer $(MAKE) clean-webapp-static # When changing the base URL, also update the line # e.GET("/app/*", echo.WrapHandler(webAppHandler)) -- 2.30.2