Immediate download GitHub Actions in Action MEAP V03 Michael Kaufmann ebooks 2024

remmyruanoh2 11 views 58 slides Dec 18, 2024
Slide 1
Slide 1 of 58
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58

About This Presentation

Download GitHub Actions in Action MEAP V03 Michael Kaufmann right after payment at https://ebookname.com/product/github-actions-in-action-meap-v03-michael-kaufmann. Get more textbooks and ebooks in https://ebookname.com/ Get full chapter PDF.


Slide Content

Download the full version of the ebook at ebookname.com
GitHub Actions in Action MEAP V03 Michael Kaufmann
https://ebookname.com/product/github-actions-in-action-
meap-v03-michael-kaufmann/
OR CLICK BUTTON
DOWNLOAD EBOOK
Download more ebook instantly today at https://ebookname.com

Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...
Bootstrapping Microservices Second Edition With Docker
Kubernetes GitHub Actions and Terraform Ashley Davis
https://ebookname.com/product/bootstrapping-microservices-second-
edition-with-docker-kubernetes-github-actions-and-terraform-ashley-
davis/
ebookname.com
Elementary Algebra 9th Edition Jerome E. Kaufmann
https://ebookname.com/product/elementary-algebra-9th-edition-jerome-e-
kaufmann/
ebookname.com
Learn SQL in a Month of Lunches MEAP V13 Jeff Iannucci
https://ebookname.com/product/learn-sql-in-a-month-of-lunches-
meap-v13-jeff-iannucci/
ebookname.com
Elem Math and Comp Tools for Engineers using MATLAB 1st
Edition Jamal T. Manassah
https://ebookname.com/product/elem-math-and-comp-tools-for-engineers-
using-matlab-1st-edition-jamal-t-manassah/
ebookname.com

Side by Side Book 1 Teacher s Guide 3rd Edition Steven J.
Molinsky
https://ebookname.com/product/side-by-side-book-1-teacher-s-guide-3rd-
edition-steven-j-molinsky/
ebookname.com
Understanding Chronic Fatigue Syndrome An Introduction for
Patients and Caregivers 1st Edition Naheed Ali
https://ebookname.com/product/understanding-chronic-fatigue-syndrome-
an-introduction-for-patients-and-caregivers-1st-edition-naheed-ali/
ebookname.com
About Thalassaemia Dr. Androulla Efeftheriou
https://ebookname.com/product/about-thalassaemia-dr-androulla-
efeftheriou/
ebookname.com
Writing in the Academic Disciplines Second Edition A
Curricular History Professor David R Russell
https://ebookname.com/product/writing-in-the-academic-disciplines-
second-edition-a-curricular-history-professor-david-r-russell/
ebookname.com
Marketing Tips for Complementary Therapists 101 Tried and
Tested Ways to Attract and Retain Clients 2nd Edition
Steven A. Harold
https://ebookname.com/product/marketing-tips-for-complementary-
therapists-101-tried-and-tested-ways-to-attract-and-retain-
clients-2nd-edition-steven-a-harold/
ebookname.com

Branding and Sustainable Competitive Advantage Building
Virtual Presence 1st Edition Avinash Kapoor
https://ebookname.com/product/branding-and-sustainable-competitive-
advantage-building-virtual-presence-1st-edition-avinash-kapoor/
ebookname.com

GitHub Actions in Action
1. welcome
2. 1_Introduction_to_GitHub_Actions
3. 2_Hands-on:_My_first_Actions_Workflow
4. 3_Workflows
5. 4_GitHub_Actions
6. 5_Runners
7. 6_Self-hosted_runners
8. 7_Managing_your_self-hosted_runners
9. 8_Continuous_Integration_(CI)

welcome
Thank you for purchasing the MEAP for GitHub Actions in Action. We hope
it will give you a kick-start into what is in our opinion the best and most
flexible workflow platform for engineers.
The book consists of three parts. Part 1 explains the basics of GitHub actions.
It uses a practical, hands-on approach – but it covers all basics with simple
examples. Part 2 explains the workflow runtime in depth. This knowledge
will help you completely understand the platform's architecture and security
considerations. Part 3 covers the whole topic of CI/CD – the main use case
for GitHub Actions. This part contains more complex real-life examples. It
also dives into security, compliance, and optimizing performance and costs.
Please let us know your thoughts in the liveBook Discussion forum on what's
been written so far [and what you'd like to see in the rest of the book]. Your
feedback will be invaluable in improving GitHub Actions in Action.
Thanks again for your interest and for purchasing the MEAP!
—Michael Kaufmann, Rob Bos, Marcel de Vries
In this book
welcome 1 Introduction to GitHub Actions 2 Hands-on: My first Actions
Workflow 3 Workflows 4 GitHub Actions 5 Runners 6 Self-hosted runners 7
Managing your self-hosted runners 8 Continuous Integration (CI)

1 Introduction to GitHub Actions
This chapter covers the following topics
Getting an introduction to the GitHub universe
Understanding what GitHub Actions and Workflows are
Learning about the possibilities of GitHub Actions that go beyond
CI/CD pipelines
Understanding licenses and pricing for GitHub and GitHub Actions
GitHub is more than just a platform for hosting and sharing code. It has
become the beating heart of the open-source community, with millions of
developers from all over the world collaborating on projects of every type
and size. Founded in 2008, GitHub has since grown to host over 200 million
repositories and 100 million users, with a staggering 3.5 billion contributions
made in the last year alone.
And now, with GitHub Actions, developers have access to a powerful and
flexible toolset for automating their workflows, from Continuous Integration
(CI) and Continuous Deployment (CD) to custom automation tasks and
beyond. GitHub Actions is much more than just a CI/CD tool – it's a
comprehensive automation platform that can help streamline your entire
development workflow.
This book will show you how to make the most of GitHub Actions and take
your development process to the next level. It is for everyone that wants to
learn more about GitHub Actions – from complete beginners to already
advanced users that want to bring their knowledge to the next level. You will
learn how to use Actions effectively and secure, and it brings a lot of real-
world examples for using it for CI/CD scenarios.
1.1 An introduction to the GitHub universe
At the core of GitHub lies the essential component of version control, namely
git. This system has played a significant role in transforming the way in

which software is developed and is widely considered the standard for the
versioning of code, which in this case does not just refer to program code. It
includes infrastructure, configuration, documentation, and many other types
of files. Git has risen to prominence due to its remarkable flexibility, which
stems from its classification as a distributed version control system rather
than a central one. As a result, developers can work while disconnected from
the central repository, utilizing the full functionality of the version control
system, and later synchronize changes with another repository. The efficacy
of git's distributed architecture is attributed to its ability to store snapshots of
files with changes in its database.
GitHub has extended beyond its function as a hosting platform for git and has
evolved into a comprehensive DevOps platform that supports collaborative
coding through asynchronous means, such as pull requests and issues. The
platform's capabilities have expanded into six broad categories, which
include:
collaborative coding,
planning and tracking,
workflows and CI/CD,
developer productivity,
client applications, and
security.
These categories encapsulate the key features that GitHub offers, making it a
versatile and comprehensive DevOps platform that supports various stages of
software development.
From its inception, GitHub has prioritized a developer-centric approach,
resulting in a platform that places utmost importance on webhooks and APIs.
Developers can leverage either the REST API or the graph API to manipulate
all aspects of the GitHub platform. Authentication is also a straightforward
process, and developers can use GitHub as an identity provider to access their
applications. This user-friendly approach facilitates seamless integration with
other tools and platforms, making GitHub a versatile option not only for
open-source projects but also for commercial products. GitHub's extensive
ecosystem, which boasts over 100 million users, comprises the entire open-
source community, who collaborate to expand and enrich its functionality.

So, to understand the vastness of the GitHub ecosystem, one must also take
into account the various integrations available:
Planning and tracking: In addition to issues and milestones, GitHub
offers GitHub Discussions, an entire forum for collaboration on ideas.
Furthermore, GitHub Projects is a flexible planning solution that is fully
integrated with issues and pull requests, and it supports nested backlogs,
boards, and roadmaps. Moreover, GitHub integrates seamlessly with
other popular planning and tracking solutions such as Azure Boards and
Jira.
Client applications: GitHub provides a fully-featured code editor that
can be accessed directly in the browser. It also offers mobile
applications for both iOS and Android platforms, enabling teams to
collaborate from anywhere. Additionally, there is a cross-platform
desktop application and an extensible CLI available. Furthermore,
GitHub integrates smoothly with popular client applications such as
Visual Studio, Visual Studio Code, and Eclipse. Moreover, it seamlessly
integrates with popular chat platforms such as Slack and Teams.
Security: GitHub provides a comprehensive solution for ensuring
software supply-chain security, which includes several key features. For
example, it generates Software Bills of Material (SBoMs) to keep track
of all the components that are included in your software. And, with the
Dependabot functionality, GitHub can alert you whenever
vulnerabilities are detected in any of the dependencies you're using.
Furthermore, GitHub can scan your repository to detect secrets, and it
boasts a sophisticated code analysis engine called CodeQL. The
platform also supports integrations with other security tools like Snyk,
Veracode, or Checkmarx, and it can be integrated into Microsoft’s
Defender for DevOps.
Developer Productivity: In GitHub, developers can quickly create a
customized containerized development environment using GitHub
Codespaces. This allows new developers to be productive right away.
Additionally, Copilot, an AI-powered assistant, can generate code based
on the context of comments or other code. This can significantly
increase productivity, with reports of up to 50% gains. GitHub also
offers code search, the command palette, and other features that can
further enhance developer productivity.

Workflows and CI/CD: In the world of continuous integration and
continuous delivery (CI/CD), GitHub is a popular platform that enjoys
widespread support from most CI/CD tools in the market. Furthermore,
GitHub provides a secure integration with all the major cloud providers
for CI/CD workflows using Open ID Connect (OIDC). This ensures a
secure and streamlined experience for developers who rely on cloud-
based services. Additionally, GitHub Packages is equipped with a robust
package registry that supports a wide range of package formats,
providing a powerful and versatile tool for developers to manage and
distribute their code packages.
GitHub Actions serves as the automation engine for the GitHub ecosystem
(see Figure 1.1). It allows users to automate various tasks, with a vast library
of over 18,000 actions available in the marketplace. From issue triaging to
automatic documentation generation, there is a building block – called
Action – available to address nearly any task. With GitHub Actions, users
can easily and securely automate their workflows.
Figure 1.1 The GitHub ecosystem has thousands of integrations

That’s why GitHub Actions is more than just CI/CD. It is an automation
engine that can be used to automate any kind of manual tasks in engineering,
and it is already used by millions of developers worldwide. It can be used to
not only automate GitHub – but the entire GitHub Universe.
1.2 What are GitHub Actions and Workflows
GitHub Actions is both the name of the workflow engine and the name of an
individual, reusable, and easily sharable workflow step within GitHub. This
can lead to confusion. Workflows are composed of YAML files that are
stored in a specific repository location (.github/workflows). In Chapter 3,
GitHub Action Workflows, you will gain a comprehensive understanding of
GitHub Action workflows and the YAML syntax. Triggers initiate the
workflow, and one or more jobs are included in the workflow. Jobs are
executed on a workflow runner, which can be a machine or container with an
installed runner service. GitHub offers runners with Linux, macOS, and
Windows operating systems in various machine sizes, but you can also host

your own runners. In Part 2, Workflow Runtime, you will learn about runners
and the essential security measures to consider when hosting your own
runners. Jobs execute in parallel by default, but the needs property can be
used to chain jobs together. This enables you to fan out your workflow and
run multiple jobs in parallel while waiting for all parallel jobs to complete
before proceeding.
Environments in GitHub Actions provide a way to protect jobs by defining
protection rules such as manual approvals, wait timers, and protected secrets.
With this, you can create visual workflows that track for example your entire
release pipeline, giving you complete control over your deployment process.
Please refer to Figure 1.2 for an example of a workflow with environments
and approvals.
Figure 1.2 A GitHub Workflow with environments and approvals
A job is comprised of one or more steps that are executed sequentially. A step
can take the form of a command line, script, or reusable step that is easily
shareable, known as a GitHub Action. These Actions can be authored in
JavaScript or TypeScript and executed in a NodeJS environment.
Additionally, it is possible to run containers as Actions or create composite
Actions that serve as a wrapper for one or multiple other Actions. Actions are
covered in more depth in Chapter 4, GitHub Actions.
In Figure 1.3 you can see an overview of the basic elements that make up a
workflow and their syntax.

Figure 1.3 The basic syntax and elements that make up a GitHub Actions workflow
You will learn more about workflow syntax, YAML, GitHub Actions, and
authoring and debugging workflows and Actions in Chapter 3, GitHub
Action Workflows, and in Chapter 4, GitHub Actions.
1.3 GitHub Actions - More than CI/CD pipelines
GitHub workflows are intended to automate various tasks. In addition to
pushing code, there are numerous triggers available. A workflow can be
activated when a label is added to an issue, when a pull request is opened, or
when a repository is starred.
In Listing 1.1 you can find an example workflow that applies labels to opened
or edited issues based on the content of the body of the issue.
Listing 1.1 A sample GitHub Actions workflow that can help triage GitHub issues
name: Issue triage
on:
issues:
types: [opened, edited]

jobs:

triage:
runs-on: ubuntu-latest
steps:
- name: Label issue
run: |
if (contains(github.event.issue.body, 'bug')) {
echo '::add-labels: bug';
} else if (contains(github.event.issue.body, 'feature')) {
echo '::add-labels: feature';
} else {
echo 'Labeling issue as needs-triage';
echo '::add-labels: needs-triage';
}
This is just an example to show you the power of GitHub actions.
GitHub does not automatically download or clone your repository when a
workflow is executed. In many automation scenarios, the repository's code or
files may not be required, and the workflow can be completed much faster
without cloning the repository. If you intend to utilize GitHub Actions for
CI/CD purposes, the first step in a job should be to download the code by
utilizing the checkout action.:
steps:
- name: Checkout repository
uses: actions/checkout@v3
This action will clone your repository, allowing you to build and test your
solution.
In Part 3, CI/CD with GitHub Actions, you will learn in depth how to use
GitHub Actions for CI/CD in a secure and compliant way.
1.4 Hosting and pricing for GitHub and GitHub
Actions
GitHub (https://github.com) is hosted in data centers located in the United
States. Signing up for GitHub is free and provides users with unlimited
private and public repositories. While many features on GitHub are available
for free on open-source projects, they may not be available for private

repositories.
Enterprises have a variety of options for hosting GitHub (see Figure 1.4).
Figure 1.4 GitHub Enterprise Cloud, GitHub Enterprise Server, and GitHub Connect
1.4.1 GitHub Enterprise Cloud
GitHub Enterprise Cloud (GHEC) is a Software as a Service (SaaS)
offering from GitHub, and it is fully hosted on its cloud infrastructure in the
United States. GHEC provides additional security features and supports
single sign-on for users. With GHCE, users can host private and public
repositories, including open-source projects within their enterprise
environment.
GHEC guarantees a monthly uptime Service Level Agreement (SLA) of
99.9%, which translates to a maximum downtime of 45 minutes per month.
1.4.2 GitHub Enterprise Server
The GitHub Enterprise Server (GHES) is a system that can be hosted

anywhere, either in a private data center or in a cloud environment like
Azure, AWS, or GCP. Using GitHub Connect, it is possible to connect to
GitHub.com, which enables the sharing of licenses and the use of open
source on the server.
GHES is based on the same source as GHEC, which means that all features
eventually become available on the server a few months later. However,
some features provided in the cloud must be managed independently on
GHES. For instance, runners in GitHub Actions require self-hosted solutions,
whereas the cloud provides GitHub-hosted runners.
Managed Services are also available that provide hosting for GHES,
including in an Azure data center within the user's region. This approach
ensures full data residency and eliminates the need to manage the servers
personally. Some Managed Services also include hosting for managed
GitHub Actions runners.
1.4.3 Pricing for GitHub
It is important to Understand the pricing model of GitHub and GitHub
Actions when you start playing around with them, to not accidently burn
though all you free minutes.
GitHub's pricing model is based on a monthly per-user billing system and
consists of three tiers: Free, Team, and Enterprise (see Figure 1.5).
Figure 1.5 Overview of GitHub pricing triers

Public repositories, and therefore open-source projects, are entirely free of
charge and offer many features such as Actions, Packages, and various
security features. Private repositories are also available for free, but with
limited functionality, including 2,000 Action minutes and 500 MB of storage
per month.
To collaborate on private repositories with advanced features such as
protected branches, codeowners, and enhanced pull request features, a team
license is required. This license also includes access to Codespaces, although
this feature requires a separate payment. Additionally, the team tier provides
3,000 free Action minutes per month and 2GB of monthly storage for
packages.
Free and Team tiers are only available on GitHub.com. If users require
GitHub Enterprise Cloud or Server, the GitHub enterprise license must be
purchased. This license includes all enterprise features, such as single sign-
on, user management, auditing, and policies, along with 50,000 Action
minutes and 50GB of storage for packages per month. It also allows for the
purchase of additional add-ons, such as Advanced Security or Premium
Support.
1.4.4 Pricing for GitHub Actions
Hosted runners are provided for free to users with public repositories. The
amount of storage and monthly build minutes available to users depends on

their GitHub edition, as shown in Table 1.1:
Table 1.1 Included storage and minutes for the different GitHub editions
GitHub edition StorageMinutes Max concurrent jobs
GitHub Free 500 MB2,000 20 (5 for macOS)
GitHub Pro 1 GB 3,000 40 (5 for macOS)
GitHub Free for
organizations
500 MB2,000 20 (5 for macOS)
GitHub Team 2 GB 3,000 60 (5 for macOS)
GitHub Enterprise
Cloud
50 GB50,000 180 (50 for macOS)
If you have purchased GitHub Enterprise through your Microsoft Enterprise
Agreement, it is possible to link your Azure Subscription ID to your GitHub
Enterprise account. This will allow you to use Azure Billing to pay for
additional GitHub Actions usage beyond what is already included in your
GitHub edition.
It is important to note that jobs running on Windows and macOS runners
consume more build minutes than those running on Linux. Windows
consumes build minutes at a rate of 2x and macOS consumes build minutes at
a rate of 10x, meaning that using 1,000 Windows minutes would use up
2,000 of the minutes included in your account, while using 1,000 macOS
minutes would use up 10,000 minutes included in your account. This is due
to the higher cost of build minutes on these operating systems.
Users can pay for additional build minutes on top of what is included in their
GitHub edition, with the following build minute costs for each operating
system:
Linux: $0.008
macOS: $0.08
Windows: $0.016
These prices are for the standard machines with 2 cores.
The charges for extra storage are uniform for all runners, set at $0.25 per GB.

In Chapter 5, Runners, you will learn in more detail, how minutes and extra
storage are calculated.
If you are a customer who is billed monthly, your account is subject to a
default spending limit of $0 (USD), which restricts the use of extra storage or
build minutes. However, if you pay by invoice, your account is given an
unrestricted spending limit by default.
If you set a spending limit above $0, any additional storage or minutes
utilized beyond the included amounts in your account will be invoiced until
the spending limit is reached. By setting up a spending limit, the Enterprise
Administrators will receive e-mail notifications at reaching 75%, 90%, and
100% of the spending limit, on top of the default notifications for utilizing
the same percentages of the included minutes in their monthly plan.
You won't incur any costs when using self-hosted runners since you provide
your own computing resources.
It is important that you are aware of the costs when playing around with
workflows. Especially if you try certain triggers. Best is to just use public
repos for training purposes – in this case the workflows are free of charge in
any case.
1.5 Conclusion
In this chapter, you have learned about the GitHub ecosystem and the myriad
of possibilities it offers for automating tasks, extending beyond just CI/CD,
using GitHub Actions. You have become familiar with key terms and
concepts related to Workflows and Actions, enabling you to better navigate
and utilize these features. Additionally, you have explored the hosting
options and pricing models available for both GitHub and GitHub Actions.
Moving forward, the next chapter will provide an opportunity for practical
application, as you embark on writing your first workflow. This initial
exercise will serve as a useful foundation before delving further into the
syntax and nuances of GitHub Action Workflows, which will be covered in
Chapter 3.

1.6 Summary
The GitHub universe consists of a vast ecosystem of products, partners,
and communities around the areas of collaborative coding, planning, and
tracking, workflows and CI/CD, developer productivity, client
applications, and security.
GitHub Actions is a workflow engine to automate any kind of manual
tasks in engineering in the GitHub ecosystem beyond CI/CD.
GitHub Action workflows are YAML files in a repository in the folder
.github/workflows and contain triggers, jobs, and steps.
A GitHub Action is reusable workflow step that can be easily shared
through the GitHub marketplace.
GitHub Actions are free for public repositories and paid per minute for
private ones if you use the GitHub hosted runners; but you have free
included Actions minutes in all GitHub pricing tears.
Private runners are always free – but the pricing for hosted runners
varies depending on the machine size and type.

2 Hands-on: My first Actions
Workflow
This chapter covers the following topics
Creating a new workflow
Using the workflow editor
Using actions from the marketplace
Running the workflow
Before we dive into the details of the workflow and YAML syntax in
Chapter 3, GitHub Workflows, it’s a good idea to familiarize ourselves with
the workflow editor, gain some practical experience in creating a workflow,
and test it out to see it in action. This hands-on approach will help us better
understand the concepts and give us the ability to quickly try something out,
if it is unclear. Don’t worry if there are parts of the workflow syntax that you
don’t understand yet– we’ll be covering those in detail in the upcoming
chapters.
2.1 Creating a new workflow
Let's begin this hands-on lab by signing into your GitHub account. Then,
follow the link https://github.com/new to create a new repository. To ensure
you have unlimited Action minutes, create a new public repository in your
user profile and name it ActionInAction. Initialize the repository with a
readme so that we can retrieve the files in the workflow later on. Lastly, click
on the Create repository button to complete the process (refer to Figure 2.1).
Figure 2.1 Creating a new repository

The repository
You can find companion repositories in the GitHub Organization
https://github.com/GitHubActionsInAction If you have already cloned the
companion repository https://github.com/GitHubActionsInAction/Part1, you
can also create a new workflow in this repository instead of creating a new
one.
Now, let's navigate to the Actions tab inside the repository. If this is a new
repository and there are no workflows set up yet, you will automatically be
redirected to the new Action page (Actions/new). This is the same page you

would land on if you clicked the New workflow button in the workflow
overview page, which is displayed if there are workflows in the repository.
The new workflow page presents a plethora of templates for different
languages and scenarios. You can certainly explore these available templates,
but for our first workflow, we want to create the workflow ourselves. To
proceed, simply click on the corresponding link as illustrated in Figure 2.2.
Figure 2.2 Set up a new workflow in the workflow editor
An empty workflow will be created and opened in the workflow editor.
2.2 Using the workflow editor
It's worth noting that a workflow is essentially a YAML file that resides in
the folder .github/workflows. You can modify the filename as necessary
from the top of the editor window. On the right side of the editor, you'll find
the marketplace as well as the workflow documentation. The documentation
provides valuable guidance to get you started. Moreover, the editor supports
auto-complete when you use the Ctrl+Space keyboard shortcut. To give you
a better idea of the key components of the editor, please refer to Figure 2.3.

Figure 2.3 The workflow editor
To begin, let's change the filename of the workflow file to
MyFirstWorkflow.yml. Once that's done, click into the editor and open the
auto-complete using Ctrl+Space. From the list of valid elements, choose
name. The auto-complete feature will automatically add name: including the
correct spacing to the file. Next, name the workflow My First Workflow and
hit enter to start a new line.
Now, let's add triggers that will initiate the workflow. Begin a new line and
press Ctrl+Space once again. From the options presented, select on and then
push. Auto-complete will generate the following line, which will start the
workflow upon any push in any branch:
on: [push]
Suppose you want to trigger the workflow from only certain branches. In that
case, you need to add additional parameters to the push trigger. First, delete
the [push] and press enter to start a new line. Use the tab key to get the
correct indentation. Next, press Ctrl+Space again, select push, and notice
how auto-complete now functions differently. It will automatically create a

new line and offer all the available options for the push trigger. From there,
choose branches and add the main branch, as shown in the documentation.
Create a new line with the same indentation as the push trigger and add a
workflow_dispatch trigger, which will enable you to trigger the workflow
manually. At this point, your workflow should resemble the one depicted in
Figure 2.4.
Figure 2.4 Naming the workflow and adding triggers
To add a job to the workflow, create a new line in the workflow file with no
indentation (same as name and on). Use auto-complete to write jobs: and
move to the next line. Note that auto-complete won't work here, as the name
of the job is expected. Enter MyFirstJob:, press enter to start a new line, and
tab to indent one level. Auto-complete should work again now. Choose runs-
on and enter ubuntu-latest, which will execute the job on the latest Ubuntu
machine hosted by GitHub.
Next, add a step to the job. If you choose steps from auto-complete, it will
insert a small snippet with a YAML array that you can use to enter your first
step. For example, you can output Hello World to the console using run and
echo (see Listing 2.1).

Listing 2.1 The first step outputs Hello World to the console
jobs:
MyFirstJob:
runs-on: ubuntu-latest

steps:
- run: echo "; Hello World!"
Error checking in the editor
It's important to note that if there are errors in your workflow file, the editor
will mark the corresponding parts and you can hover over it with the mouse
to get additional information and other suggestions (see Figure 2.5).
The editor will highlight structural errors, unexpected values, or even
conflicting values, such as an invalid shell value for the chosen operating
system.
Figure 2.5 Editor highlighting errors in the file and providing suggestions
In the next step we will add a GitHub Action from the marketplace.
2.3 Using actions from the marketplace
In the right pane, next to documentation, you can find the marketplace for
GitHub Actions. To locate the Checkout action from GitHub Actions, start by
typing checkout in the search bar (see Figure 2.6). Please note that the author
of the Action is not GitHub, but actions, and that it has a blue badge with a
checkmark, indicating that the author is a verified creator.
Figure 2.6 Searching in the marketplace from within the editor

If you click on the marketplace listing, you will be taken to a page with more
details about the action. You can also copy the template using the copy
button (see Figure 2.7) or copy parts of the YAML code snippet provided in
the Installation section. The parameters for the action are under the with:
property. They are all optional, so you can delete them all or just copy over
name: and uses:. Paste the action as a step to the workflow like illustrated in
Figure 2.7.
Figure 2.7 Adding the action from the marketplace to the workflow
As a last step, we add a script that displays the files in the repository using
the tree command. Use the name property to set the name that is displayed
in the workflow log. In this step we use a multi-line script using the pipe

Random documents with unrelated
content Scribd suggests to you:

Csak még egy hétig tudná titkolni a mindenkit megriasztó
igazságot!… Addig okvetetlenül megérkeznék az első segitség, s ez
éppen elég volna rá, hogy talpra állhasson, hogy összeszedhesse
magát és nemsokára megint oly erőssé váljék, mint amilyen
szerencséjének a delelőjén volt.
Hányszor adott ki egyszerre, félkézből, több pénzt, mint
amennyire most szüksége volna!… Egy-két ölelésért, hiuságból,
szeszélyből, még oktalan ellágyulásból is!… De hát hitte-e valaha,
hogy még ide juthat?!…
Hát igen, borzasztóan elszámitotta magát. Nagyon is vakmerően
játszott; a milliomok áhitozása, a mohó falánkság, mely már második
természete, elfelejttette vele a legelemibb óvatosságot is; ennyire
vakmerően nem szabad játszania annak sem, aki mindenét vakmerő
játékkal szerezte.
De ezen már nem érdemes keseregni. Ostoba volt, pont. Még ő is
megengedett magának, életében egyszer, egy ostobaságot, és ez
most elvesziti. Mindenki ostoba, aki veszit. És a legnagyobb
kockázata nem sikerült. Minden elveszett. Hát vége!… ezen nincs mit
tovább filozofálni. Mindennek vége. Az életnek is.
Mert már nincs se ereje, se kedve az életet elülről kezdeni. Ehhez
már öreg, fáradt, túlságosan kényelmes. Ha bizonyosan tudná, hogy
még egyszer eljuthat oda, ahol volt, akkor se volna hozzá kedve. Már
csak kényelemszeretetből is meg kell halnia. Már fáradt, lusta ahhoz,
hogy egy darabig szolgálni legyen kénytelen azokat, akiknek valaha
a tenyeréből adott enni. Elszokott a kellemetlenségektől, nincs már
benne a trainingben, tehát nem volna ereje hozzá, hogy el tudja
viselni a megaláztatásokat. És ha néhány évi keserves erőlködéssel,
miután az orrával szántotta a földet, miután agyongyötörte az
idegeit a sok izgalommal s a fejét a sok tanakodással, gonddal,
kieszeléssel, számitgatással, töprengéssel, ha néhány évi kinlódás
árán ujra vagyont tudna szerezni, hát érdemes-e?!… Mi hasznát
venné ennek akkor, mikor már most is öreg! Azután már eleget élt.
És miután egy hosszú életet töltött el jólétben, bőségben,

kényelemben és hatalomban, most nekifeküdjék a kinlódásnak, a
megalázkodásoknak, a verejtékezésnek?! Nem!
A családja? Hát a családja sokat fog vesziteni, annyi bizonyos. De
majd csak meglesznek valahogy. A fiai már felnőtt, jóravaló
emberek; azok majd el fogják tartani a lányokat meg az anyjukat.
Amit félrelophatott, azt már félrelopta ezeknek. Az asszonynak a
rokonsága vagyonos; neki meg a leányainak, bizony, meglehetősen
keserves lesz az új állapot, de nem maradnak kenyér nélkül.
Mi jót várhat még az élettől? Nagyon keveset. Miért vállalná a sok
rosszat, ami bizonyosan elkövetkezik, ha a bukása után is életben
marad?! Nincs mért vállalnia.
Túl van a hatvanon; ha szélütés érné, akkor is meg kellene
halnia. Ki tudja, hogy nem ez volna-e a végzete már nemsokára?! És
akkor nem a legokosabb, nem a legjobb-e mindjárt meghalnia?
Meghalni – akkor, ha elmondhatjuk, hogy: az életet is alaposan
kifosztottuk – nem olyan nagy dolog.
De a „hátha“ mégis furdalta egy kicsit.
Hátha az ékszerek minden valószinüség ellenére megérnek
annyit, amennyi elég volna a meneküléshez?
És mégis csak előkereste a szekrény felfeszitéséhez szükséges
szerszámokat.
– Ha egyszer az embert üldözni kezdi a balszerencse!… – szólt
magában, miközben kissé kényszeredetten mosolygott. – Most
kénytelen vagyok betörni magamhoz! Pedig a szekrény kulcsa nálam
van valahol. De hol? Mit tudom én! Gondoltam-e valaha arra, hogy
egyszer itt fogom keresni az életemet?!
III.

Jódarabig tartó fáradozás után – a betörésnek ebben a
kezdetleges módjában nem volt gyakorlata – sikerült felfeszitenie a
szekrényt meg az ékszertartó kaszettákat s megtalálta, amit
keresett. Nem az életét, csak az ékszereket.
Mindent gondosan szemügyre vett és megbecsült – ehhez már
értett – de az egész holmi félannyit se ért, mint amennyire szüksége
lett volna.
Minél tovább vizsgálódott, kutatott, kotorászott a mindenféle
ötvösmunka és kisebb-nagyobb értéktárgy között, annál inkább
meggyőződött róla, hogy az életet már nem mentheti meg.
Hanem időközben talált valamit, ami egy pár percre elterelte a
figyelmét erről a fődologról.
Amint egy apróságokkal telt kaszettát vizsgált át, gyémántot,
minél több és minél nagyobb gyémántot keresgélve, sok fülbevaló,
melltü, medaillon és gyürü után egy furcsa tárgy akadt a kezébe.
Egy aranyba foglalt, mogyorónagyságu, közönséges kavics.
Mi ez?
Egy kavics, amelyet aranyba foglalnak és eltesznek – ez csak
emlék lehet. Valami vidám vagy érzelmes esetnek az emléke. Talán
egy elfelejtett bolondságé, amely olyan régen történt, hogy már nem
is igaz. Talán egy elfelejthetetlen eseményé, amelynek a hatásai
esztendők hosszú során át ott rejtőznek a lélek mélyén, mint ez az
aranybafoglalt kavics az ékszertartóban.
Ki ne hallott volna efféle históriákról?!
Egy fiatal hölgyet üldöznek. A lába gyors s már-már elmenekült
az üldözője elől, de az elhatározó percben megbotlik egy kavicsban,
elesik, az üldözőnek tehát sikerül elfognia. És most egy szép regény
kezdődik, amelynek első fejezete után az üldöző megkeresi, szivéhez
szoritja és elteszi azt, aminek élete boldogságát köszöni: a kavicsot.
Aztán aranyba foglaltatja és odaadja a fiatal hölgynek, aki időközben
belenyugodott a regényes fordulatba, örök emlékül…

Vagy:
Nem regény, csak románc. Egy májusi napon, vagy egy
holdvilágos estén… vagy talán egy koraőszi, meleg alkonyaton,
amikor édes mélabú ül az egész természeten s a szivek annyira
megtelnek érzéssel, hogy már csordulóban vannak… egyszerre csak
felpattan a lelkek zára s akik sokáig szerettek némán, valami
boldogitó öntudatlanságban, melynek bűnszerzője a hallgatag
természet, a táj alattomos csöndje, végre megnyilatkoznak.
Megnyilatkoznak, először és utoljára, mert a fiatal hölgy megmondja
az ifjú leventének, hogy soha, soha se lehet azé, akit titokban szeret,
soha se lehet az övé. És a románc csak románc marad; kedves,
szomoruan édes hangulat, történet nélkül; egy valósággá nem vált
szép mesének, egy át nem élt álomnak az egyetlenegy foszlánya.
Nincs befejezése, mert el se kezdődött. A fiatal hölgy nem engedi,
hogy az ifjú levente megcsókolja a ruhája szegését… a szerencsétlen
szerelmes fölemeli a földről és megcsókolja a kavicsot, amelyet
hölgyének kis lába tapodott… aztán nincs tovább. Később,
nagysokára, megint találkoznak egyszer… s a szerelmes, aki nem
felejtett, egy kis emlékezést könyörögve átnyujtja az aranybafoglalt
kavicsot, jeléül, hogy ő örökre ugyanaz. A hölgy elzárja a kavicsot a
drágaságai közé és nem vallja meg, hogy szivében most is ott őrzi
annak az édes-bús órának az emlékét. Egy elhaló akkord, és a
románcnak vége.
Eh, ki gondolna ilyen gyerekségekre, amikor hallgatagon,
mozdulatlanul előtted meredezik a mindenkinél merevebb arcú halál,
és láztól égő, verejtéket izzadó arcodon ott érzed merő, mozdulatlan,
rémesen nyugodt tekintetét!
Fölkelt az asztal mellől és igy szólt magához, épp oly hangtalanul,
mint amaz:
– Buchbinder Guszti, neked ma meg kell halnod!
Egy pár percig megint fel s alá sétált a naftalinos szobákban.

De most már nemcsak az az egy gondolat foglalkoztatta. E körül
a gondolat körül, bolygóként, egy új kérdés keringett, kóválygott az
elméjében és hol ez a kérdés takarta el azt a gondolatot, hol ismét a
másik kerekedett felül.
Nem különös-e, hogy ez a kérdés életében először, éppen akkor
merül fel előtte, amikor már a halál szine előtt áll?!…
Pedig hát eddig még soha se jutott eszébe, hogy a felesége nem
rejteget-e valami titkot az emlékezetében.
Buchbinder ur – ahogy mondani szokás: – boldog családi életet
élt. Az a nyugodt természetü, jólelkű, kövér asszony, aki most
Ostendében a fürdőzés és a soványitó kura ártatlan örömeit élvezi
(nem is sejtve, hogy mi készül otthon), soha se adott neki okot
efajta tanakodásra vagy éppen töprengésre. Sok gyermekkel
örvendeztette meg őt; mindig békében élt vele és mindig
megelégedettnek látszott; soha se adta semmi jelét, mintha nem
szeretné eléggé Buchbinder urat, vagy hogy szive vágyai kirepültek
volna abból az aranyozott kalitkából, amelyet Buchbinder ur sok
figyelmességgel igyekezett kellemes fogsággá tenni.
És Buchbinder ur, a sok elégtétel közül, amelyeket az élet
korábban megadott neki, éppen azt tartotta az egyik legbecsebbnek,
hogy e tekintetben nem bánthatta semmi, éppen semmi… azokban
az években se, amelyeket más házasságokban válságosaknak látott.
Nem élt nagyon sok családi életet – az ügyei és őszintén szólva, a
szeszélyei is koronként messzire elszólitgatták – hanem amennyi
családi életben része lehetett, azt (talán azért, mert nem volt
tulságosan sok), nagyon szépnek találta.
De tudhatta-e, hogy a felesége, valaha régen, amikor a
menyasszonyává lett, nem temetett-e el álmokat, vágyakat,
reménységeket?! Hogy későbben, amikor már a felesége volt, nem
ápolt-e ábrándokat, vonzalmakat, sóvárgásokat, ha ezek meg is
maradtak puszta ábrándoknak, ártatlan vonzalmaknak, meddő
sóvárgásoknak?! Vajjon csakugyan megmaradtak-e?… Tudhatta-e,

hogy a felesége lélekben nem volt-e hűtelen?!… hogy nem volt-e
hűtelen, nemcsak félig-meddig, hanem egészen! Hogy nem csalta-e
meg valaha?!… hogy nem hordott-e magában egy vagy több jól
megőrzött titkot, esztendők hosszú során, egy életen át?!…
És ez a kavics, emléke valaminek, amiről ő nem tud, amit ő soha
se fog megtudni!… Ez az aranybafoglalt kavics, amelyet a fiatal
asszony eltett s az öregedő asszony mindenkorra megőrzött!…
Ez a kavics!…
– Eh! – intézte el a kérdést fenszóval, s mintha ez az egy hang
hirtelen elűzte volna az apró lidérceket.
Mit emészti magát még ezzel is?!… Amikor már meg kell halni!…
Végképen felülkerekedett benne az az egy gondolat. De egy kicsit
még elmélázott.
Aztán föleszmélve, megnézte az óráját.
– Negyed hat – állapitotta meg magában. – Még van időm elvinni
az ékszereket a safe deposit-ba.
Mindezt nem hagyhatja künn, az asztalon vagy a feltört
szekrényben, ki tudja, miféle idegenek szabad prédájául. El fogja
vinni a bankba, hogy odazárhassa a felesége nevén elhelyezett
egyéb letétek mellé. Buchbinder ur rendszerető ember volt.
– Sietnem kell, hogy még ma elhelyezhessem – ösztökélte
magát. – Negyed hat…
És arra gondolt, hogy az órája még járni fog, amikor ő maga nem
fog tudni semmiről a világon.
Mialatt a két legnagyobb kaszettába beledugdosott mindent –
valamennyi értéktárgyat, az aranybafoglalt kavicscsal egyetemben –
egy molypille minduntalan ott röpködött az orra előtt.

Elhessegette magától, rászólt hangosan: „Te, szamár!“… de nem
pusztitotta el.
Ugy érezte, hogy már nincs joga eltipornia valamit, ami élő.
IV.
Ugyanaz nap, esti hét óra körül, a Palace-Hotelben, Buchbinder
Gusztáv ur, miután minden ügyét elintézte, egy golyót küldött
magába.
De ebben sem volt szerencséje. Nem egészen jól találta el magát
és igy sokáig kellett kinlódnia, amig kimulhatott.
Buchbinder urnak a lelke tehát nem repülhetett nyílegyenesen
abba a halhatatlanságba, amelyet a közgazdasági tevékenység
számára tartanak fenn, hanem egy jó darabig össze-vissza röpködött
a kaoszban.
Nagyon sok baja volt a szegény léleknek. A roppant feketeségben
nem tudta, hogy hová és meddig repüljön; vakon repült fölfelé, amig
ki nem merült, aztán fáradtan csüngesztette le szárnyait s egyszerre
valami iszonyu magasságból zuhant le. De nem ért le valahová, ahol
megnyugodhatott volna; süvitő szél ragadta magával, széditő
forgatagba került, majd hozzáverődött valamihez, ami rémes
csattanással verte le magáról. Aztán, mikor már-már azt hitte, hogy
megsemmisül, kellemes hűvösség téritette magához; mintha
forrásviz hűs cseppjei csörgedeztek volna rá és mintha ő maga is
szétfolyt, szétoszlott volna ezekkel a cseppekkel. De nem oszlott
szét. Most már valami meleg áramlat ragadta magával; észrevette,
hogy langyos, kövér levegőben úszik, úszik, egyre gyorsabban és
mind sűrűbb, melegebb levegőben. Már nem is úszik, hanem forog;
forró párák csapják meg s izzó meleget árasztó örvény ragadja
magához. Érzi, hogy lefelé hull; egyre gyorsabban, kábitó
sebességgel sülyed, bukik lefelé valami szörnyü mélységbe s a

másvilági cikklon ugy pörgeti, mint ahogy az orsó pörög. Azt hiszi,
szét kell mállania a mindinkább növekvő forróságban s maga is tüzes
párává válik. De ismét magához tér. Fel akar vánszorogni, hogy
folytassa utját, de fullasztóan szük térben röpköd és minduntalan
odavágódik valahová a sötétben, mint a két ablaktábla közé szorult
denevér. Majd kimerülten roskad össze és lávafolyamba merül, amely
fölött mintha a számum vonulna keresztül. Eltikkadtan adja át magát
sorsának, a láva-folyam összecsap fölötte, de megint fölmerül, ujra
az ürben találja magát, valami szürkület kezd derengeni előtte, aztán
hangokat hall, előbb csak zsongó hangokat, majd tisztán hallja:
– Mit akarsz, szegény lélek?
Ez Grünbergernek, öreg üzletvezetőjének a hangja; Grünbergeré,
aki tizenöt évvel ezelőtt halt meg. De a lélek tudja, hogy nem
Grünberger, hanem angyal szól hozzá.
Összeszedi minden erejét és végre sikerül megszólalnia:
– Az igazságot keresem. Az egész igazságot!
– Jó helyen jársz – felel Grünberger vagy az angyal. – Itt egyebet
se találhatsz, de ezt megtalálod!
S a lélek azon veszi észre magát, hogy egy szinházba került, ahol
mozgóképeket lát.
Nézi, nézi a mozgóképeket, nem lát rajtok semmi különöset, de
egyszerre feltünik előtte, hogy mindegyik mozgóképen ott van
ugyanaz az alak. Ez az alak előbb pici leányka, majd nagyobbacska,
utóbb serdülő leány. Akkor ráismer. Ez a serdülő leány az ő felesége.
A felesége élete az, amit ott lát.
Most már nagy figyelemmel nézi a képeket. Lát jeleneteket,
amelyeket eddig nem látott soha és amelyek valahogyan mégis
ismerősek neki. Az egyik képen észreveszi önmagát is, a fiatal
Buchbinder urat.

Aztán nagyob kiváncsisággal nézi a felesége életét. Lát
jeleneteket, amelyekre ráismer és másokat, amelyeknek nem volt
tanuja.
Amazok néha meghatják; az utóbbiak olyan egyformák.
A képeken sorra megjelennek a gyermekeik. A képeken a
felesége már öregedni kezd, már-már elvirul, s azok a jelenetek,
amelyek ujaknak tünnek fel, mind olyan egyformák!
Uj képek, de mindinkább egyhanguak… A felesége már öreg
asszony… S a lélek felsóhajt:
– Milyen szép, de milyen unalmas élet!… És egy kissé szomoru is.
– Jól mondod – suttog mögötte Grünberger, az angyal.
Aztán ismét sokszor látja a képeken önmagát; lát egy
bucsuzkodó jelenetet, amelyet mintha csak tegnap látott volna; látja
a feleségét, amint a nagy lányaival egy ismerős épület előtt sétálgat
s megismeri az ostendei Casinot; lát még egy pár képet, amelyekről
mintha már olvasott volna… aztán csattanás és sötétség.
S a lélek ismét repül; most már megkönnyebbülten.
A nagy feketeségben is észreveszi, hogy az angyal vele szárnyal;
nem láthatja, de tisztán hallja, hogy ugy zúg mellette, mint egy
repülőgép.
És tisztán hallja a suttogását is:
– Nem sajnálod egy kicsit szegényt?
– Grünberger, te megcsalsz engem! – felel a lélek. – Azt
mondtad, hogy megtalálom az egész igazságot. De az aranybafoglalt
kavicsot nem láttam.
– Meg fogod találni – sugja az angyal. – Itt minden kitudódik. Nil
occultum remanebit.

– Grünberger, te kereskedelmi iskolába jártál, – kétségeskedik a
lélek. – Mért szólsz hozám mégis latinul?
– Itt mindent tudunk! – felel az angyal.
– Én csak az aranybafoglalt kavicsot akarom tudni – sóhajt a
lélek. – A többi nekem már mindegy!…
– Azt is meg fogod tudni! – biztatja az angyal.
– De mikor? – szorong a lélek.
– Lehet, hogy százezer év mulva, lehet, hogy mindjárt. Attól
függ, vannak-e érdemeid?
– Jó apa voltam, – siet dicsekedni a lélek.
– Az a legkevesebb. Ha még az se lettél volna, akkor most nem
lehetnél velem. Eröltesd meg az emlékezetedet; hátha találhatnál
egyebet is?
A lélek hosszu elgondolkozás után csakugyan talál valamit.
– Nem öltem meg a molypillét! – suttog.
– Ez már valami – bátoritja az angyal. – Ez elég lehet rá, hogy az
örök kegyelem elengedjen neked százezer évet. Látsz-e már valamit?
– Mintha valami derengene, messze, nagyon messze.
– Akkor talán nem kell százezer évig repülnöd.
– Olyan jó volna megpihenni! – nyöszörög a lélek.
A zugás hirtelen elhallgat mellette. A lélek megretten. Szeretne
belekapaszkodni az angyalba, de hiába suttog: „Grünberger!
Grünberger!“… nem kap feleletet. Észreveszi, hogy már egyedül
repül és egyszerre nyugtalanitó hangokat hall. Előbb valami zizegést,
halk, de félelmetes zizegést, mintha végtelen nádas fölött repülne,
aztán más hangokat is, soha se hallott, ijesztő fütyörészést,
csipogást és csicsergést, mintha billió madár ébredezne fölötte.

Aztán a zizegés is, a csipogás is éktelen hangversenynyé erősödik,
amelybe később zugó, harsogó, bömbölő hangok keverednek; majd
mintha láthatatlan harsonák siketitő harsogását hallaná és mikor ez
a hangzavar egy mennydörgésszerü, rémes dübörgés után elhallgat,
észreveszi, hogy abban a fél-szürkületben, amelyet a hajnal
derengése küld maga elé, mozdulatlan felszinü tenger fölött repül és
ennek a némasága még rémesebb, mint az a bősz hangzavar volt.
Érzi, hogy már nem birja a repülést; segitségért akarna kiáltani, de
nem tud; aztán elhagyja minden ereje és lezuhan a jéghideg
habokba.
A lélek a tenger fenekére merülve, tisztán hallja, hogy valaki,
magasból, igen magasból, azt mondja:
– Már nem tarthat sokáig.
Mintha egy óriási tölcséren át jutna el hozzá ez a pár szó.
De, ime, a viz szétfolyik körülötte. Meleg fövényen fekszik s az,
hogy megpihenhet a puha homokon, még soha se ismert, kellemes
érzéssel tölti el. A balzsam hathat igy a sebeinkre.
Valaki föléje hajol. Egy szép, kis leánykéz nyulik eléje s
megmutatja neki azt az aranybafoglalt kavicsot, amelyet nemrég
helyezett el a safe depositban.
– Ezt keresed? – kérdi egy másvilági, zengő hang.
– Ezt!… – nyög nagyot a lélek.
– És nem emlékszel? Ebben a kavicsban botlott meg, régen,
nagyon régen, a jóltevőd felesége. Te foglaltattad ezt a kavicsot
aranyba és te magad tetted oda, ahol találtad. Csakhogy már ez is
régen volt… egy élet mult el azóta!
– Hála Istennek! Hála Istennek! – suttog a lélek.

V.
Buchbinder ur majdnem huszonnégy óráig vergődött, amig
megtudott halni. A halál igyekezett teljesiteni a kötelességét, de
Buchbinder urat olyan fából faragták, hogy a halál se teperte le
könynyen.
Amig viaskodtak, a halálravált ember sokat hánykolódott és
gyakran motyogott érthetetlen szavakat, mintha veszekednék és
birkóznék a halállal. A környezetének egy darabig sok baja volt vele,
mert minduntalan ugy tett, mintha ki akarna ugrani az ágyból; alig
birták féken tartani. Utóbb azonban megszelidült s már csak
hangtalanul tátogatta a száját.
Azért meglepőnek találták, hogy egy pár pillanattal a halála előtt,
tisztán, érthetően mondta ki ezeket a szavakat:
– Hála Istennek! Hála Istennek!
Egy orvos meg egy apáca volt mellette, amikor meghalt. Ezek
egymásra néztek.
– Mégis csak furcsa, – szólt az orvos, – ha valaki ahhoz, hogy
meghal, azt mondja, hogy: „Hála Istennek!“
– Jól mondja! – felelt az apáca.

TARTALOMJEGYZÉK
Huszéves háboru 1
Imogén 15
A pazarló asszony 34
Hat év 46
Egy kis tévedés 57
A barát vizet prédikál 74
Hosszu élet 82
Lillias 94
A bazár ég 128
Téli sport 143
Az örökség 153
Kinos kötelesség 164
A nagy Bucsay 172
A politika 178
Jancsi és Juliska 191
Mély csend 211
Temetésen 223
Megalkuvás 230
Ifjuság 246
Uj idők 264
Kaland 275
Kegyelemkenyér 283
Az utolsó jelenet 289
Mint toll a szélben 297
Egy szép nap 305
Haldoklók 317
Győzelmes harc 329

Overworking 337
Uj világ 346
Lullaby 354
A temetőben 373
Pályakezdés 381
A haldokló előszobájában 391
A kavics 398
A NAP nyomdája Budapest.

Javítások.
Az eredeti szöveg helyesírásán nem változtattunk.
A nyomdai hibákat javítottuk. Ezek listája:
13 Husz estendővel Husz esztendővel
24 bocsátottta bocsátotta
32 hiresssé hiressé
39 intkább inkább
60 össszetévesztettek összetévesztettek
65 össszesküvők összesküvők
75 választotttam választottam
75 természetsen természetesen
101 gadagságtól gazdagságtól
108 neg táncolni meg táncolni
119 rosszkedvemen rosszkdvemen
132 kiráynét királynét
137 lemászárló lemészárló
146 töltöttuünk töltöttünk
174 átadják nagukat átadják magukat
181 le-lecsillaplt le-lecsillapult
198 „Pan Péter?! „Pan Péter“?!
256 künnn künn
231 házasálet házasélet
256 szerepeleni vágyás szerepelni vágyás
270 önkántes önkéntes
279 „Soha, Soha,
280 jóvátennee jóvátenne
299 innem innen
358 Morlini. Morlini.“
364 éppan éppen
368 náhány garast néhány garast

*** END OF THE PROJECT GUTENBERG EBOOK RÉGI ÉS UJ VILÁG:
ELBESZÉLÉSEK ***
Updated editions will replace the previous one—the old editions will
be renamed.
Creating the works from print editions not protected by U.S.
copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.
START: FULL LICENSE

THE FULL PROJECT GUTENBERG LICENSE

PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
To protect the Project Gutenberg™ mission of promoting the free
distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.
Section 1. General Terms of Use and
Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.
1.B. “Project Gutenberg” is a registered trademark. It may only be
used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.

1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
1.E. Unless you have removed all references to Project Gutenberg:
1.E.1. The following sentence, with active links to, or other
immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.
1.E.2. If an individual Project Gutenberg™ electronic work is derived
from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.
1.E.3. If an individual Project Gutenberg™ electronic work is posted
with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.
1.E.4. Do not unlink or detach or remove the full Project
Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.
1.E.5. Do not copy, display, perform, distribute or redistribute this
electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1

with active links or immediate access to the full terms of the Project
Gutenberg™ License.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.
1.E.7. Do not charge a fee for access to, viewing, displaying,
performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.
1.E.8. You may charge a reasonable fee for copies of or providing
access to or distributing Project Gutenberg™ electronic works
provided that:
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information

about donations to the Project Gutenberg Literary Archive
Foundation.”
• You provide a full refund of any money paid by a user who
notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.
• You provide, in accordance with paragraph 1.F.3, a full refund of
any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™
electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.
1.F.
1.F.1. Project Gutenberg volunteers and employees expend
considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or

damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.
1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for
the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.
1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you
discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.
1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,

INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
1.F.5. Some states do not allow disclaimers of certain implied
warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.
1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,
the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.
Section 2. Information about the Mission
of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.
Volunteers and financial support to provide volunteers with the
assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will

remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.
Section 3. Information about the Project
Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.
The Foundation’s business office is located at 809 North 1500 West,
Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many

small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.
The Foundation is committed to complying with the laws regulating
charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.
While we cannot and do not solicit contributions from states where
we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.
International donations are gratefully accepted, but we cannot make
any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.
Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.
Section 5. General Information About
Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.

Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
This website includes information about Project Gutenberg™,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.