v/.woodpecker.yml

66 lines
2.2 KiB
YAML
Raw Normal View History

2022-04-15 09:52:10 +02:00
platform: linux/amd64
branch: master
pipeline:
build:
image: 'ubuntu:latest'
commands:
2022-04-17 17:29:32 +02:00
- apt-get update -y && apt-get install build-essential git -y
- make
when:
event: push
gen-vc:
# This is what the official CI uses as well
image: 'ubuntu:latest'
2022-04-17 17:19:03 +02:00
secrets:
- deploy_key
commands:
# Install ssh-agent if not present
2022-04-17 17:31:07 +02:00
- apt-get update -y && apt-get install openssh-client git -y
# Run ssh-agent
- eval $(ssh-agent -s)
# Add ssh key
- echo "$DEPLOY_KEY" | tr -d '\r' | ssh-add -
# Create ssh dir with proper permissions
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
# Configure git credentials
2022-04-17 17:19:03 +02:00
- git config --global user.email 'vbot@rustybever.be'
- git config --global user.name 'vbot'
# The following is copied over from the official repo's CI
# https://github.com/vlang/v/blob/master/.github/workflows/gen_vc.yml
2022-04-17 17:35:30 +02:00
- export "COMMIT_HASH=$(git rev-parse --short HEAD)"
- export "COMMIT_MSG=$(git log -1 --oneline --pretty='%s' HEAD)"
- rm -rf vc
- git clone --depth=1 https://git.rustybever.be/Chewing_Bever/vc
- rm -rf vc/v.c vc/v_win.c
- ./v -o vc/v.c -os cross cmd/v
- ./v -o vc/v_win.c -os windows -cc msvc cmd/v
2022-04-17 17:26:12 +02:00
- sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v.c
- sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v_win.c
# ensure the C files are over 5000 lines long, as a safety measure
2022-04-17 17:26:12 +02:00
- '[ $(wc -l < vc/v.c) -gt 5000 ]'
- '[ $(wc -l < vc/v_win.c) -gt 5000 ]'
- git -C vc add v.c v_win.c
- 'git -C vc commit -m "[v:master] $COMMIT_HASH - $COMMIT_MSG"'
# in case there are recent commits:
- git -C vc pull --rebase origin master
- git -C vc push
when:
event: push
2022-04-15 09:52:10 +02:00
publish:
image: woodpeckerci/plugin-docker-buildx
secrets: [ docker_username, docker_password ]
settings:
repo: chewingbever/vlang
tag: latest
dockerfile: Dockerfile.builder
platforms: [ linux/arm/v7, linux/arm64/v8, linux/amd64 ]
# The build can run every time, because we should only push when there's
# actual changes
when:
event: push