Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Newsroom #649

Merged
merged 14 commits into from
Sep 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions blog/_includes/nav/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<div class="mb-1 hover:underline"><a href="/customer-stories">Customer Stories</a></div>
<div class="mb-1 hover:underline"><a href="/solutions">Solutions</a></div>
<div class="mb-1 hover:underline"><a href="/faq">FAQ</a></div>
<div class="mb-1 hover:underline"><a href="/newsroom">Newsroom</a></div>
<div class="mb-1 hover:underline"><a href="/get-earthly">Download</a></div>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion website/Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ update:
build:
FROM +base-or-cache-image
CACHE _site
COPY --dir _data _sass _styles _layouts _includes assets signup .
COPY --dir _data _sass _styles _layouts _includes _news assets signup .
COPY *.md *.js *.html *.yml *.json *.rb _redirects Gemfile Gemfile.lock robots.txt .
RUN --no-cache --secret YOUTUBE_API_KEY ruby youtubeVideos.rb "$YOUTUBE_API_KEY"
RUN bundle update
Expand Down
3 changes: 3 additions & 0 deletions website/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ include:
plugins:
- jekyll-feed
- jekyll-inline-svg
collections:
news:
output: true
71 changes: 71 additions & 0 deletions website/_data/news.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
- title: Two-time founder Vlad A. Ionescu on finding success after repeated entrepreneurial failures
source: The Business of Open Source
category: Podcast
thumbnail: https://images.transistor.fm/file/transistor/images/show/10529/thumb_1656512000-artwork.jpg
link: https://share.transistor.fm/s/7bf78eb5
createdAt: 2023-08-09 00:00:00

- title: Interview With Vlad A. Ionescu
source: The Effective Developer
category: Podcast
thumbnail: https://s3-us-west-2.amazonaws.com/anchor-generated-image-bank/production/podcast_uploaded400/4655365/4655365-1586927150747-d34409b753af3.jpg
link: https://podcasters.spotify.com/pod/show/effective-developer/episodes/67---Interview-With-Vlad-A--Ionescu-e26or8q
createdAt: 2023-07-14 00:00:00

- title: Removing Complexity For The Developer Community
source: Tech & Main Presents
category: Podcast
thumbnail: https://s3-us-west-2.amazonaws.com/anchor-generated-image-bank/production/podcast_uploaded_nologo400/565515/565515-1579606981875-c66b7780e32ee.jpg
link: https://podcasters.spotify.com/pod/show/techandmain/episodes/Removing-Complexity-For-The-Developer-Community--Vlad-A--Ionescu-e265974
createdAt: 2023-06-25 00:00:00

- title: Exploring Trailblazing Business Models in the Age of Artificial Intelligence
source: The Jeff Bullas Show
category: Podcast
thumbnail: https://ssl-static.libsyn.com/p/assets/c/a/9/5/ca956ce97147d8aa/height_90_width_90_podcast-logo-02.png
link: https://thejeffbullasshow.libsyn.com/exploring-trailblazing-business-models-in-the-age-of-artificial-intelligence
createdAt: 2023-06-01 00:00:00

- title: Vlad Ionescu
source: Coffee and Open Source
category: Podcast
thumbnail: https://img.youtube.com/vi/0T9DF75lFmg/maxresdefault.jpg
link: https://www.coffeeandopensource.com/guest/vlad-ionescu.html
createdAt: 2023-05-30 00:00:00

- title: Earthly wants to reinvent continuous integration to make it faster and cheaper
subtitle: Earthly Technologies is predicated on the idea that traditional CI is too slow and expensive, and it wants to change that.
source: Tech Crunch
category: Media Coverage
thumbnail: https://techcrunch.com/wp-content/uploads/2023/02/GettyImages-1312072591.jpg?w=1390&crop=1
link: https://techcrunch.com/2023/02/23/earthly-wants-to-reinvent-continuous-integration-to-make-it-faster-and-cheaper/
#featured: true
createdAt: 2023-02-23 15:00:00

- title: Fixing the CI/CD experience with Vlad A. Ionescu
source: DevXPod
category: Podcast
thumbnail: https://storage.buzzsprout.com/variants/4daxs8kk0sjatherse0weihime2w/f6fd9b4ca4e468e7e11c8350463c894b252ee834d352e0a8d889b97ac83aedef.jpg
link: https://www.devxpod.com/1895030/10907567-fixing-the-ci-cd-experience-with-vlad-a-ionescu
createdAt: 2022-07-22 00:00:00

- title: Earthly, a CI/CD Framework that Can Run Anywhere
source: OSS Podcast
category: Podcast
thumbnail: https://ik.imagekit.io/launchnotes/production/tr:w-1640,c-at_max,f-auto/h4pdy8q4n81fef4cuu8h68guc2gg
link: https://oss-startup-podcast.launchnotes.io/announcements/episode-42-earthly-a-ci-cd-framework-that-can-run-anywhere
createdAt: 2022-07-11 00:00:00

- title: Achieve Repeatable Builds Of Your Software On Any Machine With Earthly
source: The Python Podcast.__init__
category: Podcast
thumbnail: https://assets.fireside.fm/file/fireside-images/podcasts/images/a/a8ff81d7-d84b-4c87-872a-dcde96c0b97b/cover_medium.jpg?v=0
link: https://www.pythonpodcast.com/earthly-repeatable-build-tool-episode-351/
createdAt: 2022-02-06 00:00:00

- title: "Earthly: Build Automation with Vlad Ionescu"
source: SE Daily
category: Podcast
thumbnail: https://i0.wp.com/softwareengineeringdaily.com/wp-content/uploads/2021/02/EarthlyTech.png?zoom=2&resize=730%2C389
link: https://softwareengineeringdaily.com/2021/03/01/earthly-with-vlad-ionescu/
createdAt: 2021-03-01 00:00:00
1 change: 1 addition & 0 deletions website/_includes/home/v2/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<div class="mb-1.5 hover:underline"><a href="/customer-stories">Customer Stories</a></div>
<div class="mb-1.5 hover:underline"><a href="/solutions">Solutions</a></div>
<div class="mb-1.5 hover:underline"><a href="/faq">FAQ</a></div>
<div class="mb-1.5 hover:underline"><a href="/newsroom">Newsroom</a></div>
<div class="mb-1.5 hover:underline"><a href="/get-earthly">Download</a></div>
</div>
</div>
Expand Down
30 changes: 30 additions & 0 deletions website/_includes/newsroom/cta-button.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<div class="w-full mt-16">
<div class="px-6 lg:px-10 max-w-7xl m-auto">
<div class="bg-[#f1fbff] flex flex-col items-center px-6 rounded-lg">
<p class="font-semibold pt-14 text-4xl text-center tracking-tight">
Get Started with Earthly Cloud now!
</p>

<p class="pt-6 text-center text-slate-400 text-xl">
Consistent, Fast Builds in the Cloud
</p>

<a
href="https://cloud.earthly.dev/login"
class="w-full max-w-md mb-20 mt-4 py-6 text-2xl text-center cursor-pointer shadow-sm text-white bg-[#2d7e5d] hover:bg-[#2d7e5d] rounded-lg inline-block"
onclick="bottomCtaGetStartedFreeClick()"
>
Get Started Free
</a>
</div>
</div>
</div>

<script>
function bottomCtaGetStartedFreeClick() {
analytics.track("bottom-cta-get-started-free-click", {
category: "Get Started Free Click",
label: "bottom-cta-get-started-free-click",
});
}
</script>
53 changes: 53 additions & 0 deletions website/_includes/newsroom/hero.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<main class="mb-10 mt-[70px] pt-16 lg:pt-24 relative">
<div class="flex flex-col items-center max-w-7xl mx-auto px-4 lg:px-10">
<h1 class="font-medium max-w-4xl text-[#2d7e5d] text-5xl sm:text-7xl text-center tracking-tight">Newsroom</h1>

{% assign newsData = site.data.news %}
{% for item in site.news %}
{% assign newsData = newsData | push: item %}
{% endfor %}
{% assign featured = newsData | where:"featured", true %}

<div class="flex mt-10">
{% if featured[0].category == 'Press Release' %}
<a href="{{ featured[0].link }}">
{% elsif (featured[0].category == 'Media Coverage' or featured[0].category == 'Podcast') %}
<a href="{{ featured[0].link }}" target="_blank">
{% endif %}
<div class="h-full bg-[#E8F7FE] flex flex flex-col-reverse lg:flex-row gap-6 p-6 rounded-2xl">
<div class="w-full lg:min-w-[42%] lg:max-w-[496px] h-full bg-white flex flex-1 flex-col justify-center px-8 py-10 rounded-2xl text-xl">
<div class="flex flex-wrap">
<p class="mr-1 text-sm uppercase">{{ featured[0].source }} -</p>
<time class="text-sm" datetime="{{ date | date_to_xmlschema }}">{{ featured[0].createdAt | date: "%B %-d, %Y" }}</time>
</div>
<p class="font-medium mt-8 text-[#475569]">{{ featured[0].title }}</p>
<p class="mt-4 text-lg tracking-tight">{{ featured[0].subtitle }}</p>

<div class="w-fit cursor-pointer decoration-[#2d7e5d] flex items-center mt-8 hover:underline">
<p class="font-bold text-[#2d7e5d] text-lg">
{% if (featured[0].category == 'Press Release' or featured[0].category == 'Media Coverage') %}
Read more
{% elsif featured[0].category == 'Podcast' %}
Listen
{% endif %}
</p>
<img class="ml-1" src="assets/svg/chevron-green.svg" alt="Chevron" />
</div>
</div>

{% if featured[0].thumbnail %}
<div class="w-fit lg:max-w-[632px] h-full mx-auto">
<img class="h-full object-cover rounded-2xl" src="{{ featured[0].thumbnail }}" alt="{{ item.title }}" />
</div>
{% endif %}
</div>
</a>
</div>
</div>

<div class="wave-container">
<div class="wave"></div>
<div class="wave"></div>
<div class="wave"></div>
</div>
</main>
109 changes: 109 additions & 0 deletions website/_includes/newsroom/news.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<div class="max-w-7xl mx-auto px-4 lg:px-10">
<div class="flex gap-6 lg:gap-10 justify-center mt-4">
<p id="highlight-category-0" class="highlight-category active">All</p>
<p id="highlight-category-1" class="highlight-category">Press Release</p>
<p id="highlight-category-2" class="highlight-category">Media Coverage</p>
<p id="highlight-category-3" class="highlight-category">Podcast</p>
</div>

<div class="gap-5 grid md:grid-cols-2 lg:grid-cols-3 mt-6">
{% assign newsData = site.data.news %}
{% for item in site.news %}
{% assign newsData = newsData | push: item %}
{% endfor %}

{% assign news = newsData | sort: 'createdAt' %}

{% for item in news reversed %}
{% if item.category == 'Press Release' %}
<a id="news-{{ forloop.index }}" href="{{ item.link }}" class="{% if forloop.index > 6 %}hidden{% endif %}" data-category="{{ item.category }}">
{% elsif (item.category == 'Media Coverage' or item.category == 'Podcast') %}
<a id="news-{{ forloop.index }}" href="{{ item.link }}" target="_blank" class="{% if forloop.index > 6 %}hidden{% endif %}" data-category="{{ item.category }}">
{% endif %}
<div class="h-full border border-[#D1D6D9] cursor-pointer group pb-8 pt-6 px-7 rounded-lg">
<div class="flex flex-wrap">
<p class="mr-1 text-sm uppercase">{{ item.source }} -</p>
<time class="text-sm" datetime="{{ date | date_to_xmlschema }}">{{ item.createdAt | date: "%B %-d, %Y" }}</time>
</div>

<p class="font-bold mt-4 text-[#475569] text-xl">{{ item.title }}</p>

<div class="w-fit decoration-[#2d7e5d] flex items-center mt-6 group-hover:underline">
<p class="font-bold text-[#2d7e5d] text-lg">
{% if (item.category == 'Press Release' or item.category == 'Media Coverage') %}
Read more
{% elsif item.category == 'Podcast' %}
Listen
{% endif %}
</p>
<img class="ml-1" src="assets/svg/chevron-green.svg" alt="Chevron" />
</div>
</div>
</a>
{% endfor %}
</div>

<div id="load-more-button" class="flex justify-center mt-10 {% if news.size <= 6 %}hidden{% endif %}">
<p class="border border-[#D1D6D9] cursor-pointer px-10 py-3 rounded-full text-[#6B7280] text-xl" onclick="loadMore()">Load more</p>
</div>
</div>

<script>
var allNews = document.querySelectorAll('[id^="news"]');
var news = 6;

var currentTab = 0;

const tabs = document.querySelectorAll('[id^="highlight-category"]');
tabs.forEach(tab => {
tab.addEventListener("click", e => {
const id = +e.target.id.replace("highlight-category-", "")

if (id !== currentTab) {
document.getElementById(`highlight-category-${currentTab}`).classList.remove('active')
currentTab = id
document.getElementById(`highlight-category-${currentTab}`).classList.add('active')

switch (document.getElementById(`highlight-category-${currentTab}`).innerText) {
case 'All':
allNews = document.querySelectorAll('[id^="news"]')
break
case 'Press Release':
allNews = document.querySelectorAll('[id^="news"][data-category="Press Release"]')
document.querySelectorAll('[id^="news"]:not([data-category="Press Release"])').forEach(x => x.classList.add('hidden'))
break
case 'Media Coverage':
allNews = document.querySelectorAll('[id^="news"][data-category="Media Coverage"]')
document.querySelectorAll('[id^="news"]:not([data-category="Media Coverage"])').forEach(x => x.classList.add('hidden'))
break
case 'Podcast':
allNews = document.querySelectorAll('[id^="news"][data-category="Podcast"]')
document.querySelectorAll('[id^="news"]:not([data-category="Podcast"])').forEach(x => x.classList.add('hidden'))
break
default:
break
}

allNews.forEach((x, i) => {
if (i < 6) x.classList.remove('hidden')
else x.classList.add('hidden')
})

news = 6
if (allNews.length <= 6) document.getElementById('load-more-button').classList.add('hidden')
else document.getElementById('load-more-button').classList.remove('hidden')
}
})
})

function loadMore() {
news += 6

allNews.forEach(item => {
const id = +item.id.replace("news-", "")
if (id <= news) item.classList.remove('hidden')
})

if (news >= allNews.length) document.getElementById('load-more-button').classList.add('hidden')
}
</script>
30 changes: 30 additions & 0 deletions website/_layouts/news.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
layout: default
---

<div class="mt-[70px] pt-6">
<div class="max-w-4xl mx-auto px-6 lg:px-10">
<a href="/newsroom" class="flex items-center">
<img src="/assets/svg/back.svg" alt="Back" />
<p class="font-bold ml-1 text-[#2463eb] text-lg">Newsroom</p>
</a>

<div class="flex items-center pt-10">
<div class="flex flex-wrap font-bold text-[#2d7e5d]">
<time class="text-sm" datetime="{{ date | date_to_xmlschema }}">{{ page.createdAt | date: "%B %-d, %Y" }} -</time>
<p class="ml-1 text-sm uppercase">{{ page.source }}</p>
</div>

<a href="{{ page.originalLink }}" target="_blank" class="ml-1">
<img src="/assets/svg/link.svg" alt="Link" />
</a>
</div>

<h1 class="font-bold mt-4 text-[#1f2937] text-3xl">{{ page.title }}</h1>
<p class="leading-10 mt-6 text-[#64748b] text-2xl">{{ page.subtitle }}</p>

<section class="news-content">{{ content }}</section>
</div>

{% include newsroom/cta-button.html %}
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: Earthly Launches Free Tier of its Fast, Consistent & Easy-to-Use SaaS Build Automation Platform
subtitle: The new offering gives developers 6,000 minutes per month of Earthly Cloud’s remote build runners and continuous integration
source: Business Wire
category: Press Release
thumbnail: ../assets/img/earthly-logo-news.png
link: /news/Earthly-Launches-Free-Tier-of-its-Fast-Consistent-Easy-to-Use-SaaS-Build-Automation-Platform
originalLink: https://www.businesswire.com/news/home/20230801391405/en/Earthly-Launches-Free-Tier-of-its-Fast-Consistent-Easy-to-Use-SaaS-Build-Automation-Platform
createdAt: 2023-08-01 00:00:00
featured: true
layout: news
---

SAN FRANCISCO--([BUSINESS WIRE](https://www.businesswire.com/))--[Earthly Technologies](https://earthly.dev/), the company behind the popular open source developer tool [Earthly](https://earthly.dev/earthly-core) – the super simple build framework with consistent builds that you write once and run anywhere – announces today the launch of a free tier of its software-as-a-service (SaaS) build automation platform, [Earthly Cloud](https://earthly.dev/earthly-cloud). This new, free offering provides developers with 6,000 minutes per month of Earthly Cloud’s consistent, fast continuous integration (CI) and remote build runners that are compatible with any CI system.

{: .news-quote}
Switching to Earthly took our builds from 45 minutes to 20 minutes, and using Earthly Satellites took us from like 20 minutes to 4 or 5 on average. We experienced another 2x increase, literally just from using Satellites.

Earthly Cloud makes modern, complex software builds fast and easy. Its automatic parallel execution and instantly available build cache require no effort from the developer and make every build faster. All builds also have the consistency Earthly offers. If a build runs on a developer's laptop, it'll run the same way in CI.

"Earthly Cloud's speed is game-changing for development teams. Builds are ridiculously fast - usually at least twice as fast as in CI. When a whole team is getting faster builds, it saves a lot of time. I’m excited that we are offering a free tier that will make Earthly Cloud accessible to a broader range of developers and teams,” said Vlad A. Ionescu, founder and CEO of Earthly Technologies.

Earthly Cloud’s key features are [Earthly Satellites](https://earthly.dev/earthly-satellites) and [Earthly CI](https://earthly.dev/). Earthly Satellites are remote build runners that make builds fast, are super simple to use, and work seamlessly with any CI and the developer’s laptop. Earthly CI is a full-fledged CI system that uses Earthly Satellites under the hood. Earthly Cloud’s free tier gives users 6,000 build minutes per month to be used across Satellites and CI.

“Switching to Earthly took our builds from forty-five minutes to twenty minutes, and using Earthly Satellites took us from like twenty minutes to four or five on average. We experienced another 2x increase, literally just from using Satellites,” said Ses Goe, Director of Internal Tools at [NOCD](https://www.treatmyocd.com/).

To get started with Earthly Cloud for free, visit [https://cloud.earthly.dev/login](https://cloud.earthly.dev/login).

Read the Earthly Cloud free tier [launch blog](https://earthly.dev/blog/earthly-cloud-free-tier-launch/) and visit [earthly.dev](https://earthly.dev/) for more information.

{: .news-about-block}
**About Earthly Technologies**
Earthly makes builds super simple. Its products include the open source Earthly – the super simple build framework with consistent builds that you write once and run anywhere; and Earthly Cloud – the SaaS build automation platform with consistent builds, ridiculous speed, a next-gen developer experience, and compatibility with any CI.
Loading