when: event: [push, cron, manual] matrix: include: - PLATFORM: rhel-9 PLATFORM_ID: el9 - PLATFORM: centos-8 PLATFORM_ID: el8 - PLATFORM: ubuntu-2204 PLATFORM_ID: 2204 - PLATFORM: ubuntu-2404 PLATFORM_ID: 2404 - PLATFORM: opensuse-155 PLATFORM_ID: suse155 - PLATFORM: alpine-320 PLATFORM_ID: alpine320 steps: # Ensures that we're always using the latest available upstream build chain # - name: Pull upstream # image: alpine:3.20 # commands: # - apk add -q --no-cache git # - git remote add upstream https://github.com/cynkra/r-builds.git # - git config --global user.email "you@example.com" # - git config --global user.name "Your Name" # - git config pull.ff only # - git fetch upstream # - git merge upstream/main --allow-unrelated-histories #. - name: Get latest R version image: alpine:3.20 commands: - apk add -q --no-cache curl - curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/r/r.rb | grep -o 'R-[0-9]*\.[0-9]*\.[0-9]*' | tr -d 'R-' | tr -d '"' > r-release-version.txt # - echo "4.3.3" > r-release-version.txt - cat r-release-version.txt backend_options: kubernetes: resources: requests: memory: 50Mi cpu: 200m limits: memory: 200Mi cpu: 500m nodeSelector: topology.kubernetes.io/region: fsn1 - name: Check if files for R version already exist in s3 environment: AWS_ACCESS_KEY_ID: from_secret: b2_application_key_id AWS_SECRET_ACCESS_KEY: from_secret: b2_application_key # AWS_REGION: s3.eu-central-003 AWS_ENDPOINT_URL: https://s3.eu-central-003.backblazeb2.com image: alpine:3.20 commands: - apk add -q --no-cache aws-cli - aws s3 ls s3://devxy-r-builds/${PLATFORM_ID}/ | tail -1 | awk '{print $NF}' | cut -c 3-7 > r_build_latest.txt - cat r_build_latest.txt backend_options: kubernetes: nodeSelector: topology.kubernetes.io/region: fsn1 # ref: https://github.com/woodpecker-ci/woodpecker/discussions/2721 - name: Build image: alpine:3.20 privileged: true environment: DOCKER_HOST: tcp://docker:2375 commands: | # docker info if [ ! -s r_build_latest.txt ] || [ ! "$(cat r-release-version.txt)" = "$(cat r_build_latest.txt)" ]; then apk add -q --no-cache py3-pip make just aws-cli docker-compose pip3 install -q b2 --break-system-packages just build-r-${PLATFORM} $(cat r-release-version.txt) fi backend_options: kubernetes: resources: requests: memory: 200Mi cpu: 500m limits: memory: 1000Mi cpu: 4000m nodeSelector: kubernetes.io/arch: "arm64" topology.kubernetes.io/region: fsn1 tolerations: - key: "CI" operator: "Equal" value: "true" effect: "NoSchedule" - name: Upload image: woodpeckerci/plugin-s3:1.3.0 pull: true settings: bucket: devxy-r-builds strip_prefix: /tmp/${PLATFORM}/ source: /tmp/${PLATFORM}/* target: ${PLATFORM_ID}/ region: s3.eu-central-003 acl: public-read access_key: from_secret: b2_application_key_id secret_key: from_secret: b2_application_key endpoint: s3.eu-central-003.backblazeb2.com overwrite: false volumes: - ci-tmp-rwx:/tmp # agent on k8s # - /tmp:/tmp # agent on VM backend_options: kubernetes: resources: requests: memory: 100Mi cpu: 200m limits: memory: 1000Mi cpu: 1000m nodeSelector: topology.kubernetes.io/region: fsn1 services: docker: environment: DOCKER_TLS_CERTDIR: "" image: docker:26-dind commands: - mkdir -p /tmp/${PLATFORM} - dockerd --tls=false --host=tcp://0.0.0.0:2375 privileged: true ports: - 2375 volumes: - ci-tmp-rwx:/tmp # agent on k8s backend_options: kubernetes: nodeSelector: kubernetes.io/arch: "arm64" topology.kubernetes.io/region: fsn1