diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000000..a3ebf890e2 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,61 @@ +platform: 'linux/amd64' +branches: ['master'] + +pipeline: + gen-vc: + # This is what the official CI uses as well + image: 'ubuntu:latest' + secrets: + - deploy_key + commands: + # Install necessary dependencies + - apt-get update -y && apt-get install openssh-client git build-essential -y + # Build the compiler + - make + # 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 + - git config --global user.email 'vbot@rustybever.be' + - git config --global user.name 'vbot' + # Verify SSH keys + - ssh-keyscan git.rustybever.be > ~/.ssh/known_hosts + + # The following is copied over from the official repo's CI + # https://github.com/vlang/v/blob/master/.github/workflows/gen_vc.yml + - 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 'git@git.rustybever.be:vieter/vc.git' + - 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 + - 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 + - '[ $(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 main + - git -C vc push + when: + event: push + + publish: + image: woodpeckerci/plugin-docker-buildx + secrets: [ docker_username, docker_password ] + settings: + repo: chewingbever/vlang + tag: latest + dockerfile: Dockerfile.builder + platforms: [ linux/arm64/v8, linux/amd64 ] + # The build can run every time, because we should only push when there's + # actual changes + when: + event: push