Skip to content

Commit

Permalink
feat: improve release workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
anbraten committed Aug 23, 2021
1 parent 9830fc2 commit 4934d17
Show file tree
Hide file tree
Showing 5 changed files with 149 additions and 68 deletions.
76 changes: 32 additions & 44 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,8 @@ builds:
- -extldflags "-static"
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
skip: true
nfpms:
- id: server
package_name: server
Expand Down Expand Up @@ -102,43 +96,37 @@ nfpms:
- deb
- rpm
meta: true
dockers:
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.server
image_templates:
- "woodpeckerci/woodpecker-server:{{ .Version }}"
- "woodpeckerci/woodpecker-server:latest"
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.server.alpine
image_templates:
- "woodpeckerci/woodpecker-server:{{ .Version }}-alpine"
- "woodpeckerci/woodpecker-server:latest-alpine"
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.agent
image_templates:
- "woodpeckerci/woodpecker-agent:{{ .Version }}"
- "woodpeckerci/woodpecker-agent:latest"
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.agent.alpine
image_templates:
- "woodpeckerci/woodpecker-agent:{{ .Version }}-alpine"
- "woodpeckerci/woodpecker-agent:latest-alpine"
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.cli
image_templates:
- "woodpeckerci/woodpecker-cli:{{ .Version }}"
- "woodpeckerci/woodpecker-cli:latest"
- goos: linux
goarch: amd64
dockerfile: docker/Dockerfile.cli.alpine
image_templates:
- "woodpeckerci/woodpecker-cli:{{ .Version }}-alpine"
- "woodpeckerci/woodpecker-cli:latest-alpine"
# dockers:
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.server
# image_templates:
# - "woodpeckerci/woodpecker-server:{{ .Version }}"
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.server.alpine
# image_templates:
# - "woodpeckerci/woodpecker-server:{{ .Version }}-alpine"
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.agent
# image_templates:
# - "woodpeckerci/woodpecker-agent:{{ .Version }}"
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.agent.alpine
# image_templates:
# - "woodpeckerci/woodpecker-agent:{{ .Version }}-alpine"
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.cli
# image_templates:
# - "woodpeckerci/woodpecker-cli:{{ .Version }}"
# - goos: linux
# goarch: amd64
# dockerfile: docker/Dockerfile.cli.alpine
# image_templates:
# - "woodpeckerci/woodpecker-cli:{{ .Version }}-alpine"
archives:
- id: server
builds:
Expand Down
20 changes: 20 additions & 0 deletions .releaserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/github",
{
"assets": [
{ "path": "dist/checksums.txt", "label": "CSS distribution" },
{ "path": "dist/*.apk", "label": "JS distribution" },
{ "path": "dist/*.deb", "label": "JS distribution" },
{ "path": "dist/*.rpm", "label": "JS distribution" },
{ "path": "dist/*.tar.gz", "label": "JS distribution" },
{ "path": "dist/*.zip", "label": "JS distribution" }
]
}
]
],
"branches": ["main", "master", "release-2"]
}
74 changes: 55 additions & 19 deletions .woodpecker/.release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,69 @@ pipeline:
- git fetch --tags
- git status

release:
build:
image: ghcr.io/goreleaser/goreleaser:v0.174.1
secrets: [github_token, docker_username, docker_password]
commands:
- goreleaser release
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- export GORELEASER_CURRENT_TAG=$DRONE_TAG
- goreleaser release --skip-validate --rm-dist --skip-publish
when:
event: tag

release-snapshot:
image: ghcr.io/goreleaser/goreleaser:v0.174.1
secrets: [github_token, docker_username, docker_password]
build-docker-server:
group: build-docker
image: gcr.io/kaniko-project/executor:v1.6.0-debug
secrets: [docker_username, docker_password]
environment:
- IMAGE_TYPE=server
commands:
- .woodpecker/scripts/build-docker-image.sh
when:
event: tag

build-docker-agent:
group: build-docker
image: gcr.io/kaniko-project/executor:v1.6.0-debug
secrets: [docker_username, docker_password]
environment:
- IMAGE_TYPE=agent
commands:
- .woodpecker/scripts/build-docker-image.sh
when:
event: tag

build-docker-cli:
group: build-docker
image: gcr.io/kaniko-project/executor:v1.6.0-debug
secrets: [docker_username, docker_password]
environment:
- IMAGE_TYPE=cli
commands:
- .woodpecker/scripts/build-docker-image.sh
when:
event: tag

release:
image: gcr.io/kaniko-project/executor:v1.6.0-debug
secrets: [github_token]
commands:
- goreleaser release --snapshot
- docker image ls
- docker tag woodpeckerci/woodpecker-cli:latest woodpeckerci/woodpecker-cli:next
- docker push woodpeckerci/woodpecker-cli:next
- docker tag woodpeckerci/woodpecker-server:latest woodpeckerci/woodpecker-server:next
- docker push woodpeckerci/woodpecker-server:next
- docker tag woodpeckerci/woodpecker-agent:latest woodpeckerci/woodpecker-agent:next
- docker push woodpeckerci/woodpecker-agent:next
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- npx semantic-release
when:
event: push
branch: master

# release-github:
# image: plugins/github-release
# secrets: [github_token]
# api_key: $GITHUB_TOKEN
# files:
# - dist/checksums.txt
# - dist/*.apk
# - dist/*.deb
# - dist/*.rpm
# - dist/*.tar.gz
# title: $DRONE_TAG
# note: CHANGELOG.md
# when:
# event: tag

# depends_on:
# - "woodpecker/.test"
35 changes: 35 additions & 0 deletions .woodpecker/scripts/build-docker-image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#! /bin/sh

REGISTRY="docker.io"
IMAGE="woodpeckerci/woodpecker-$IMAGE_TYPE"
PATH_BINARY="./dist/cli_linux_amd64/woodpecker-$IMAGE_TYPE"
PATH_CONTEXT="./dist/docker-woodpecker-$IMAGE_TYPE"
PATH_DOCKERFILE="./docker/Dockerfile.cli"

mkdir -p /kaniko/.docker
echo "{\"auths\":{\"$DOCKER_REGISTRY\":{\"username\":\"$DOCKER_USERNAME\",\"password\":\"$DOCKER_PASSWORD\"}}}" \
> /kaniko/.docker/config.json

echo "Preparing build context ..."
mkdir -p $PATH_CONTEXT/
cp $PATH_BINARY $PATH_CONTEXT/
cp $PATH_DOCKERFILE $PATH_CONTEXT/Dockerfile

# prepare alpine version
mkdir -p $PATH_CONTEXT-alpine/
cp $PATH_BINARY $PATH_CONTEXT-alpine/
cp $PATH_DOCKERFILE.alpine $PATH_CONTEXT-alpine/Dockerfile

echo "Building image ..."
/kaniko/executor \
--context $PATH_CONTEXT/ \
--destination $IMAGE:latest \
--destination $IMAGE:$DRONE_TAG \

echo "Building alpine image ..."
/kaniko/executor \
--context $PATH_CONTEXT-alpine/ \
--destination $IMAGE:latest-alpine \
--destination $IMAGE:$DRONE_TAG-alpine \

echo "Done"
12 changes: 7 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,18 @@ test-lib:
test: test-lib test-agent test-server

build-agent:
$(DOCKER_RUN) go build -o build/drone-agent github.com/woodpecker-ci/woodpecker/cmd/drone-agent

build-server:
$(DOCKER_RUN) go build -o build/drone-server github.com/woodpecker-ci/woodpecker/cmd/drone-server
$(DOCKER_RUN) go build -o dist/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/drone-agent

build-frontend:
(cd web/; yarn run build)

build-server: build-frontend
$(DOCKER_RUN) go build -o dist/woodpecker-server github.com/woodpecker-ci/woodpecker/cmd/drone-server

build-cli:
$(DOCKER_RUN) go build -o dist/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/drone-server

build: build-agent build-server
build: build-agent build-server build-cli

.PHONY: release
release:
Expand Down

0 comments on commit 4934d17

Please sign in to comment.