Code Monkey home page Code Monkey logo

Comments (1)

jonath92 avatar jonath92 commented on May 29, 2024

I am also looking forward to this. As a workaround I have created the following custom action, which installs and caches a single asdf plugin.

name: "Install asdf"
description: "Installs asdf"

inputs:
  plugin:
    description: "The asdf plugin to install. Must be set in ./.tool-versions"
    required: true

runs:
  using: "composite"
  steps:
    - name: Determine plugin version
      shell: bash
      id: determine_version
      run: echo "version=$(grep '^${{ inputs.plugin }}' ./.tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT

    - name: cache asdf
      id: cache-asdf
      uses: actions/cache@v3
      with:
        path: ~/.asdf
        key: ${{ runner.os }}-asdf-${{ inputs.plugin }}-${{ steps.determine_version.outputs.version }}

    - name: setup asdf
      if: steps.cache-asdf.outputs.cache-hit != 'true'
      uses: asdf-vm/actions/setup@v2

    - name: Install asdf plugin
      shell: bash
      if: steps.cache-asdf.outputs.cache-hit != 'true'
      run: |
        asdf plugin add ${{ inputs.plugin }}
        asdf install ${{ inputs.plugin }} ${{ steps.determine_version.outputs.version }}

You can test use it inside your workflow by:

name: build
on:
  push:
    branches: main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Cache and install java
        uses: ./.github/actions/install-and-cache-asdf-plugins
        with:
          plugin: java

With the following directory structure:

├── .github
│   ├── actions
│   │   └── install-and-cache-asdf-plugins
│   │       └── action.yml
│   └── workflows
│       └── build.yml

from actions.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.