From 062579d66fddc736e5854c1ec687008fbf217c89 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sat, 29 Jan 2022 13:58:55 +0100 Subject: [PATCH] Run pipeline for binary files on pull if go code changed (#722) * run pipeline for binary files on pull if go code changed * add release-dryrun * run "test" only if go code changes * fix-build-checksum --- .woodpecker/binaries.yml | 126 +++++++++++++++++++++++++++++++++++++++ .woodpecker/docker.yml | 8 +-- .woodpecker/main.yml | 65 -------------------- .woodpecker/test.yml | 65 +++++++++++++++++--- Makefile | 2 +- 5 files changed, 189 insertions(+), 77 deletions(-) create mode 100644 .woodpecker/binaries.yml delete mode 100644 .woodpecker/main.yml diff --git a/.woodpecker/binaries.yml b/.woodpecker/binaries.yml new file mode 100644 index 000000000..2a592651e --- /dev/null +++ b/.woodpecker/binaries.yml @@ -0,0 +1,126 @@ +depends_on: + - test + - web + +pipeline: + build-web: + image: node:16-alpine + commands: + - cd web/ + - yarn install --frozen-lockfile + - yarn build + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + # web source code + - "web/**" + + build-server: + group: build + image: golang:1.16 + commands: + - make release-server + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + # web source code + - "web/**" + + build-agent: + group: build + image: golang:1.16 + commands: + - make release-agent + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + + build-cli: + group: build + image: golang:1.16 + commands: + - make release-cli + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + + build-deb-rpm: + group: bundle + image: golang:1.16 + commands: + - make bundle + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + # web source code + - "web/**" + + checksums: + image: golang:1.16 + commands: + - make release-checksums + when: + path: + include: + # related config files + - ".woodpecker/binaries.yml" + - "nfpm/*.yml" + # go source code + - "**/*.go" + - "go.*" + # web source code + - "web/**" + + # TODO: upload build artifacts for pushes to ${CI_REPO_DEFAULT_BRANCH} + + release-dryrun: + image: golang:1.16 + commands: + - ls -la dist/*.* + - cat dist/checksums.txt + + release: + image: plugins/github-release + secrets: + - source: github_token + target: github_release_api_key + settings: + files: + - dist/*.tar.gz + - dist/*.deb + - dist/*.rpm + - dist/checksums.txt + title: ${CI_COMMIT_TAG##v} + when: + event: tag + # path conditions are ignored for tag events diff --git a/.woodpecker/docker.yml b/.woodpecker/docker.yml index 2e1200e80..41c36675f 100644 --- a/.woodpecker/docker.yml +++ b/.woodpecker/docker.yml @@ -1,3 +1,7 @@ +depends_on: + - test + - web + pipeline: build-web: image: node:16-alpine @@ -217,7 +221,3 @@ pipeline: tag: [latest-alpine, "${CI_COMMIT_TAG}-alpine"] when: event: tag - -depends_on: - - test - - web diff --git a/.woodpecker/main.yml b/.woodpecker/main.yml deleted file mode 100644 index b8139c789..000000000 --- a/.woodpecker/main.yml +++ /dev/null @@ -1,65 +0,0 @@ -pipeline: - build-web: - image: node:16-alpine - commands: - - cd web/ - - yarn install --frozen-lockfile - - yarn build - - build-server: - group: build - image: golang:1.16 - commands: - - make release-server - - build-agent: - group: build - image: golang:1.16 - commands: - - make release-agent - when: - event: tag - - build-cli: - group: build - image: golang:1.16 - commands: - - make release-cli - when: - event: tag - - build-deb-rpm: - group: bundle - image: golang:1.16 - commands: - - make bundle - when: - event: tag - - checksums: - image: golang:1.16 - commands: - - make release-checksums - when: - event: tag - - # TODO: upload build artifacts for pushes to ${CI_REPO_DEFAULT_BRANCH} - - release: - image: plugins/github-release - secrets: - - source: github_token - target: github_release_api_key - settings: - files: - - dist/*.tar.gz - - dist/*.deb - - dist/*.rpm - - dist/checksums.txt - title: ${CI_COMMIT_TAG##v} - when: - event: tag - -depends_on: - - test - - web diff --git a/.woodpecker/test.yml b/.woodpecker/test.yml index 9a1403a36..7cd8e444a 100644 --- a/.woodpecker/test.yml +++ b/.woodpecker/test.yml @@ -4,6 +4,14 @@ pipeline: commands: - mkdir -p web/dist/ - echo "test" > web/dist/index.html + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" lint: image: golang:1.16 @@ -13,11 +21,12 @@ pipeline: when: path: include: - - "vendor/**" - - "go.mod" - - "go.sum" - - "**/*.go" + # related config files + - ".woodpecker/test.yml" - ".golangci.yml" + # go source code + - "**/*.go" + - "go.*" test: image: golang:1.16 @@ -30,10 +39,11 @@ pipeline: when: path: include: - - "vendor/**" - - "go.mod" - - "go.sum" + # related config files + - ".woodpecker/test.yml" + # go source code - "**/*.go" + - "go.*" sqlite: image: golang:1.16 @@ -42,6 +52,14 @@ pipeline: - WOODPECKER_DATABASE_DRIVER=sqlite3 commands: - make test-server-datastore + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" postgres: image: golang:1.16 @@ -51,6 +69,14 @@ pipeline: - WOODPECKER_DATABASE_DATASOURCE=host=service-postgres user=postgres dbname=postgres sslmode=disable commands: - make test-server-datastore + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" mysql: image: golang:1.16 @@ -60,6 +86,14 @@ pipeline: - WOODPECKER_DATABASE_DATASOURCE=root@tcp(service-mysql:3306)/test?parseTime=true commands: - make test-server-datastore + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" services: service-postgres: @@ -68,9 +102,26 @@ services: environment: - POSTGRES_USER=postgres - POSTGRES_HOST_AUTH_METHOD=trust + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" + service-mysql: image: mysql:5.6.27 ports: ["3306"] environment: - MYSQL_DATABASE=test - MYSQL_ALLOW_EMPTY_PASSWORD=yes + when: + path: + include: + # related config files + - ".woodpecker/test.yml" + # go source code + - "**/*.go" + - "go.*" diff --git a/Makefile b/Makefile index 0147c2925..245c99281 100644 --- a/Makefile +++ b/Makefile @@ -128,7 +128,7 @@ release-cli: release-checksums: # generate shas for tar files - (cd dist/; sha256sum *.{tar.gz,apk,deb,rpm} > checksums.txt) + (cd dist/; sha256sum *.* > checksums.txt) release: release-frontend release-server release-agent release-cli