when: event: [push, cron, manual] clone: git: image: woodpeckerci/plugin-git:2.5.0 backend_options: kubernetes: nodeSelector: topology.kubernetes.io/region: fsn1 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 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: 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_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: library/docker:26.1.4-dind-alpine3.20 # agent on k8s image: alpine:3.20 # agent on VM 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: nodeSelector: kubernetes.io/arch: "arm64" topology.kubernetes.io/region: fsn1 tolerations: - key: "CI" operator: "Equal" value: "true" effect: "NoSchedule" # volumes: # - /var/run/docker.sock:/var/run/docker.sock # agent on VM # - /tmp:/tmp # agent on VM - name: Upload image: pats22/s3-plugin:latest pull: true settings: bucket: devxy-r-builds strip_prefix: /tmp/${PLATFORM}/ source: /tmp/${PLATFORM}/* target: ${PLATFORM_ID}/ region: 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-fsn1:/tmp # agent on k8s # - /tmp:/tmp # agent on VM backend_options: kubernetes: nodeSelector: topology.kubernetes.io/region: fsn1 services: docker: environment: DOCKER_TLS_CERTDIR: "" image: docker:26-dind commands: dockerd --tls=false --host=tcp://0.0.0.0:2375 privileged: true ports: - 2375 volumes: - ci-tmp-fsn1:/tmp # agent on k8s backend_options: kubernetes: nodeSelector: topology.kubernetes.io/region: fsn1