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..2f2c4dbf 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: flamenco-manager flamenco-worker flamenco-manager: $(MAKE) webapp-static @@ -93,10 +90,11 @@ flamenco-worker_race: shaman-checkout-id-setter: go build -v ${BUILD_FLAGS} ${PKG}/cmd/shaman-checkout-id-setter -webapp: - yarn --cwd web/app install +webapp-deps: + # 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)) @@ -331,6 +329,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 +378,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 --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}" + .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