| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| {%- macro github_header() -%} |
| # NOTE: must set "Crossbow" as name to have the badge links working in the |
| # github comment reports! |
| name: Crossbow |
| on: |
| push: |
| branches: |
| - "*-github-*" |
| {% endmacro %} |
| |
| {%- macro github_checkout_arrow(fetch_depth=1) -%} |
| - name: Checkout Arrow |
| uses: actions/checkout@v2 |
| with: |
| fetch-depth: {{ fetch_depth }} |
| path: arrow |
| repository: {{ arrow.github_repo }} |
| ref: {{ arrow.head }} |
| submodules: recursive |
| {% endmacro %} |
| |
| {%- macro github_login_dockerhub() -%} |
| - name: Login to Dockerhub |
| uses: docker/login-action@v1 |
| with: |
| username: {{ '${{ secrets.DOCKERHUB_USER }}' }} |
| password: {{ '${{ secrets.DOCKERHUB_TOKEN }}' }} |
| {% endmacro %} |
| |
| {%- macro github_login_ghcr() -%} |
| - name: Login to GitHub Container Registry |
| shell: bash |
| run: docker login ghcr.io -u {{ '${{ github.repository_owner }}' }} -p {{ '${{ secrets.CROSSBOW_GHCR_TOKEN }}' }} |
| {% endmacro %} |
| |
| {%- macro github_install_archery() -%} |
| - name: Set up Python |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.8 |
| - name: Install Archery |
| shell: bash |
| run: pip install -e arrow/dev/archery[all] |
| {% endmacro %} |
| |
| {%- macro github_upload_releases(pattern) -%} |
| - name: Set up Python |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.8 |
| - name: Setup Crossbow |
| shell: bash |
| run: pip install -e arrow/dev/archery[crossbow-upload] |
| - name: Upload artifacts |
| shell: bash |
| run: | |
| archery crossbow \ |
| --queue-path $(pwd) \ |
| --queue-remote {{ queue_remote_url }} \ |
| upload-artifacts \ |
| --sha {{ task.branch }} \ |
| --tag {{ task.tag }} \ |
| {% if pattern is string %} |
| "{{ pattern }}" |
| {% elif pattern is iterable %} |
| {% for p in pattern %} |
| "{{ p }}" {{ "\\" if not loop.last else "" }} |
| {% endfor %} |
| {% endif %} |
| env: |
| CROSSBOW_GITHUB_TOKEN: {{ '${{ secrets.CROSSBOW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}' }} |
| {% endmacro %} |
| |
| {%- macro github_upload_gemfury(pattern) -%} |
| {%- if arrow.branch == 'master' -%} |
| - name: Upload package to Gemfury |
| shell: bash |
| run: | |
| path=$(ls {{ pattern }}) |
| curl -F "package=@${path}" https://${CROSSBOW_GEMFURY_TOKEN}@push.fury.io/${CROSSBOW_GEMFURY_ORG}/ |
| env: |
| CROSSBOW_GEMFURY_TOKEN: {{ '${{ secrets.CROSSBOW_GEMFURY_TOKEN }}' }} |
| CROSSBOW_GEMFURY_ORG: {{ '${{ secrets.CROSSBOW_GEMFURY_ORG }}' }} |
| {% endif %} |
| {% endmacro %} |
| |
| {%- macro azure_checkout_arrow() -%} |
| - script: | |
| git clone --no-checkout --branch {{ arrow.branch }} {{ arrow.remote }} arrow |
| git -C arrow checkout {{ arrow.head }} |
| git -C arrow submodule update --init --recursive |
| displayName: Clone arrow |
| {% endmacro %} |
| |
| {%- macro azure_upload_releases(pattern) -%} |
| - task: UsePythonVersion@0 |
| inputs: |
| versionSpec: '3.8' |
| - script: pip install -e arrow/dev/archery[crossbow-upload] |
| displayName: Install Crossbow |
| - bash: | |
| archery crossbow \ |
| --queue-path $(pwd) \ |
| --queue-remote {{ queue_remote_url }} \ |
| upload-artifacts \ |
| --sha {{ task.branch }} \ |
| --tag {{ task.tag }} \ |
| {% if pattern is string %} |
| "{{ pattern }}" |
| {% elif pattern is iterable %} |
| {% for p in pattern %} |
| "{{ p }}" {{ "\\" if not loop.last else "" }} |
| {% endfor %} |
| {% endif %} |
| env: |
| CROSSBOW_GITHUB_TOKEN: $(CROSSBOW_GITHUB_TOKEN) |
| displayName: Upload packages as a GitHub release |
| {% endmacro %} |
| |
| {%- macro azure_upload_anaconda(pattern) -%} |
| {%- if arrow.branch == 'master' -%} |
| - task: CondaEnvironment@1 |
| inputs: |
| packageSpecs: 'anaconda-client' |
| installOptions: '-c conda-forge' |
| updateConda: no |
| - script: | |
| conda install -y anaconda-client |
| anaconda -t $(CROSSBOW_ANACONDA_TOKEN) upload --force {{ pattern }} |
| displayName: Upload packages to Anaconda |
| {% endif %} |
| {% endmacro %} |
| |
| {%- macro travis_checkout_arrow() -%} |
| - git clone --no-checkout --branch {{ arrow.branch }} {{ arrow.remote }} arrow |
| - git -C arrow checkout {{ arrow.head }} |
| - git -C arrow submodule update --init --recursive |
| {% endmacro %} |
| |
| {%- macro travis_install_archery() -%} |
| - sudo -H pip3 install --upgrade pip |
| - sudo -H pip3 install docker-compose |
| - sudo -H pip3 install -e arrow/dev/archery[docker] |
| {% endmacro %} |
| |
| {%- macro travis_docker_login() -%} |
| - echo "${DOCKERHUB_TOKEN}" | docker login --username "${DOCKERHUB_USER}" --password-stdin |
| {% endmacro %} |
| |
| {%- macro travis_upload_releases(pattern) -%} |
| - sudo -H pip3 install pygit2==1.0 cryptography==36 |
| - sudo -H pip3 install -e arrow/dev/archery[crossbow-upload] |
| - | |
| archery crossbow \ |
| --queue-path $(pwd) \ |
| --queue-remote {{ queue_remote_url }} \ |
| upload-artifacts \ |
| --sha {{ task.branch }} \ |
| --tag {{ task.tag }} \ |
| {% if pattern is string %} |
| "{{ pattern }}" |
| {% elif pattern is iterable %} |
| {% for p in pattern %} |
| "{{ p }}" {{ "\\" if not loop.last else "" }} |
| {% endfor %} |
| {% endif %} |
| {% endmacro %} |
| |
| {%- macro travis_upload_gemfury(pattern) -%} |
| {%- if arrow.branch == 'master' -%} |
| - | |
| WHEEL_PATH=$(echo arrow/python/repaired_wheels/*.whl) |
| curl \ |
| -F "package=@${WHEEL_PATH}" \ |
| "https://${CROSSBOW_GEMFURY_TOKEN}@push.fury.io/${CROSSBOW_GEMFURY_ORG}/" |
| {% endif %} |
| {% endmacro %} |
| |
| {%- macro configure_homebrew_arrow(formula) -%} |
| - name: Configure Homebrew formula for testing |
| env: |
| ARROW_FORMULA: ./arrow/dev/tasks/homebrew-formulae/{{ formula }} |
| run: | |
| brew update |
| brew --version |
| brew unlink python@2 || true |
| brew config |
| brew doctor || true |
| |
| ARROW_GLIB_FORMULA=$(echo ${ARROW_FORMULA} | sed -e 's/\.rb/-glib.rb/') |
| echo "ARROW_GLIB_FORMULA=${ARROW_GLIB_FORMULA}" >> ${GITHUB_ENV} |
| for formula in ${ARROW_FORMULA} ${ARROW_GLIB_FORMULA}; do |
| if [ ! -f ${formula} ]; then |
| continue |
| fi |
| # Pin the current commit in the formula to test so that |
| # we're not always pulling from master |
| sed -i '' -E \ |
| -e 's@https://github.com/apache/arrow.git"$@{{ arrow.remote }}.git", revision: "{{ arrow.head }}"@' \ |
| ${formula} |
| # Sometimes crossbow gives a remote URL with .git and sometimes not. |
| # Make sure there's only one |
| sed -i '' -E -e 's@.git.git@.git@' ${formula} |
| cp ${formula} $(brew --repository homebrew/core)/Formula/ |
| done |
| {% endmacro %} |