Olle Lundberg 79f7461709 Recommend a safer find command
Piping find to xargs is dangerous as xargs will interpret any characters
defined in $IFS (Input Field Separator), usually <space><tab><newline>,
as separators in its input. This might lead to unintented operations
on files if any of the input to xargs containts any of the characters
defined in $IFS, most often this happens if a file contains a space in
its name. The safest way to execute a find | xargs is to force find to
separate its output with null characters and tell xargs to read null
characters as the delimiter AND also tell xargs to put the argument to
the command its supposed to run in quotation marks:
   `find ... -print0 | xargs -I {} -0 rm -rf "{}"`
When running with GNU find you most likely also want to add
--no-run-if-empty or -r for short:
   `find ... -print0 | xargs -I {} -0 --no-run-if-empty rm -rf "{}"`
This stops the invocation of xargs if there is no input on stdin, this
is however not portable and will break on BSD/macOS, the portability is
not a concern in this case though as the find | xargs happens in docker.

As you can see this gets unwieldly fast and despite using every
precaution, it's still not safe. When xargs is run with -0 to treat null
characters as the delimiter for its input and a file has a null
character in its name, xargs will treat the null character in the file
name as a delimiter and xargs will exhibit the same behaviour as it did
with spaces in file names.

Ahhh, isn't Unix wonderful? Loose APIs defined as untyped strings...

There is a salvation though! Most find xargs pipes are unnecessary and
can be replaced with built in functionality in find, the -exec flag.
Now, -exec comes in 2 flavours, one that is terminated with \; (the most
commonly used) and one terminated with \+ (the one most people actually
want to use). \; spawns a new invocation per found entry, thus creating
some process creation overhead. \+ instead concatenates the found
entries as arguments to the program we want to run, resulting in less
overhead and usually a faster execution.
Since find is smart enough to be aware of what constitutes an entry
(i.e it doesn't treat the entries as just a bunch of random strings to
read from stdin) it makes the whole invocation of the program, rm in
this case, safe even if it contains characters defines in $IFS or null
characters.

And with this overly elaborate commit message I bring you this 1 line
change.
2021-02-19 09:57:32 +01:00
2020-04-01 16:42:20 +02:00
2021-02-12 16:08:46 +01:00
2021-02-19 09:57:32 +01:00
2020-09-16 15:07:08 +02:00
2020-10-05 14:39:56 +02:00
2020-03-23 14:44:23 +01:00
2021-01-17 20:30:01 +00:00
2021-02-12 16:08:46 +01:00
2020-12-04 13:00:34 +01:00
2020-12-30 00:00:32 -05:00
2020-10-28 10:22:09 +01:00
2021-02-12 16:08:46 +01:00
2020-09-04 21:20:21 +08:00

headline

Backstage

License CNCF Status Main CI Build Discord Code style Codecov

What is Backstage?

Backstage is an open platform for building developer portals. Powered by a centralized service catalog, Backstage restores order to your microservices and infrastructure and enables your product teams to ship high-quality code quickly — without compromising autonomy.

Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.

service-catalog

Out of the box, Backstage includes:

  • Backstage Service Catalog for managing all your software (microservices, libraries, data pipelines, websites, ML models, etc.)
  • Backstage Software Templates for quickly spinning up new projects and standardizing your tooling with your organizations best practices
  • Backstage TechDocs for making it easy to create, maintain, find, and use technical documentation, using a "docs like code" approach
  • Plus, a growing ecosystem of open source plugins that further expand Backstages customizability and functionality

Backstage was created by Spotify but is now hosted by the Cloud Native Computing Foundation (CNCF) as a Sandbox level project. Read the announcement here.

Project roadmap

A detailed project roadmap, including already delivered milestones, is available here.

Getting Started

Check out the documentation on how to start using Backstage.

Documentation

Community

  • Discord chatroom - Get support or discuss the project
  • Good First Issues - Start here if you want to contribute
  • RFCs - Help shape the technical direction
  • FAQ - Frequently Asked Questions
  • Code of Conduct - This is how we roll
  • Adopters - Companies already using Backstage
  • Blog - Announcements and updates
  • Newsletter - Subscribe to our email newsletter
  • Backstage Community Sessions - Join monthly meetup and explore Backstage community
  • Give us a star - If you are using Backstage or think it is an interesting project, we would love a star ❤️

License

Copyright 2020-2021 © Backstage Project Authors. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page: https://www.linuxfoundation.org/trademark-usage

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

S
Description
Copy of backstage/backstage from Spotify Backstage
Readme Apache-2.0 1.3 GiB
Languages
TypeScript 93.9%
MDX 2%
JavaScript 2%
CSS 1.5%
Handlebars 0.3%