Figcd - Continues Delivery for Figma Plugins

During the development of Parrot, I found immense inspiration from the exceptional work of other talented creators and contributors like @Gleb, @tonypinkevych and the entire community! Your dedication and passion fueled my own journey.

Today, I’m excited to give back and share something valuable as well.

Introducing
figcd(GitHub - parrot-global/figcd: Figma Plugin CLI Publisher)
– an opensource tool aimed at making publishing of new versions of Figma plugins seamless and hassle-free.

Now that the Parrot Plugin is live, I’ve become acutely aware of the laborious and error-prone steps involved in releasing a new version of a Figma plugin.

Before

  1. commit and push changes to the repository
  2. building the plugin code for production
  3. updating version numbers
  4. :see_no_evil: realizing that 3. should have happend before 2. to work properly with mixedpanel
  5. publishing to Sentry
  6. Preparing release in the Figma App and press publish

:technologist: :woman_technologist::sloth: :sleeping: :face_with_symbols_over_mouth:

Comming from Backend and Mobile App development and used to tools like fastlane or helm this felt a bit wonky and very slow.

With figcd this happens all in the background with a single command - that is meant to run in your github workflow.

With figcd

npx figcd release

:rocket: :robot: :partying_face: :tada: .

I hope this helps others facing the same - if you have any feedback please open an Issue in the repo or comment below.

Last but not least: Please help me to grow the bird!

If you like to see more like this please support me and help to spread the news about the recently published Parrot Plugin!
Checkout the latest version, leave a heart on the community page and don’t hesitate to reach out for any feedback or ideas that could make it better!

Best regards Martin :parrot:

3 Likes

Congrats on the launch!

1 Like

Hi @parrot, awesome tool! I’m trying to integrate figcd with GitHub Actions and I have a question.

Do I need to authenticate and update the GitHub secret every time I release? It seems like the token expires. Is there a way to use a personal access token instead?

Thanks!

Hey @atrutt, great you are using it and you have been able to set it all up - Looks like the docs and prompts are doing its job :wink:

Regarding your question: yes the token expires from time to time. I updated it in github ~ once a month for Parrot. I will double check if a normal access key would do the trick as well - but i am afraid the api to upload the builds require a web auth token. I will double check and come back to you. If you want to contribute you can also check the sources - happy to merge in suggestions.

Best Regards
Martin

1 Like

Thanks Martin! Yes, your docs were really easy to follow (especially since it was my first time using GitHub Actions). Thanks for making something so cool and covering a gap in the plugin development process.

I did check with a normal access key and I believe it doesn’t work. Having the context that updating the secret ~once a month is helpful, I was mainly worried that I would have to update it every time I wanted to release.

@atrutt, I thought about it - i recall a time where i used a token longer than a month. this was during a period where i published on very short intervals (1-5 days). It might be that the expiration of the token is based on the last usage or something like that. I coudn’t find a refresh / access token exchange in the request done by Figma and the api is “private” and not documented but i will investigate further. Please let me know if i can support you further

1 Like

Oh nice! Thanks for that info and your prompt support, very appreciated.

Some small clarifications to the documentation may be helpful. For example, I wasn’t sure how to format the plugin description. I did some digging and it seems that you can provide it as an HTML string in a .txt file. Example: "<h2>Plugin title</h2><p>Description text</p>" You can see how Figma formats the description using the developer panel.

Also, I found it helpful to provide my plugin’s name and description as env variables publish.yml file.

env:
  FIGMA_WEB_AUTHN_TOKEN: ${{ secrets.FIGMA_WEB_AUTHN_TOKEN }}
  STORE_NAME: "Name"
  TAGLINE: "Description here"
  DESCRIPTION_FILE: "pluginDescription.txt"

npx figcd release -n "$STORE_NAME" -tl "$TAGLINE" -df "$DESCRIPTION_FILE"

That’s definitely just my own preference but it may be a handy example for people?

It would be really cool if you could manage image assets (icon and cover image) in the release but I’m not sure what kind of restrictions would be involved.

Again, thanks for your awesome work. I’m really psyched that this is working for my plugin!

1 Like

I checked the tokens again - the calls I use to publish only allow the webauth tokens - I don’t see a way around renewal of token from time to time without support from Figma for now. Who could be involved on this topic @Josh ?

@atrutt You are right in some fields like description and release notes support a html subset.
Using env vars to inject the store_name tagline is an interesting approach as well!
I will add those informations to the readme as soon as i find some time :wink:

Image upload would round up the tool and could be done in the same way the tool uploads the build. I didn’t have the need for it since the image change rather seldom and can be changed in the portal without republishing.

1 Like