| name: Automerge | 
 |  | 
 | concurrency: | 
 |   group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }} | 
 |   cancel-in-progress: true | 
 |  | 
 | on: | 
 |   push: | 
 |   pull_request: | 
 |  | 
 | jobs: | 
 |  | 
 |  | 
 |   Pipeline: | 
 |     if: ${{ !(github.event_name != 'pull_request' && github.actor == 'dependabot[bot]') }} | 
 |     uses: ./.github/workflows/Tests.yml | 
 |  | 
 |  | 
 |   GCS: | 
 |     if: ${{ !(github.event_name != 'pull_request' && github.actor == 'dependabot[bot]') }} | 
 |     needs: Pipeline | 
 |     container: ubuntu:bionic | 
 |     runs-on: | 
 |       - self-hosted | 
 |       - Linux | 
 |       - X64 | 
 |  | 
 |     env: | 
 |       MAX_CORES: 80 | 
 |       GHA_EXTERNAL_DISK: "tools" | 
 |       GHA_SA: "gh-sa-f4pga-arch-defs-ci" | 
 |  | 
 |     steps: | 
 |  | 
 |       - name: '📤 Download artifact: arch-defs packages' | 
 |         uses: actions/download-artifact@v4 | 
 |         with: | 
 |           name: packages | 
 |           path: './' | 
 |  | 
 |       - name: 🕐 Timestamp, Hash and packages.list | 
 |         id: timestamp | 
 |         run: | | 
 |           TIMESTAMP="$(date +'%Y%m%d-%H%M%S')" | 
 |           echo '::set-output name=timestamp::'"$TIMESTAMP" | 
 |  | 
 |           echo 'Timestamp: '"$TIMESTAMP" >> $GITHUB_STEP_SUMMARY | 
 |           echo 'Hash: '"$(echo symbiflow-arch-defs*.tar.xz | sed 's/.*-\(.*\)\.tar\.xz/\1/')" >> $GITHUB_STEP_SUMMARY | 
 |  | 
 |           ls *.tar.xz > packages.list | 
 |  | 
 |           mkdir -p install | 
 |  | 
 |       - name: '🛠️ Setup Python and gsutil' | 
 |         run: | | 
 |           apt update -qqy | 
 |           apt install -qqy curl python3 gnupg2 | 
 |           echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list | 
 |           curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - | 
 |           apt update -qqy | 
 |           apt install -qqy google-cloud-cli | 
 |  | 
 |       - name: 🚀 Upload to Google Cloud Storage (GCS) bucket | 
 |         run: | | 
 |           python3 - <<EOF | 
 |           from subprocess import check_call, run | 
 |           from pathlib import Path | 
 |           from re import compile as re_compile | 
 |           TIMESTAMP = '${{ steps.timestamp.outputs.timestamp }}' | 
 |           DO_UPLOAD = '${{ github.event_name == 'push' && github.ref_name == 'main' }}' == 'true' | 
 |           print(f'> TIMESTAMP: {TIMESTAMP}') | 
 |           PACKAGE_RE = re_compile("symbiflow-arch-defs-([a-zA-Z0-9_-]+)-([a-z0-9])") | 
 |  | 
 |           def write_latest(package_name, timestamp, artifact): | 
 |             with (Path("install") / f"symbiflow-{package_name}-latest").open("w") as wptr: | 
 |                 wptr.write( | 
 |                     'https://storage.googleapis.com/symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/' | 
 |                     f'symbiflow-arch-defs/continuous/install/{TIMESTAMP}/{artifact}' | 
 |                 ) | 
 |  | 
 |           with (Path(__file__).parent.parent.parent / 'packages.list').open('r') as rptr: | 
 |               for artifact in rptr.read().splitlines(): | 
 |                   if DO_UPLOAD: | 
 |                     check_call([ | 
 |                       'gsutil', 'cp', str(artifact), | 
 |                       f'gs://symbiflow-arch-defs/artifacts/prod/foss-fpga-tools/symbiflow-arch-defs/continuous/install/{TIMESTAMP}/' | 
 |                     ]) | 
 |                   m = PACKAGE_RE.match(artifact) | 
 |                   assert m, f"Package name not recognized! {artifact}" | 
 |                   package_name = m.group(1) | 
 |                   write_latest(package_name, TIMESTAMP, artifact) | 
 |                   if package_name == 'install-xc7': | 
 |                       write_latest('toolchain', TIMESTAMP, artifact) | 
 |                   if package_name == 'benchmarks-xc7': | 
 |                       write_latest('benchmarks', TIMESTAMP, artifact) | 
 |  | 
 |           if DO_UPLOAD: | 
 |             run('gsutil -m rsync $* -r install gs://${{ secrets.GCP_STORAGE_BUCKET }}/', shell=True, check=False) | 
 |           EOF | 
 |  | 
 |       - name: '📤 Upload artifact: latest' | 
 |         uses: actions/upload-artifact@v3 | 
 |         with: | 
 |           name: latest | 
 |           path: install | 
 |  | 
 |  | 
 |   Assets: | 
 |     if: ${{ !(github.event_name != 'pull_request' && github.actor == 'dependabot[bot]') && (github.event_name == 'push' && github.ref_name == 'main')}} | 
 |     needs: GCS | 
 |     runs-on: ubuntu-latest | 
 |  | 
 |     steps: | 
 |  | 
 |       - name: '📤 Download artifact: latest' | 
 |         uses: actions/download-artifact@v4 | 
 |         with: | 
 |           name: latest | 
 |           path: install | 
 |  | 
 |       - uses: pyTooling/Actions/releaser@r0 | 
 |         with: | 
 |           token: ${{ github.token }} | 
 |           tag: latest | 
 |           files: install/* | 
 |  | 
 |  | 
 |   Automerge: | 
 |     needs: Pipeline | 
 |     if: github.event_name == 'pull_request' && github.actor == 'dependabot[bot]' | 
 |     runs-on: ubuntu-latest | 
 |     name: Automerge dependabot PRs | 
 |     permissions: | 
 |       contents: write | 
 |  | 
 |     steps: | 
 |  | 
 |       - name: Auto-merge Dependabot PR | 
 |         run: GITHUB_TOKEN='${{ github.token }}' gh pr merge '${{ github.event.pull_request.html_url }}' --squash |