С действие матрицами: определения, свойства и примеры решения задач, формулы и онлайн калькуляторы

Содержание

Основные действия над матрицами – СтудИзба

Определение. Матрицей размера m´n, где m- число строк, n- число столбцов, называется таблица чисел, расположенных в определенном порядке. Эти числа называются элементами матрицы. Место каждого элемента однозначно определяется номером строки и столбца, на пересечении которых он находится. Элементы матрицы обозначаются aij, где i- номер строки, а j- номер столбца.

Основные действия над матрицами

Матрица может состоять как из одной строки, так и из одного столбца. Вообще говоря, матрица может состоять даже из одного элемента. Определение. Если число столбцов матрицы равно числу строк (m=n), то матрица называется квадратной. Определение. Матрица вида.(100)

                                                                                      (010)

                                                                                      (001)

= E,

называется

единичной матрицей.

Определение. Если amn = anm , то матрица называется симметрической.

Пример. – симметрическая матрица

Рекомендуемые файлы

Определение. Квадратная матрица вида называется диагональной матрицей.

Сложение и вычитание матриц сводится к соответствующим операциям над их элементами. Самым главным свойством этих операций является то, что они определены только для матриц одинакового размера. Таким образом, возможно определить операции сложения и вычитания матриц:

Определение. Суммой (разностью) матриц является матрица, элементами которой являются соответственно сумма (разность) элементов исходных матриц.

cij = aij ± bij

С = А + В = В + А.

Операция умножения (деления) матрицы любого размера на произвольное число сводится к умножению (делению) каждого элемента матрицы на это число.

a (А+В) =aА ± aВ

А(a±b) = aА ± bА

Пример. Даны матрицы А = ; B = , найти 2А + В.

2А = , 2А + В = .

Операция умножения матриц

Определение: Произведением матриц называется матрица, элементы которой могут быть вычислены по следующим формулам:

A×B = C;

Из приведенного определения видно, что операция умножения матриц определена только для матриц, число столбцов первой из которых равно числу строк второй.

Свойства операции умножения матриц.

1)Умножение матриц не коммутативно, т.е. АВ ¹ ВА даже если определены оба произведения. Однако, если для каких – либо матриц соотношение АВ=ВА выполняется, то такие матрицы называются перестановочными.

Самым характерным примером может служить единичная матрица, которая является перестановочной с любой другой матрицей того же размера.

Перестановочными могут быть только квадратные матрицы одного и того же порядка.

А×Е = Е×А = А

Очевидно, что для любых матриц выполняются следующее свойство:

A×O = O; O×A = O,

где О – нулевая матрица.

2) Операция перемножения матриц ассоциативна, т.е. если определены произведения АВ и (АВ)С, то определены ВС и А(ВС), и выполняется равенство:

(АВ)С=А(ВС).

3) Операция умножения матриц дистрибутивна по отношению к сложению, т.е. если имеют смысл выражения А(В+С) и (А+В)С, то соответственно:

А(В + С) = АВ + АС

(А + В)С = АС + ВС.

Часть 1 – лекция, которая пользуется популярностью у тех, кто читал эту лекцию.

4) Если произведение АВ определено, то для любого числа a верно соотношение:

a(AB) = (aA)B = A(aB).

5) Если определено произведение АВ , то определено произведение ВТАТ и выполняется равенство:

(АВ)Т = ВТАТ, где

индексом Т обозначается транспонированная матрица.

6) Заметим также, что для любых квадратных матриц det (AB) = detA×detB.

Основные действия над матрицами

Основные действия над матрицами.

 

            Матрица может состоять как из одной строки, так и из одного столбца. Вообще говоря, матрица может состоять даже из одного элемента.

 

Определение. Если число столбцов матрицы равно числу строк (m=n), то матрица называется квадратной.

 

            Определение.  Матрица вида:

= E,

называется единичной матрицей.

 

Определение. Если amn = anm , то матрица называется симметрической.

 

Пример.   

– симметрическая матрица

Определение. Квадратная матрица вида  называется диагональной матрицей.

 

             Сложение и вычитание матриц сводится к соответствующим операциям над их элементами. Самым главным свойством этих операций является то, что они определены только для матриц одинакового размера. Таким образом, возможно определить операции сложения и вычитания матриц:

Определение. Суммой (разностью) матриц является матрица, элементами которой являются соответственно сумма (разность) элементов исходных матриц.

cij = aij ± bij

 

С = А + В = В + А.

 

             Операция умножения (деления) матрицы любого размера на произвольное число сводится к  умножению (делению) каждого элемента матрицы на это число.

 

 

a (А+В) =aА ± aВ

А(a±b) = aА ± bА

 

 

Пример. Даны матрицы А =

; B = , найти 2А + В.

2А = ,                                 2А + В = .

 

 

Операция умножения матриц.

           

Определение: Произведением матриц называется матрица, элементы которой могут быть вычислены по следующим формулам:

A×B = C;

.

            Из приведенного определения видно, что операция умножения матриц определена только для матриц,

число столбцов первой из которых равно числу строк второй.

 

Свойства операции умножения матриц.

 

1)Умножение матриц не коммутативно, т.е. АВ ¹ ВА даже если определены оба произведения. Однако, если для каких – либо матриц соотношение АВ=ВА выполняется, то такие матрицы называются перестановочными.

Самым характерным примером может служить единичная матрица, которая является перестановочной с любой другой матрицей того же размера.

Перестановочными могут быть только квадратные матрицы одного и того же порядка.

А×Е = Е×А = А

            Очевидно, что для любых матриц выполняются следующее свойство:

A×O = O;  O×A = O,

где О – нулевая матрица.

 

            2) Операция перемножения матриц ассоциативна, т.е. если определены произведения АВ и (АВ)С, то определены ВС и А(ВС), и выполняется равенство:

(АВ)С=А(ВС).

 

            3) Операция умножения матриц дистрибутивна по отношению к сложению, т.е. если имеют смысл выражения  А(В+С) и (А+В)С, то соответственно:

А(В + С) = АВ + АС

(А + В)С = АС + ВС.

 

            4) Если произведение АВ определено, то для любого числа a верно соотношение:

a(AB) = (aA)B = A(aB).

 

            5) Если определено произведение АВ , то определено произведение ВТАТ и выполняется равенство:

(АВ)Т = ВТАТ, где

индексом Т обозначается транспонированная матрица.

 

            6) Заметим также, что для любых квадратных матриц det (AB) = detA×detB.

Что такое det будет рассмотрено ниже.

 

Действия над матрицами | Высшая математика | Студенту | Статьи и обсуждение вопросов образования в Казахстане | Образовательный сайт Казахстана

Суммой двух матриц A=(aij) и B=(bij) с одинаковым количеством m строк и n столбцов называется матрица C=(cij), элементы которой определяются равенством aij+bij=cij(i=1,2…,m; j==1,2…,n;).

Обозначим: А+В=С.

Пример 2:

Аналогично определятся разность двух матриц.

Произведением матрицы A=(aij) на число называется матрица, у которой каждый элемент равен произведению соответствующего элемента матрицы А на число :
.

Пример 3:

Произведением матрицы A=(aij), имеющей m строк и k столбцов, на матрицу B=(bij), имеющую k строк и n столбцов, называется матрица C=(cij), имеющая m строк и n столбцов, у которой элемент cij равен сумме произведений элементов i-ой строки матрицы А и j-го столбца матрицы В, т. е. cij=ai1b1j+ai2b2j+….+aikbkj (i=1,2…,m; j==1,2…,n;)

При этом число k столбцов матрицы А должно быть равно числу строк матрицы В. В противном случае произведение не определено.

Произведение обозначается так: AB=C

Пример 4:

Пример 5: Пусть , тогда

Отсюда получаем, что АВ≠ВА, т.е. умножение матриц не обладает перестановочным свойством.

Для суммы и произведения матриц справедливы следующие соотношения:

Умножение на единичную матрицу.

Совокупность элементов a11,a22,…,anm квадратной матрицы A=(aij) называется главной диагональю матрицы.

Единичной матрицей называется матрица, у которой элементы, стоящие на главной диагонали, равны единице, а все остальные элементы равны нулю. Обозначается единичная матрица буквой Е.

Например – единичная матрица третьего порядка.
Умножение квадратной матрицы любого порядка на соответствующую единичную матрицу не меняет матрицу.

Пример 6: Пусть , тогда согласно правилу умножения матриц имеем и ,
Откуда А•Е=А и Е•А=А.

Порядок вывода комментариев: По умолчаниюСначала новыеСначала старые

Действия над матрицами – Энциклопедия по машиностроению XXL

Т. Ниже излагаются основные действия над матрицами.  [c.630]

В кинематике механизмов операции сложения матриц и умножения их на скаляр находят применение в действиях над матрицами-столбцами.  [c.631]

Действия над матрицами сводятся к их умножению, причем оказывается удобным применение ЦВМ.  [c.40]

В алгебре матриц определяются следующие действия над матрицами а) сложение матриц б) умножение матрицы на число в) умножение матриц. Указанные действия позволяют вычислить соответственно сумму матриц, произведение матрицы на число, произведение матриц и, как следствие, разность матриц.  [c.41]


Действия над матрицами. Суммой или разностью двух  [c.68]

Основные определения и действия над матрицами  [c.91]

Пользуясь правилами действия над матрицами, эти зави симости можно компактно записать следующим образом  [c.85]

Действия над такой сложной матрицей во многих отношениях, при соблюдении некоторых правил, эквивалентны действиям над матрицей а.  [c.759]

Общие матрицы преобразования А я В определяются путем последовательных подстановок, перемножения и сложения промежуточных матриц. Напомним некоторые действия над матрицами [5, 16].  [c.144]

После ряда действий над матрицами промежуточных преобразований найдем  [c.152]

Предполагается, что читатель владеет первоначальными сведениями об операциях векторной алгебры и анализа и о действиях над матрицами. Подчеркнем еще, что Приложения ни в какой мере не претендуют заменить систематические курсы тензорного анализа, скорее они имеют целью избавить читателя от постоянных ссылок на них.[c.422]

Возможности программного обеспечения аналитические команды позволяют выполнить следующие операции вычисление собственных векторов и собственных значений, арифметические действия над матрицами, обращение матриц, решение линейных уравнений, идентификацию по методу наименьших квадратов, декомпозицию по вырожденным значениям, быстрое Фурье-преобразование, расчет цифровых фильтров, статистические расчеты и др. Команды анализа и проектирования линейных систем управления определены как опции. Графические команды позволяют получать графики разных типов логарифмические, полулогарифмические, в полярных координатах, трехмерные.  [c.333]

Учет разреженности матриц — направление экономичной организации операций над разреженными матрицами. Матрицу называют разреженной, если в ней преобладают нулевые элементы. Отказ от хранения нулевых элементов и реализация алгоритмов, в которых игнорируются арифметические действия над нулевыми элементами, могут дать значительную экономию 7 и Я .[c.225]

Над матрицами можно выполнять действия транспонирования, сложения, умножения. Матрица А, транспонированная по отношению к матрице А, образуется из матрицы А заменой каждой ее строки на столбец того же номера. Например, при транспонировании матрицы  [c.50]

Матрица называется единичной матрицей. Удобство записывать совокупности значений каких-либо величин в таком виде заключается в том, что над матрицами можно производить соответствующие действия (сложение, умножение, см., например, р]).  [c.93]

Однако представления равенств (4.93) в векторной форме еще не достаточно для доказательства того, что dSi есть вектор. Основным аргументом здесь является наличие у dQ известных свойств при выполнении над ним ортогонального преобразования. Поэтому, если dil действительно есть вектор, то под действием ортогональной матрицы В его составляющие должны преобразовываться согласно уравнениям  [c.146]

Преобразований, которым она можег быть подвергнута, и может рассматриваться совершенно независимо от ее свойств при данных преобразованиях. Тем не менее, неправильно было бы всегда подчеркивать это различие, так как, оставаясь в пределах ортогональных преобразований, мы будем иметь здесь полную идентичность. Составляющие тензора и элементы матрицы преобразуются в этом случае одинаковым образом, и каждому тензорному равенству при этом будет соответствовать некоторое матричное равенство и наоборот. Эквивалентность между тензорами и матрицами не ограничивается тензорами второго ранга. Так, например, мы-знаем, что составляющие вектора, который в сущности является тензором первого ранга, образуют матрицу, состоящую из одного столбца, и поэтому действия над векторами можно трактовать как действия над соответствующими матрицами.  [c.168]


Легко показать, что между линейными операторами и прямоугольными матрицами устанавливается взаимно однозначное соответствие при любых фиксированных базисах. Операциям над матрицами соответствуют аналогичные действия над операторами.[c.34]

Сборку штампа совмещенного действия для пробивки и вырубки (см. рис. 57) необходимо производить в следующем порядке 1) установить пуансон-матрицу 3 с матрицедержателем 2 и подкладной плиткой на нижнюю плиту /, скрепить струбцинами, обработать в сборе отверстия под штифты, затем скрепить матрицедержатель с нижней плитой 2) посадить съемник 12 на пуансон-матрицу, наметить отверстия через нижнюю плиту, обработать отверстия, нарезать резьбу 3) надеть матрицу 4 на пуансон-матрицу, подложив под матрицу на пуансонодержатель 2 дистанционные технологические плитки 4) ввести пуансоны с пуансонодержателем в отверстия пуансона-матрицы, предварительно проложив промежуточную плиту 10 между матрицей и пуансонодержателем 5) наложить поверх пуансонодержателя упорную плиту 8 6) установить верхнюю плиту 7 со втулками на колонки и наложить ее на плиту 8, затем скрепить верхнюю часть штампа струбцинами и снять ее с колонок 7) сверлить и развернуть в сборе отверстия во всех деталях верхней части штампа по отверстиям в матрице 4 и закрепить штифтами 8) установить на нижней части штампа буфер, закрепить съемник  [c. 126]

Второй метод заключается в выполнении следующих действий. На первом этапе исходную матрицу экспонент элементарными действиями над столбцами приводят к  [c.163]

Находим промежуточные матрицы преобразования а выполнив действия над ними, и общие матрицы преобразования А а В.  [c.141]

Найдем результат действия оператора П по точке у над матрицей Г(дг, у). Для этого заметим, что  [c.256]

Второе обстоятельство, которое следует учитывать, касается вычислительных аспектов многомерной статистики. Действия над векторами и матрицами в основном несложны, хотя и трудоемки. Отдельные матричные вычисления (нахождение определителей, обратных матриц, собственных чисел и векторов) часто описываются в книгах по многомерной статистике [4, 11, 17] где даны рекомендации либо по ручному счету с применением калькуляторов, либо по составлению программ для ЭВМ. Матричные операции, как правило, входят в программное математическое обеспечение современных компьютеров.[c.313]

После подстановки в уравнение Риккати соответствующих матриц и выполнения арифметических действий над ннми получим следующую систему скалярных дифференциальных уравнений, интегрирование которых позволит получить элементы матрицы К[c.352]

Следует принять во внимание правило действий над матрицами (АВ)т = ВТАТ.  [c.136]

При разбиении матриц на клетки существенно, чтобы строение подматриц обеспечивало существование произведений вида ЛцВь т. е. число столбцов матрицы Лц должно быть равно числу строк матрицы В1 и т. д. В этом случае любые действия над матрицами можно производить так, как будто каждая клетка является скаляром. Отметим, что любую матрицу можно умножить на скаляр (число).  [c.530]

В состав пакета включены п/п, выполняющие логические операции над ГО.Под логическими операциями здесь понимается создание нового ГО, представляющего собой некоторое подмножество исходного (исходных) ГО. Логическое преобразование ГО осуществляется относительно замкнутого контура. При этом исходный ГО по отношению к этому контуру логически может состоять из трех частей, расположенных 1) вне контура, 2) на контуре, 3) внутри контура. Логическое преобразование ГО относительно замкнутого контура (контур может быть многосвязным) задается матрицей логического преобразования (МЛП), которая представлена в виде байтового массива или фортрановского литерала из трех (шести—для операций, адекватных операциям булевой логики) элементов. 1-й элемент МЛП задает действие над частью (подмножеством) ГО, лежащей вне контура преобразования, 2-й — на контуре, 3-й — внутри контура. Ненулевое значение любого элемента МЛП означает, что соответствующая ему часть исходного ГО будет присутствовать и в результирующем (создаваемом) ГО.  [c.43]

Действия над клеточными матрицами производятся по тем же формальным правилам, что и в случае, когда вместо клеток имеются числовые элементы, если разбиение на клетки такое, что указанное действие имеет смысл [38]. Частным случаем клеточной матрицы является квазидиагональная матрица.  [c.44]

В США весьма распространено автоматическое прессование (фиг. 18). Шихта, загруженная в воронку 1, под действием собственного веса перемещается в заполняющий рукав 2. который заканчивается над матрицей прессформы 3. По заполнении формы рукав отходит назад и даёт место верхнему пуансону 4, производящему прессование. После этого нижний пуансон 5 выталкивает изделие, и рукав 2 продвигается вперёд для следующего заполнения, сметая попутно со стола отпрессованную продукцию.  [c.537]

Многие действия над тензорами произвольного ранга сводятся к действиям над их матрицами. Так, сложение (вычитание), возможное лишь для тензоров одинакового ранга, сводигся к сложению (вычитанию) соотвегсгвующих компонент матриц слагаемых (вычитаемых)  [c.242]



Матрицы и их виды. Действия над матрицами

1. Матрицы.

{
Матрицы и их виды. Действия над матрицами.
Определение: Матрица – прямоугольная таблица,
образованная из элементов некоторого множества и
состоящая из m строк и n столбцов.
Обычно матрицу обозначают двойными вертикальными
черточками или круглыми скобками.
a11
a21
A
a
m1
a12
a22

am 2
… a1n
… a2 n
… amn
A
a11
a21
am1
a12 … a1n
a22 … a2 n

am 2 … amn
Если m=n матрица называется квадратной.
2
Среди квадратных матриц выделяют класс
диагональных матриц, т.е. матрицы, которые имеют
элементы не равные нулю только на главной
диагонали:
Если
d1 d 2 … d n 1
то матрица называется
единичной
d1 0 … 0
0 d 2 … 0
D

0 0 … d
n
1
0
E 0
0
0 … 0
0 … 0
0 1 … 0

0 0 … 1
0
1
3
Матрица, у которой все элементы нулевые, получила
название нулевой:
0 0 0 . .. 0
0 0 0 … 0
0

0 0 0 … 0
Понятие нулевой матрицы можно вводить и для
неквадратных матриц .
Матрицы A и B считаются равными, если они
одинакового размера, т.е. число строк и столбцов
матрицы A соответственно равны числу строк и
столбцов матрицы B и элементы стоящие на
одинаковых местах, равны между собой .
4
Основные операции, которые производятся
над матрицами:
1. Сложение матриц.
2. Вычитание матриц.
3. Умножение матрицы на число.
4. Умножение матриц
5
1. Суммой двух матриц А и В, одинаковых
размерностей, называется матрица той же размерности,
элементы которой равны суммам соответствующих
элементов матриц А и В:
a11
a21
A
a
m1
… a1n
b11
… a2 n
b21
B
b
… amn
m1
a11 b11 a12 b12
a21 b21 a22 b22
A B

a b
m1 m1 am 2 bm 2
a12
a22

am 2
b12 . .. b1n
b22 … b2 n

bm 2 … bmn
… a1n b1n
… a2 n b2 n
… amn bmn 6
Сумма матриц обладает следующими свойствами:
1. А+В=В+А, сложение матриц коммутативно,
2. А+(В+С)=(А+В)+С, свойство ассоциативности,
3. А+0=А, где 0 – нулевая матрица той же размерности.
2. Аналогично определяется разность двух матриц:
a11 b11
a21 b21
A B
a b
m1 m1
a12 b12
a22 b22

am 2 bm 2
… a1n b1n
… a2 n b2 n
… a mn bmn
7
3. Произведением матрицы
А на число λ, называется
a11 a12
матрица, элементы которой
получаются из
A

соответствующих элементов
a
m1 am 2
матрицы А, путём умножения
их на число λ:
Операция произведения матрицы на число
удовлетворяет следующим свойствам:
1) 1 A A
… a1n
… amn
2) ( A) ( ) A
3) ( ) A A A 4) ( A B ) A B
5) A ( A) 0
,
Где A,B – произвольные матрицы,
-произвольные числа,
0 – нулевая матрица. 8
4. Произведение АВ матрицы А на матрицу В
определяется только в том случае, когда число
столбцов матрицы A равно числу строк
матрицы В.
В результате умножения получится новая матрица
C, у которой число строк будет равно числу
строк матрицы А, а число столбцов равно
числу столбцов матрицы В.
Пусть даны матрицы
a11 … a1n
A

a

a
mn
m1
b11 … b1k
B

b

b
nk
n1
9
В таком случае произведением матрицы A на матрицу
B является матрица С
c11 … c1k
C

c

c
mk
m1
элементы которой определяются по следующему
правилу
n
cij ai1b1 j ai 2 b2 j … ain bnj ai b j
1
где i=1,…,m; j=1,…,k.
10
c
Т.е. для получения элемента
ij
надо элементы i-строки матрицы А умножить на
соответствующие элементы j – го столбца
матрицы B и полученные произведения сложить.
Получение элемента
cij
схематично изображается так:
I
J
11
Пример:
Перемножить матрицы
1 0 2
0 1 3
3 2 1
1 5 3
2 4
и 6
5 1 7
Решение:
1 0 2 1 5 3
0 1 3 6 2 4
3 2 1 5 1 7
1 1 0 6 2 5 1 ( 5) 0 2 2 ( 1) 1 3 0 ( 4) 2 7
0 1 ( 1) 6 3 5 0 ( 5) ( 1) 2 3 ( 1) 0 3 ( 1) ( 4) 3 7
3 1 2 6 1 5
3
(
5
)
2
2
1
(
1
)
3
3
2
(
4
)
1
7
12
11 7 17
9 5 25
20 12 8
Свойства умножений матриц:
1) A B B A
произведение матриц не
коммутативно;
Если AB=BA, то матрицы А и В называются
перестановочными;
13
2) A ( B C ) ( A B) C
свойство ассоциативности
3) ( A B) ( A) B
4) A ( B C ) A B A C
свойство дистрибутивности
Непосредственной проверкой можно убедиться, что
A D D A (2.1)
A E E A A (2.2)
A 0 0 A 0
(2.3)
14
2. 2 Обратная матрица.
Пусть дана
квадратная матрица:
и
a11
a21
an1
a12 … a1n
a22 … a2 n

an 2 … ann
a11 a12 … a1n
a21 a22 … a2 n
A

a
a

a
n2
nn
n1
(2.4)
определитель матрицы.
Матрица определитель которой равен нулю,
называется вырожденной (или особенной), а
матрица определитель которой отличен от нуля невырожденной (или неособенной).
15
Если для данной матрицы А существует матрица Х,
такая, что
(2.6)
где Е – единичная матрица, то матрица Х называется
обратной матрицей по отношению к матрице А, а
сама матрица А – обратимой.
Обратная для А матрица обозначается
1
Теорема.
Для каждой обратимой матрицы существует
только одна обратная матрица.
Доказательство.
16
Пусть для матрицы А существует обратная матрица Х,
тогда должно выполняться условие (2.6)
Пусть для матрицы А существует ещё одна обратная
матрица ,
тогда согласно (2. 6)
Умножим слева последнее выражение на матрицу Х:
X ( A X ) X E X
Согласно свойству произведение матриц левую часть
выражения можно записать
X ( A X ) ( X A) X EX X
Т.е. получили
Что и требовалось доказать.
17
Запишем выражение для обратной матрицы
Пусть дана квадратная
обратимая матрица А:
Найдём алгебраические
дополнения для каждого
элемента и составим
матрицу В:
a11
a21
A
a
n1
A11
A12
B
A
1n
a12
a22

an 2
A
1
… a1n
… a2 n
… ann
A21
A22

A2 n
An1
… An 2
… Ann

Заметим, что в i строке матрицы В расположены
алгебраические дополнения элементов j столбца
определителя. Матрицу В называют присоединенной
18
для матрицы А.
Обратную матрицу можно найти по формуле
1
1
A11
1 A12
1
A
1n
A21 … An1
A22 . .. An 2

A2 n … Ann
19
Пример:
Найти матрицу обратную данной
Решение:
2 3
1
3 1 1
2
1
1
Проверим, обратима матрица А или нет, т.е. является
ли она вырожденной
1
2
3
7
5
0
7 5
3 1 1 1 0 0 1( 1)
5 0
1 0
2
1 1 2 1 1
6
Найдем алгебраические дополнения всех элементов
матрицы А
20
2 3
1
3 1 1
2
1
1
3
1
3 2
2 1
11 ( 1)
1 1 0 21 ( 1) 1 1 ( 2 3) 5
1 1
3
3 1
4 1
12 ( 1)
(3 2) 1 22 ( 1) 2 1 1 6 7
2 1
3
3 1
13 ( 1)
3 2 1
2
1
4
23
1 2
( 1)
(1 4) 3
2 1
5
3
2 3
5 1
10
31 ( 1)
2 3 5 32 ( 1)
3 1
1 1
21
4
33 ( 1)
6
1
2
3 1
Запишем обратную
матрицу
5
5
5
0
1
1
1 7 10
5
1
3
5
Для проверки правильности решения достаточно
проверить следующее равенство:
1
A A
E
5
5 1
2 3 1 0 0
0
1
1
A A 1 7 10 3 1 1 0 1 0
5
2
0 0 1
1
3
5
1
1
22
2. 3 Ранг матрицы.
Рассмотрим произвольную
прямоугольную матрицу:
a11 a12
a21 a22
ak 1 a k 2
a
m1 am 2






a1k
a2 k
akk
amk
… a1m
… a2 m
… akm
… amm
Возьмем в этой матрицы k строк и k столбцов.
Элементы, стоящие на пересечении этой строки и
столбца образуют квадратную матрицу.
Определитель данной матрицы называется минором
k-ого порядка
Mk
Минор M k 1 порядка k+1, который содержит в себе
минор M
k
называется окаймляющим минором.
23
Если любой минор
Mk
а все возможные миноры
не равен нулю,
M k 1
равны нулю, то говорят, что ранг матрицы равен k
(rangA=k).
Отличный от нуля минор
Mk,
называют базисным минором .
24
Пример:
Вычислить ранг матрицы:
1 2 1 3
0
1 1
2
1 2 2 4
7 6 1 7
Решение:
Выберем минор второго порядка, находящийся в
верхнем левом углу,
12
12
M
1 2
2
0
4
Минор второго порядка не равен нулю, следовательно
ранг не менее двух.
Составляем миноры третьего порядка, окаймляющие
отличный от нуля минор второго порядка. Для этого
добавим к M 12 третью строку и третий столбец.
12
25
123
M 123
1
2
2
0
1 3 2
1 0 0
1 2 2
124
M 123
123
M 124
1
2
5 3
1 1 ( 1)
( 6 6) 0
3 2
3 2 2
1 2 3
7 2 3
2
5 7
2
0 1 0 0 1 1 ( 1)
0
7 2
1 2 4
7 2 4
1 2 1 3 2 1
2
5 3
2 0
1 0 0
1 1 ( 1)
0
9 6
7 6 1 9 6 1
26
124
M 124
1 2 3
7 2 3
2
5 7
2 0 1 0
0 1 1 ( 1)
0
21 6
7 6 7
21 6 7
Все миноры третьего порядка, окаймляющие минор
второго порядка, равны нулю. А это значит, что
rang A=2.
Другим простым способом вычисления ранга матрицы
является метод Гаусса, основанный на элементарных
преобразованиях, выполняемых над матрицей. Такими
преобразованиями являются:
1. вычёркивание строки состоящей из нулей,
2.прибавление к элементам одной из строк
соответствующих элементов другой строки, умноженных
на любое число,
3.перестановку двух строк (двух параллельных рядов),
4.все строки заменить столбцами
27
Метод Гаусса вычисления ранга матрицы заключается
в том, что при помощи элементарных преобразований
матрицу можно привести к виду:
b11
0
0
0
b12
b22
0
0
… b1n
… b2 n
… b3k … b3n
…. …… …
0 bkk … bkn


b1k
b2 k
В этой матрице все диагональные элементы
и т.д. отличны от нуля, а элементы других строк
расположенные ниже, равны нулю.
b11 , b22 , b33
Т.к. ранг не меняется при элементарных
преобразованиях, то ранг исходной матрицы будет
равен рангу данной матрицы и равен числу не
нулевых строк .
28
Пример:
Найти ранг матрицы:
Решение:
1
2
1
2
2
3
1
2
1
3
2
4
5
3 5
1 7
1 2
4
Добьемся, чтобы все элементы первого столбца, кроме первого
были нулями. Первую строку оставим без изменения, затем первую
строку умножим на -2 и прибавим ко второй, первую строку
умножим на -1 и прибавим к третьей, и наконец, первую строку
умножим на 2 и прибавим к четвертой строке.
1
2
1
2
2
1
2
2
3
1
3
4
4
3
1
1
5 1
5 0
7
0
2 0
2
3
3 5
0
0
6 10
4
5
5 5
3 2
7 12
29
Применим теперь элементарные преобразования таким
образом, чтобы в матрице все элементы второго столбца кроме
первых двух, были нулями. Умножим вторую строку на 2 и
прибавим к четвертой
1
0
0
0
2
3
3 5
0
0
0
0
5
5
3 2
3 2
4
5
Умножим третью строку на -1 и сложим с четвертой
3
4
5
1 2
0 3 5 5 5
0 0
0 3 2
0 0
0
0
0
Вычеркивая нулевую строку, получим rang A=3.
30

Синтаксис рабочего процесса для действий GitHub

О синтаксисе YAML для рабочих процессов

Файлы рабочего процесса

используют синтаксис YAML и должны иметь расширение .yml или .yaml . Если вы новичок в YAML и хотите узнать больше, см. раздел «Изучите YAML за Y минут».

Вы должны хранить файлы рабочих процессов в каталоге .github/workflows вашего репозитория.

имя

Имя вашего рабочего процесса. GitHub отображает имена ваших рабочих процессов на странице действий вашего репозитория.Если вы опустите name , GitHub установит для него путь к файлу рабочего процесса относительно корня репозитория.

на

Чтобы автоматически запустить рабочий процесс, используйте на , чтобы определить, какие события могут вызвать запуск рабочего процесса. Список доступных событий см. в разделе «События, запускающие рабочие процессы».

Вы можете определить одно или несколько событий, которые могут запускать рабочий процесс, или установить расписание. Вы также можете ограничить выполнение рабочего процесса только для определенных файлов, тегов или изменений ветки.Эти параметры описаны в следующих разделах.

Использование одного события

Например, рабочий процесс со следующим значением на будет запущен при отправке в любую ветвь в репозитории рабочего процесса:

  на: нажать
  

Использование нескольких событий

Можно указать одно событие или несколько событий. Например, рабочий процесс со следующим значением на будет запущен, когда будет сделана отправка в любую ветвь в репозитории или когда кто-то разветвит репозиторий:

  на: [толчок, вилка]
  

Если вы укажете несколько событий, только одно из этих событий должно произойти, чтобы запустить ваш рабочий процесс.Если одновременно происходит несколько инициирующих событий для вашего рабочего процесса, будет запущено несколько запусков рабочего процесса.

Использование видов деятельности

Некоторые события имеют типы активности, которые дают вам больше контроля над тем, когда должен запускаться ваш рабочий процесс. Используйте on..types , чтобы определить тип действия события, которое инициирует запуск рабочего процесса.

Например, событие issue_comment имеет созданных , отредактированных и удаленных типов действий.Если ваш рабочий процесс запускается по событию label , он будет выполняться всякий раз, когда этикетка создается, редактируется или удаляется. Если вы укажете тип действия created для события label , ваш рабочий процесс будет запускаться при создании этикетки, но не при ее редактировании или удалении.

  по:
  метка:
    типы:
      - созданный
  

Если вы укажете несколько типов действий, только один из этих типов событий должен произойти, чтобы запустить ваш рабочий процесс. Если одновременно происходит несколько типов инициирующих событий для вашего рабочего процесса, будет запущено несколько запусков рабочего процесса. Например, следующий рабочий процесс запускается, когда проблема открывается или помечается. Если открыта задача с двумя метками, запустится три запуска рабочего процесса: один для события открытия задачи и два для событий с двумя метками задачи.

  по:
  проблема:
    типы:
      - открыт
      - помечен
  

Дополнительные сведения о каждом событии и их типах действий см. в разделе «События, запускающие рабочие процессы.”

Использование фильтров

Некоторые события имеют фильтры, которые дают вам больше контроля над тем, когда должен запускаться ваш рабочий процесс.

Например, событие push имеет фильтр ветвей , который заставляет ваш рабочий процесс запускаться только тогда, когда происходит отправка ветки, которая соответствует фильтру ветвей , а не когда происходит какое-либо нажатие.

  по:
  толкать:
    ветви:
      - главный
      - 'релизы/**'
  

Использование типов действий и фильтров с несколькими событиями

Если вы указываете типы действий или фильтры для события, а ваш рабочий процесс запускается для нескольких событий, вы должны настроить каждое событие отдельно.Вы должны добавлять двоеточие ( : ) ко всем событиям, включая события без настройки.

Например, рабочий процесс со следующим значением на будет выполняться, когда:

  • Создана этикетка
  • Выполняется отправка в основную ветку в хранилище
  • Отправка в ветку с поддержкой страниц GitHub
  по:
  метка:
    типы:
      - созданный
  толкать:
    ветви:
      - главный
  страница_сборка:
  

по..types

Используйте on..types , чтобы определить тип действия, которое инициирует запуск рабочего процесса. Большинство событий GitHub инициируются более чем одним типом активности. Например, метка запускается, когда метка создается , редактируется или удаляется . Ключевое слово типов позволяет сузить круг действий, вызывающих запуск рабочего процесса. Когда только один тип действия вызывает событие веб-перехватчика, ключевое слово типов не требуется.

Вы можете использовать массив событий типов . Дополнительные сведения о каждом событии и их типах действий см. в разделе «События, запускающие рабочие процессы».

  по:
  метка:
    типы: [создано, отредактировано]
  

on..

При использовании событий pull_request и pull_request_target рабочий процесс можно настроить так, чтобы он выполнялся только для запросов на вытягивание, предназначенных для определенных ветвей.

Используйте фильтр ветвей , если вы хотите включить шаблоны имен ветвей или если вы хотите включить и исключить шаблоны имен ветвей. Используйте фильтр ветвей-игнорировать , если вы хотите исключить только шаблоны имен ветвей. Вы не можете использовать обе ветви и ветвей — игнорируйте фильтры для одного и того же события в рабочем процессе.

Если вы определите обе ветви / ветвей — игнорируйте пути и , рабочий процесс будет выполняться только тогда, когда оба фильтра будут удовлетворены.

Ветви и ветвей-игнорировать ключевые слова принимают шаблоны подстановок, которые используют такие символы, как * , ** , + , ? , ! и другие, чтобы соответствовать более чем одному названию ветки. Если имя содержит какой-либо из этих символов и вам нужно буквальное совпадение, вам нужно экранировать каждый из этих специальных символов с помощью \ . Дополнительные сведения о шаблонах глобусов см. в «Шпаргалке по шаблонам фильтров».

Пример: включая ответвления

Шаблоны, определенные в ветвях , оцениваются по имени ссылки Git.Например, следующий рабочий процесс будет выполняться при наличии события pull_request для целевого запроса на вытягивание:

  • Филиал с именем main ( refs/heads/main )
  • Ветка с именем mona/octocat ( refs/heads/mona/octocat )
  • Ветка, имя которой начинается с релизов/, например релизов/10 ( refs/heads/releases/10 )
  по:
  pull_request:
    
    ветви:
      - главный
      - 'мона/октокот'
      - 'релизы/**'
  
Пример: исключая ответвления

Если шаблон соответствует шаблону ответвлений — игнорировать шаблон , рабочий процесс не запустится.Шаблоны, определенные в ветвях , оцениваются по имени Git ref. Например, следующий рабочий процесс будет выполняться всякий раз, когда происходит событие pull_request , если только запрос на вытягивание не нацелен на:

.
  • Филиал с именем mona/octocat ( refs/heads/mona/octocat )
  • Ветка, имя которой соответствует релизам/**-альфа , например бета/3-альфа ( refs/релизы/бета/3-альфа )
  по:
  pull_request:
    
    ветки-игнорировать:
      - 'мона/октокот'
      - 'релизы/**-альфа'
  
Пример: включая и исключая ответвления

Вы не можете использовать ветвей и ветвей — игнорируйте для фильтрации одного и того же события в одном рабочем процессе.Если вы хотите включить и исключить шаблоны ветвей для одного события, используйте фильтр ветвей вместе с фильтром ! символов, чтобы указать, какие ветки следует исключить.

Если вы определяете ветку с ! , вы также должны определить хотя бы одну ветвь без символа ! символов. Если вы хотите исключить только ветки, используйте вместо этого ветвей, игнорируя .

Порядок определения шаблонов имеет значение.

  • Соответствующий отрицательный шаблон (с префиксом ! ) после положительного совпадения исключит Git ref.
  • Совпадающий положительный шаблон после отрицательного совпадения снова будет включать ссылку Git.

Следующий рабочий процесс будет выполняться для событий pull_request для запросов на вытягивание, нацеленных на выпусков/10 или выпусков/бета/мона , но для запросов на вытягивание, нацеленных на выпусков/10-альфа или выпусков/бета/ 3-альфа , потому что отрицательный шаблон !releases/**-alpha следует положительному шаблону.

  по:
  pull_request:
    ветви:
      - 'релизы/**'
      - '!релизы/**-альфа'
  

по.push.<ветки|теги|игнорировать ветви|игнорировать теги>

При использовании события push можно настроить рабочий процесс для запуска в определенных ветвях или тегах.

Используйте фильтр ветвей , если вы хотите включить шаблоны имен ветвей или если вы хотите включить и исключить шаблоны имен ветвей. Используйте фильтр ветвей-игнорировать , если вы хотите исключить только шаблоны имен ветвей. Вы не можете использовать обе ветви и ветвей — игнорируйте фильтры для одного и того же события в рабочем процессе.

Используйте фильтр тегов , если вы хотите включить шаблоны имен тегов или если вы хотите включить и исключить шаблоны имен тегов. Используйте фильтр tags-ignore , если вы хотите исключить только шаблоны имен тегов. Вы не можете использовать оба тега , теги и теги — игнорировать фильтры для одного и того же события в рабочем процессе.

Если вы определите только тегов / tag-ignore или только ветвей / ветвей-игнорирование , рабочий процесс не будет запускаться для событий, влияющих на неопределенную ссылку Git. Если вы не зададите ни тегов / tag-ignore , ни ветвей / ветвей-игнорирование , рабочий процесс будет выполняться для событий, влияющих либо на ветви, либо на теги. Если вы определите обе ветви / ветвей-игнорировать пути и , рабочий процесс будет выполняться только тогда, когда оба фильтра будут удовлетворены.

ветвей , ветвей-игнорировать , тегов и тегов-игнорировать ключевых слов принимают шаблоны глобусов, которые используют такие символы, как * , ** , + 90 , ! и другие, чтобы соответствовать более чем одной ветви или имени тега.Если имя содержит какой-либо из этих символов и вы хотите буквальное совпадение, вам нужно экранировать каждого из этих специальных символов с помощью \ . Дополнительные сведения о шаблонах глобусов см. в «Шпаргалке по шаблонам фильтров».

Пример: включая ветки и теги

Шаблоны, определенные в ветвях и тегах , оцениваются по имени ссылки Git. Например, следующий рабочий процесс будет выполняться всякий раз, когда есть событие push для:

  • Филиал с именем main ( refs/heads/main )
  • Ветка с именем mona/octocat ( refs/heads/mona/octocat )
  • Ветка, имя которой начинается с релизов/, например релизов/10 ( refs/heads/releases/10 )
  • Тег с именем v2 ( refs/tags/v2 )
  • Тег, имя которого начинается с v1., например v1.9.1 ( ссылок/тегов/v1.9.1 )
  по:
  толкать:
    
    ветви:
      - главный
      - 'мона/октокот'
      - 'релизы/**'
    
    теги:
      - v2
      - v1.*
  
Пример: Исключение ветвей и тегов

Если шаблон соответствует шаблону ветвей — игнорировать теги или — игнорировать шаблон , рабочий процесс не будет запущен. Шаблоны, определенные в ветвях и тегах , оцениваются по имени Git ref.Например, следующий рабочий процесс будет выполняться всякий раз, когда есть событие push , если только событие push не должно:

  • Филиал с именем mona/octocat ( refs/heads/mona/octocat )
  • Ветка, имя которой соответствует релизам/**-альфа , например бета/3-альфа ( refs/релизы/бета/3-альфа )
  • Тег с именем v2 ( refs/tags/v2 )
  • Тег, имя которого начинается с v1., например v1.9 ( ссылок/тегов/v1.9 )
  по:
  толкать:
    
    ветки-игнорировать:
      - 'мона/октокот'
      - 'релизы/**-альфа'
    
    теги-игнорировать:
      - v2
      - v1.*
  
Пример: включение и исключение ветвей и тегов

Вы не можете использовать ветвей и ветвей — игнорируйте для фильтрации одного и того же события в одном рабочем процессе. Точно так же вы не можете использовать теги и теги — игнорировать для фильтрации одного и того же события в одном рабочем процессе.Если вы хотите включить и исключить шаблоны ветвей или тегов для одного события, используйте фильтр ветвей или тегов вместе с фильтром ! символов, чтобы указать, какие ветки или теги следует исключить.

Если вы определяете ветку с ! , вы также должны определить хотя бы одну ветвь без символа ! символов. Если вы хотите исключить только ветки, используйте вместо этого ветвей, игнорируя . Точно так же, если вы определяете тег с ! , вы также должны определить хотя бы один тег без ! символов.Если вы хотите исключить только теги, используйте теги , вместо этого игнорируйте .

Порядок определения шаблонов имеет значение.

  • Соответствующий отрицательный шаблон (с префиксом ! ) после положительного совпадения исключит Git ref.
  • Совпадающий положительный шаблон после отрицательного совпадения снова будет включать ссылку Git.

Следующий рабочий процесс будет выполняться при отправке выпусков/10 или выпусков/бета/мона , но не выпусков/10-альфа или выпусков/бета/3-альфа , потому что отрицательный шаблон ! releases/**-alpha следует положительному образцу.

  по:
  толкать:
    ветви:
      - 'релизы/**'
      - '!релизы/**-альфа'
  

on..

При использовании событий push и pull_request можно настроить рабочий процесс для запуска в зависимости от того, какие пути к файлам изменены. Фильтры пути не оцениваются для отправки тегов.

Используйте фильтр путей , если вы хотите включить шаблоны путей к файлам или если вы хотите включить и исключить шаблоны путей к файлам. Используйте фильтр путей-игнорировать , если вы хотите исключить только шаблоны путей к файлам. Нельзя использовать оба пути : и — игнорировать фильтры для одного и того же события в рабочем процессе.

Если вы определите обе ветви / ветвей — игнорируйте пути и , рабочий процесс будет выполняться только тогда, когда оба фильтра будут удовлетворены.

Пути Пути и — игнорировать ключевые слова — принимают шаблоны подстановок, которые используют подстановочные знаки * и ** для соответствия более чем одному имени пути.Дополнительные сведения см. в «Шпаргалке по шаблону фильтра».

Пример: включая пути

Если хотя бы один путь соответствует шаблону в фильтре путей , рабочий процесс запускается. Например, следующий рабочий процесс будет выполняться каждый раз, когда вы отправляете файл JavaScript ( . js ).

  по:
  толкать:
    пути:
      - '**.js'
  
Пример: исключая пути

Если все имена путей совпадают с шаблонами в путях — игнорировать , рабочий процесс не запустится.Если какие-либо имена путей не соответствуют шаблонам в путях — игнорируйте , даже если некоторые пути соответствуют шаблонам, рабочий процесс будет запущен.

Рабочий процесс со следующим фильтром пути будет выполняться только для событий push , которые включают хотя бы один файл за пределами каталога docs в корне репозитория.

  по:
  толкать:
    пути-игнорировать:
      - 'документы/**'
  
Пример: включение и исключение путей

Нельзя использовать пути . Пути и — игнорировать для фильтрации одного и того же события в одном рабочем процессе.Если вы хотите включить и исключить шаблоны путей для одного события, используйте фильтр путей вместе с фильтром ! символов, чтобы указать, какие пути следует исключить.

Если вы определяете путь с ! , вы также должны указать хотя бы один путь без символа ! символов. Если вы хотите исключить только пути, используйте путей, игнорируя вместо этого .

Порядок определения шаблонов имеет значение:

  • Соответствующий отрицательный шаблон (с префиксом ! ) после положительного совпадения исключает путь.
  • Совпадающий положительный шаблон после отрицательного совпадения снова включает путь.

Этот пример запускается каждый раз, когда событие push включает файл в каталоге подпроекта или его подкаталогах, если только файл не находится в каталоге подпроекта/docs . Например, отправка, которая изменила sub-project/index.js или sub-project/src/index.js , вызовет запуск рабочего процесса, но отправка изменит только sub-project/docs/readme.md не будет.

  по:
  толкать:
    пути:
      - 'подпроект/**'
      - '!подпроект/документы/**'
  
Git сравнения различий

Примечание: Если вы отправляете более 1000 коммитов или если GitHub не создает diff из-за тайм-аута, рабочий процесс будет выполняться всегда.

Фильтр определяет, должен ли выполняться рабочий процесс, оценивая измененные файлы и запуская их по списку путей — игнорировать или путей .Если файлы не изменены, рабочий процесс не запустится.

GitHub генерирует список измененных файлов, используя различия с двумя точками для push-уведомлений и различия с тремя точками для запросов на вытягивание:

  • Запросы на вытягивание: Различия с тремя точками — это сравнение между самой последней версией тематической ветки и фиксацией, в которой тематическая ветвь в последний раз синхронизировалась с базовой веткой.
  • Отправка в существующие ветки: Сравнение с двумя точками сравнивает головной и базовый SHA напрямую друг с другом.
  • Отправка в новые ветки: Сравнение с двумя точками по отношению к родителю предка самой глубокой фиксации отправлено.

Различия ограничены 300 файлами. Если есть измененные файлы, которые не соответствуют первым 300 файлам, возвращенным фильтром, рабочий процесс не будет запущен. Возможно, вам потребуется создать более конкретные фильтры, чтобы рабочий процесс выполнялся автоматически.

Дополнительные сведения см. в разделе «Сравнение ветвей в запросах на вытягивание».

по.расписание

Вы можете использовать on.schedule , чтобы определить расписание для ваших рабочих процессов. Вы можете запланировать запуск рабочего процесса в определенное время UTC, используя синтаксис cron POSIX. Запланированные рабочие процессы запускаются при последней фиксации в стандартной или базовой ветке. Самый короткий интервал, с которым вы можете запускать запланированные рабочие процессы, — каждые 5 минут.

Этот пример запускает рабочий процесс каждый день в 5:30 и 17:30 UTC:

  по:
  расписание:
    
    - cron: '30 5,17 * * *'

  

Один рабочий процесс может быть запущен несколькими событиями расписания .Вы можете получить доступ к событию расписания, которое инициировало рабочий процесс, через контекст github. event.schedule . В этом примере рабочий процесс запускается в 5:30 UTC каждый понедельник-четверг, но пропускается шаг Not on Monday or Wednesday в понедельник и среду.

  по:
  расписание:
    - cron: '30 5 * * 1,3'
    - cron: '30 5 * * 2,4'

вакансии:
  test_schedule:
    запуски: ubuntu-последняя
    шаги:
      - имя: Не в понедельник или среду
        если: github.event.расписание != '30 5 * * 1,3'
        run: echo "Этот шаг будет пропущен в понедельник и среду"
      - имя: Каждый раз
        run: echo "Этот шаг будет выполняться всегда"
  

Дополнительные сведения о синтаксисе cron см. в разделе «События, запускающие рабочие процессы».

on.workflow_call

Используйте on.workflow_call , чтобы определить входы и выходы для повторно используемого рабочего процесса. Вы также можете сопоставить секреты, доступные для вызываемого рабочего процесса. Дополнительные сведения о повторно используемых рабочих процессах см. в разделе «Повторное использование рабочих процессов."

on.workflow_call.inputs

При использовании ключевого слова workflow_call можно дополнительно указать входные данные, которые передаются вызываемому рабочему процессу из вызывающего рабочего процесса. Дополнительные сведения о ключевом слове workflow_call см. в разделе «События, запускающие рабочие процессы».

В дополнение к доступным стандартным входным параметрам для on.workflow_call.inputs требуется параметр типа . Для получения дополнительной информации см. на.workflow_call.inputs..type .

Если параметр по умолчанию не установлен, значением ввода по умолчанию является false для логического значения, 0 для числа и "" для строки.

В вызываемом рабочем процессе вы можете использовать контекст inputs для ссылки на ввод.

Если вызывающий рабочий процесс передает входные данные, не указанные в вызываемом рабочем процессе, это приводит к ошибке.

Пример
  по:
  рабочий_вызов:
    входы:
      имя пользователя:
        description: 'Имя пользователя, переданное из рабочего процесса вызывающего абонента'
        по умолчанию: 'джон-доу'
        требуется: ложь
        тип: строка

вакансии:
  печать-имя пользователя:
    запуски: ubuntu-последняя

    шаги:
      - имя: вывести имя входа в STDOUT
        run: echo Имя пользователя ${{ inputs.имя пользователя }}
  

Дополнительные сведения см. в разделе «Повторное использование рабочих процессов».

on.workflow_call.inputs..type

Требуется, если ввод определен для ключевого слова on.workflow_call . Значение этого параметра представляет собой строку, указывающую тип данных ввода. Это должно быть одно из: boolean , число или строка .

on.workflow_call.outputs

Карта выходов для вызванного рабочего процесса.Выходные данные вызываемого рабочего процесса доступны для всех нижестоящих заданий в вызывающем рабочем процессе. Каждый выход имеет идентификатор, необязательное описание , и значение . Значение должно быть установлено равным значению вывода задания в вызываемом рабочем процессе.

В приведенном ниже примере для этого повторно используемого рабочего процесса определены два выхода: workflow_output1 и workflow_output2 . Они сопоставляются с выходными данными job_output1 и job_output2 , оба из задания my_job .

Пример
  по:
  рабочий_вызов:
    
    выходы:
      рабочий_выход_1:
        description: "Вывод первого задания"
        значение: ${{ jobs.my_job.outputs.job_output1 }}
      рабочий_выход2:
        description: "Вывод второго задания"
        значение: ${{ jobs. my_job.outputs.job_output2 }}
  

Информацию о том, как ссылаться на выходные данные задания, см. в разделе jobs..outputs . Дополнительные сведения см. в разделе «Повторное использование рабочих процессов».

по.workflow_call.secrets

Карта секретов, которые можно использовать в вызываемом рабочем процессе.

В вызываемом рабочем процессе можно использовать контекст секретов для ссылки на секрет.

Если рабочий процесс вызывающего объекта передает секрет, не указанный в вызываемом рабочем процессе, это приводит к ошибке.

Пример
  по:
  рабочий_вызов:
    секреты:
      токен доступа:
        description: «Токен, переданный из рабочего процесса вызывающего абонента»
        требуется: ложь

вакансии:
  передать секрет к действию:
    запуски: ubuntu-последняя

    шаги:
      - name: Передать полученный секрет действию
        использует: ./.github/действия/мои действия
        с участием:
          токен: ${{ secrets. access-token }}
  
on.workflow_call.secrets.

Идентификатор строки для связи с секретом.

on.workflow_call.secrets..required

Логическое значение, указывающее, должен ли быть указан секрет.

on.workflow_run.<ветви|ветви-игнорировать>

При использовании события workflow_run можно указать, в каких ветвях должен выполняться инициирующий рабочий процесс, чтобы запустить ваш рабочий процесс.

Ветви и ветвей-игнорировать фильтры принимают шаблоны подстановок, которые используют такие символы, как * , ** , + , ? , ! и другие, чтобы соответствовать более чем одному названию ветки. Если имя содержит какой-либо из этих символов и вы хотите буквальное совпадение, вам нужно экранировать каждого из этих специальных символов с помощью \ . Дополнительные сведения о шаблонах глобусов см. в «Шпаргалке по шаблонам фильтров»."

Например, рабочий процесс со следующим триггером будет выполняться только тогда, когда рабочий процесс с именем Build выполняется в ветке, имя которой начинается с выпусков/ :

  по:
  рабочий_запуск:
    рабочие процессы: ["Сборка"]
    типы: [запрошено]
    ветви:
      - 'релизы/**'
  

Рабочий процесс со следующим триггером будет выполняться только в том случае, если рабочий процесс с именем Build выполняется в ветке, которая не имеет имени canary :

  по:
  рабочий_запуск:
    рабочие процессы: ["Сборка"]
    типы: [запрошено]
    ветки-игнорировать:
      - "канарейка"
  

Вы не можете использовать обе ветви и ветвей — игнорируйте фильтры для одного и того же события в рабочем процессе.Если вы хотите включить и исключить шаблоны ветвей для одного события, используйте фильтр ветвей вместе с фильтром ! символов, чтобы указать, какие ветки следует исключить.

Порядок определения шаблонов имеет значение.

  • Соответствующий отрицательный шаблон (с префиксом ! ) после положительного совпадения исключит ветвь.
  • Сопоставление положительного шаблона после отрицательного совпадения снова включает ветвь.

Например, рабочий процесс со следующим триггером будет запущен, когда рабочий процесс с именем Build запускается в ветке с именем выпусков/10 или выпусков/бета/мона , но не будет запускаться выпусков/10-альфа , выпусков/бета/3-альфа или основной .

  по:
  рабочий_запуск:
    рабочие процессы: ["Сборка"]
    типы: [запрошено]
    ветви:
      - 'релизы/**'
      - '!релизы/**-альфа'
  

on.workflow_dispatch.inputs

При использовании события workflow_dispatch можно дополнительно указать входные данные, которые передаются в рабочий процесс.

Запущенный рабочий процесс получает входные данные в контексте github.event.inputs . Дополнительные сведения см. в разделе «Контексты».

  по:
  workflow_dispatch:
    входы:
      логуровень:
        описание: 'Уровень журнала'
        требуется: правда
        по умолчанию: «предупреждение»
        тип: выбор
        опции:
        - Информация
        - предупреждение
        - отлаживать
      теги:
        description: 'Теги тестового сценария'
        требуется: ложь
        тип: логический
      окружающая обстановка:
        description: 'Среда для запуска тестов'
        тип: окружающая среда
        требуется: правда

вакансии:
  тег печати:
    запуски: ubuntu-последняя

    шаги:
      - имя: распечатать входной тег в STDOUT
        run: echo Тег ${{ github.event.inputs.tag }}
  

разрешения

Вы можете использовать разрешения для изменения разрешений по умолчанию, предоставленных GITHUB_TOKEN , добавляя или удаляя доступ по мере необходимости, чтобы вы разрешали только минимально необходимый доступ. Дополнительные сведения см. в разделе «Аутентификация в рабочем процессе».

Вы можете использовать разрешения либо в качестве ключа верхнего уровня для применения ко всем заданиям в рабочем процессе, либо к определенным заданиям. Когда вы добавляете ключ разрешений в определенное задание, все действия и команды запуска в этом задании, которые используют GITHUB_TOKEN , получают указанные вами права доступа.Дополнительные сведения см. в разделе jobs..permissions .

Доступные области и значения доступа:

  разрешений:
  действия: чтение|запись|нет
  проверяет: чтение|запись|нет
  содержимое: чтение|запись|нет
  развертывания: чтение|запись|нет
  id-токен: чтение|запись|нет
  проблемы: чтение|запись|нет
  обсуждения: читать|писать|нет
  пакеты: чтение|запись|нет
  страницы: чтение|запись|нет
  пулл-реквесты: чтение|запись|нет
  репозиторий-проекты: чтение|запись|нет
  события безопасности: чтение|запись|нет
  статусы: чтение|запись|нет
  

Если вы укажете доступ для любой из этих областей, для всех неуказанных будет установлено значение нет .

Вы можете использовать следующий синтаксис, чтобы определить доступ для чтения или записи для всех доступных областей:

  разрешения: чтение-все|запись-все
  

Вы можете использовать ключ разрешений для добавления и удаления разрешений на чтение для разветвленных репозиториев, но обычно вы не можете предоставлять доступ на запись. Исключением из этого поведения является случай, когда пользователь-администратор выбрал параметр Отправлять токены записи в рабочие процессы из запросов на вытягивание в настройках действий GitHub.Дополнительные сведения см. в разделе «Управление настройками GitHub Actions для репозитория».

Пример: Назначение разрешений для GITHUB_TOKEN

В этом примере показаны разрешения, установленные для GITHUB_TOKEN , которые будут применяться ко всем заданиям в рабочем процессе. Всем разрешениям предоставляется доступ для чтения.

  имя: "Мой рабочий процесс"

на: [ нажать ]

разрешения: все для чтения

вакансии:
  . ..
  

env

Карта переменных среды, доступных для шагов всех заданий в рабочем процессе.Вы также можете установить переменные среды, которые доступны только для шагов одного задания или для одного шага. Дополнительные сведения см. в разделе Задания ..env и задания ..steps[*].env .

Если с одним и тем же именем определено несколько переменных среды, GitHub использует наиболее конкретную переменную среды. Например, переменная среды, определенная на шаге, переопределит переменные задания и рабочего процесса с тем же именем во время выполнения шага.Переменная, определенная для задания, переопределит переменную рабочего процесса с тем же именем во время выполнения задания.

Пример

  окр.:
  СЕРВЕР: производство
  

по умолчанию

Используйте значения по умолчанию для создания карты параметров по умолчанию, которые будут применяться ко всем заданиям в рабочем процессе. Вы также можете установить настройки по умолчанию, которые доступны только для задания. Дополнительные сведения см. в разделе jobs..defaults .

Если с одним и тем же именем определено более одного параметра по умолчанию, GitHub использует наиболее конкретный параметр по умолчанию.Например, параметр по умолчанию, определенный в задании, переопределит параметр по умолчанию с тем же именем, который определен в рабочем процессе.

defaults.run

Вы можете использовать defaults.run , чтобы предоставить параметры оболочки по умолчанию и рабочего каталога для всех запусков шагов рабочего процесса. Вы также можете установить параметры по умолчанию для запуска , которые доступны только для задания. Дополнительные сведения см. в разделе jobs..defaults.запустить . Вы не можете использовать контексты или выражения в этом ключевом слове.

Если с одним и тем же именем определено более одного параметра по умолчанию, GitHub использует наиболее конкретный параметр по умолчанию. Например, параметр по умолчанию, определенный в задании, переопределит параметр по умолчанию с тем же именем, который определен в рабочем процессе.

Пример: Установите оболочку по умолчанию и рабочий каталог
  значения по умолчанию:
  бегать:
    оболочка: баш
    рабочий каталог: скрипты
  

параллелизм

Используйте параллелизм , чтобы гарантировать, что только одно задание или рабочий процесс, использующий одну и ту же группу параллелизма, будет выполняться одновременно.Группа параллелизма может быть любой строкой или выражением. Выражение может использовать только контекст github . Дополнительные сведения о выражениях см. в разделе «Выражения».

Вы также можете указать параллелизм на уровне задания. Дополнительные сведения см. в разделе jobs..concurrency .

Когда параллельное задание или рабочий процесс поставлены в очередь, если выполняется другое задание или рабочий процесс, использующий ту же группу параллелизма в репозитории, поставленное в очередь задание или рабочий процесс будет иметь статус в ожидании . Любое ранее ожидающее задание или рабочий процесс в группе параллелизма будет отменено. Чтобы также отменить любое текущее задание или рабочий процесс в той же группе параллелизма, укажите cancel-in-progress: true .

Примеры: использование параллелизма и поведение по умолчанию

  параллелизм: staging_environment
  
  параллелизм: ci-${{ github.ref }}
  

Пример: использование параллелизма для отмены любого выполняемого задания или запуска

  параллелизм:
  группа: ${{ github.ссылка }}
  отмена в процессе: правда
  

Пример: использование резервного значения

Если вы строите имя группы со свойством, которое определено только для определенных событий, вы можете использовать резервное значение. Например, github.head_ref определяется только для событий pull_request . Если ваш рабочий процесс реагирует на другие события в дополнение к событиям pull_request , вам нужно будет предоставить запасной вариант, чтобы избежать синтаксической ошибки. Следующая группа параллелизма отменяет выполняемые задания или работает только с событиями pull_request ; если гитхаб.head_ref не определено, группа параллелизма откажется от идентификатора запуска, который гарантированно будет уникальным и определенным для запуска.

  параллелизм:
  группа: ${{ github.head_ref || github.run_id }}
  отмена в процессе: правда
  

Пример. Отмена выполняемых заданий или запусков только для текущего рабочего процесса

Если у вас есть несколько рабочих процессов в одном репозитории, имена групп параллелизма должны быть уникальными для рабочих процессов, чтобы избежать отмены выполняемых заданий или запусков из других рабочих процессов.В противном случае любое ранее выполнявшееся или отложенное задание будет отменено независимо от рабочего процесса.

Чтобы отменить только текущие запуски одного и того же рабочего процесса, вы можете использовать свойство github.workflow для создания группы параллелизма:

  параллелизм:
  группа: ${{github. workflow}}-${{github.ref}}
  отмена в процессе: правда
  

рабочих мест

Запуск рабочего процесса состоит из одного или нескольких заданий , которые по умолчанию выполняются параллельно.Для последовательного запуска заданий можно определить зависимости от других заданий с помощью ключевого слова jobs..needs .

Каждое задание выполняется в среде исполнителя, указанной параметром run-on .

Вы можете запускать неограниченное количество заданий, пока не выходите за пределы использования рабочего процесса. Дополнительные сведения см. в разделах «Ограничения использования и выставление счетов» для бегунов, размещенных на GitHub, и «О самостоятельных исполнителях» для ограничений на использование бегунов, размещенных на собственном хосте.

Если вам нужно найти уникальный идентификатор задания, выполняемого в рабочем процессе, вы можете использовать GitHub API.Дополнительные сведения см. в разделе «Задания рабочего процесса».

заданий.

Используйте заданий. , чтобы присвоить заданию уникальный идентификатор. Ключ job_id — это строка, а ее значение — карта данных конфигурации задания. Вы должны заменить строкой, уникальной для объекта jobs . должен начинаться с буквы или _ и содержать только буквенно-цифровые символы, - или _ .

Пример: Создание заданий

В этом примере было создано два задания, и их значения job_id равны my_first_job и my_second_job .

  рабочих мест:
  моя_первая_работа:
    Название: Моя первая работа
  моя_вторая_работа:
    Название: Моя вторая работа
  

заданий..name

Использовать заданий..name на имя задания, которое отображается на GitHub.

рабочих мест..разрешения

Для определенного задания вы можете использовать задания . .permissions для изменения разрешений по умолчанию, предоставленных GITHUB_TOKEN , добавляя или удаляя доступ по мере необходимости, чтобы вы разрешали только минимально необходимый доступ. Дополнительные сведения см. в разделе «Аутентификация в рабочем процессе».

Указав разрешение в определении задания, вы можете настроить другой набор разрешений для GITHUB_TOKEN для каждого задания, если это необходимо.Кроме того, вы можете указать разрешения для всех заданий в рабочем процессе. Сведения об определении разрешений на уровне рабочего процесса см. в разделе разрешений .

Доступные области и значения доступа:

  разрешений:
  действия: чтение|запись|нет
  проверяет: чтение|запись|нет
  содержимое: чтение|запись|нет
  развертывания: чтение|запись|нет
  id-токен: чтение|запись|нет
  проблемы: чтение|запись|нет
  обсуждения: читать|писать|нет
  пакеты: чтение|запись|нет
  страницы: чтение|запись|нет
  пулл-реквесты: чтение|запись|нет
  репозиторий-проекты: чтение|запись|нет
  события безопасности: чтение|запись|нет
  статусы: чтение|запись|нет
  

Если вы укажете доступ для любой из этих областей, для всех неуказанных будет установлено значение нет .

Вы можете использовать следующий синтаксис, чтобы определить доступ для чтения или записи для всех доступных областей:

  разрешения: чтение-все|запись-все
  

Вы можете использовать ключ разрешений для добавления и удаления разрешений на чтение для разветвленных репозиториев, но обычно вы не можете предоставлять доступ на запись. Исключением из этого поведения является случай, когда пользователь-администратор выбрал параметр Отправлять токены записи в рабочие процессы из запросов на вытягивание в настройках действий GitHub.Дополнительные сведения см. в разделе «Управление настройками GitHub Actions для репозитория».

Пример: установка разрешений для определенного задания

В этом примере показаны разрешения, установленные для GITHUB_TOKEN , которые будут применяться только к заданию с именем stale . Доступ на запись предоставляется для областей issue и pull-requests . Все остальные области не будут иметь доступа.

  рабочих мест:
  несвежий:
    запуски: ubuntu-последняя

    разрешения:
      вопросы: пишите
      пулл-реквесты: написать

    шаги:
      - использует: action/stale@v3
  

рабочих мест..needs

Использовать задания . . Требуется для определения любых заданий, которые должны быть успешно завершены, прежде чем это задание будет запущено. Это может быть строка или массив строк. Если задание завершается сбоем, все задания, которые в нем нуждаются, пропускаются, если только задания не используют условное выражение, которое заставляет задание продолжаться.

Пример: Требование успешных зависимых заданий
  рабочих мест:
  задание1:
  задание2:
    потребности: работа1
  задание3:
    потребности: [работа1, работа2]
  

В этом примере задание1 должно быть успешно завершено до начала задание2 , а задание3 ожидает завершения как задание1 , так и задание2 .

Задания в этом примере выполняются последовательно:

  1. задание1
  2. задание2
  3. задание3
Пример: успешные зависимые задания не требуются
  рабочих мест:
  задание1:
  задание2:
    потребности: работа1
  задание3:
    если: ${{ всегда() }}
    потребности: [работа1, работа2]
  

В этом примере job3 использует условное выражение always() , поэтому оно всегда выполняется после завершения job1 и job2 , независимо от того, были ли они успешными.Дополнительные сведения см. в разделе «Выражения».

рабочих мест..if

Вы можете использовать jobs..if условно, чтобы предотвратить выполнение задания, если условие не выполнено. Вы можете использовать любой поддерживаемый контекст и выражение для создания условия.

Когда вы используете выражения в условном выражении , если , вы можете опустить синтаксис выражения ( ${{ }} ), поскольку GitHub автоматически оценивает условное выражение , если как выражение. Дополнительные сведения см. в разделе «Выражения».

Пример: запуск задания только для определенного репозитория

В этом примере используется , если , чтобы указать, когда может выполняться задание production-deploy . Он будет работать, только если репозиторий называется octo-repo-prod и находится в организации octo-org . В противном случае задание будет помечено как пропущено .

заданий..runs-on

Использовать заданий..run-on , чтобы определить тип машины, на которой будет выполняться задание. Машина может быть запущена как на GitHub, так и на собственном сервере. Вы можете предоставить запусков в виде одной строки или в виде массива строк. Если вы укажете массив строк, ваш рабочий процесс будет выполняться на локальном исполнителе, метки которого соответствуют всем указанным значениям запусков на , если они доступны. Если вы хотите запустить рабочий процесс на нескольких компьютерах, используйте задания ..strategy .

Выбор исполнителей, размещенных на GitHub

Если вы используете средство выполнения, размещенное на GitHub, каждое задание запускается в новом экземпляре виртуальной среды, указанной параметром run-on .

Доступные типы бегунов, размещенных на GitHub:

Виртуальная среда Метка рабочего процесса YAML Примечания
Windows Server 2022 окна-2022 Метка windows-latest в настоящее время использует образ исполнителя Windows Server 2019.
Виндовс Сервер 2019 windows-последняя версия или windows-2019
Windows Server 2016 [устарела] окна-2016 Перейдите на Windows 2019 или Windows 2022. Для получения дополнительной информации см. сообщение в блоге.
Убунту 20.04 ubuntu-последняя версия или ubuntu-20.04
Убунту 18.04 Ubuntu-18.04
macOS Биг Сур 11 macos-последний или macos-11 Метка macos-latest в настоящее время использует образ бегуна macOS 11.
макОС Каталина 10.15 макос-10.15

Примечание: Виртуальные среды -latest — это последние стабильные образы, предоставляемые GitHub, и они могут быть не самой последней версией операционной системы, доступной у поставщика операционной системы.

Примечание. Образы бета-версии и устаревшие образы предоставляются «как есть», «со всеми ошибками» и «как доступно» и исключаются из соглашения об уровне обслуживания и гарантии. Бета-образы могут не покрываться службой поддержки клиентов.

Пример: Указание операционной системы
  запуски: ubuntu-последняя
  

Дополнительные сведения см. в разделе «Виртуальные среды для исполнителей, размещенных на GitHub».

Выбор собственных бегунов

Чтобы указать локального исполнителя для задания, настройте запусков на в файле рабочего процесса с метками локального исполнителя.

Все бегуны с самостоятельным размещением имеют метку самообслуживания .При использовании только этой метки будет выбран любой независимый бегун. Для выбора исполнителей, отвечающих определенным критериям, таким как операционная система или архитектура, мы рекомендуем предоставить массив меток, который начинается с с самостоятельным размещением (это должно быть указано первым), а затем при необходимости включает дополнительные метки. Когда вы указываете массив меток, задания будут ставиться в очередь на бегунов, имеющих все указанные вами метки.

Хотя метка с самостоятельным размещением не требуется, мы настоятельно рекомендуем указать ее при использовании самостоятельных исполнителей, чтобы гарантировать, что в вашем задании непреднамеренно не будут указаны какие-либо текущие или будущие исполнители, размещенные на GitHub.

Пример: использование меток для выбора питателя
  запуски: [самостоятельный хостинг, Linux]
  

Дополнительные сведения см. в разделах «О самостоятельных средствах выполнения» и «Использование самостоятельных средств выполнения в рабочем процессе».

рабочих мест..environment

Используйте jobs..environment , чтобы определить среду, на которую ссылается задание. Все правила защиты среды должны пройти, прежде чем задание, ссылающееся на среду, будет отправлено исполнителю.Дополнительные сведения см. в разделе «Использование сред для развертывания».

Вы можете предоставить среду только как среду с именем или как объект среды с именем и URL . URL-адрес сопоставляется с environment_url в API развертывания. Дополнительные сведения об API развертывания см. в разделе «Развертывания».

Пример: использование одного имени среды

  среда: staging_environment
  

Пример: использование имени среды и URL-адреса

  среда:
  имя: production_environment
  адрес: https://github.ком
  

URL-адрес может быть выражением и может использовать любой контекст, кроме контекста секретов . Дополнительные сведения о выражениях см. в разделе «Выражения».

Пример: использование выходных данных в качестве URL-адреса

  среда:
  имя: production_environment
  URL-адрес: ${{ steps.step_id.outputs.url_output }}
  

заданий..concurrency

Примечание: Если параллелизм указан на уровне задания, порядок заданий не гарантируется или выполняется очередь в пределах 5 минут друг от друга.

Вы можете использовать заданий..concurrency , чтобы гарантировать, что только одно задание или рабочий процесс, использующий одну и ту же группу параллелизма, будет выполняться одновременно. Группа параллелизма может быть любой строкой или выражением. Выражение может использовать любой контекст, кроме контекста секретов . Дополнительные сведения о выражениях см. в разделе «Выражения».

Вы также можете указать параллелизм на уровне рабочего процесса. Дополнительные сведения см. в разделе concurrency .

Когда параллельное задание или рабочий процесс поставлены в очередь, если выполняется другое задание или рабочий процесс, использующий ту же группу параллелизма в репозитории, поставленное в очередь задание или рабочий процесс будет иметь статус в ожидании . Любое ранее ожидающее задание или рабочий процесс в группе параллелизма будет отменено. Чтобы также отменить любое текущее задание или рабочий процесс в той же группе параллелизма, укажите cancel-in-progress: true .

Примеры: использование параллелизма и поведение по умолчанию

  параллелизм: staging_environment
  
  параллелизм: ci-${{ github.ссылка }}
  

Пример: использование параллелизма для отмены любого выполняемого задания или запуска

  параллелизм:
  группа: ${{github.ref}}
  отмена в процессе: правда
  

Пример: использование резервного значения

Если вы строите имя группы со свойством, которое определено только для определенных событий, вы можете использовать резервное значение. Например, github.head_ref определяется только для событий pull_request . Если ваш рабочий процесс реагирует на другие события в дополнение к событиям pull_request , вам нужно будет предоставить запасной вариант, чтобы избежать синтаксической ошибки.Следующая группа параллелизма отменяет выполняемые задания или работает только с событиями pull_request ; если github. head_ref не определено, группа параллелизма будет использовать идентификатор запуска, который гарантированно будет уникальным и определенным для запуска.

  параллелизм:
  группа: ${{ github.head_ref || github.run_id }}
  отмена в процессе: правда
  

Пример. Отмена выполняемых заданий или запусков только для текущего рабочего процесса

Если у вас есть несколько рабочих процессов в одном репозитории, имена групп параллелизма должны быть уникальными для рабочих процессов, чтобы избежать отмены выполняемых заданий или запусков из других рабочих процессов.В противном случае любое ранее выполнявшееся или отложенное задание будет отменено независимо от рабочего процесса.

Чтобы отменить только текущие запуски одного и того же рабочего процесса, вы можете использовать свойство github.workflow для создания группы параллелизма:

  параллелизм:
  группа: ${{github.workflow}}-${{github.ref}}
  отмена в процессе: правда
  

заданий. .outputs

Вы можете использовать jobs..outputs для создания карты выходных данных для задания.Выходные данные задания доступны для всех подчиненных заданий, которые зависят от этого задания. Дополнительные сведения об определении зависимостей заданий см. в разделе jobs..needs .

Выходные данные задания представляют собой строки, а выходные данные задания, содержащие выражения, оцениваются в средстве выполнения в конце каждого задания. Выводы, содержащие секреты, редактируются в исполнителе и не отправляются в GitHub Actions.

Чтобы использовать выходные данные задания в зависимом задании, вы можете использовать контекст need . Дополнительные сведения см. в разделе «Контексты."

Пример: определение выходных данных для задания

  рабочих мест:
  задание1:
    запуски: ubuntu-последняя
    
    выходы:
      вывод1: ${{ шагов.шаг1.выходов.тест}}
      вывод2: ${{ шагов. шаг2.выходов.тест}}
    шаги:
      - идентификатор: шаг1
        запустить: echo "::set-output name=test::hello"
      - идентификатор: шаг2
        запустить: эхо "::set-output name=test::world"
  задание2:
    запуски: ubuntu-последняя
    потребности: работа1
    шаги:
      - запустить: эхо ${{needs.job1.outputs.output1}} ${{needs.job1.outputs.вывод2}}
  

рабочих мест..env

Карта переменных среды, доступных для всех шагов задания. Вы также можете установить переменные среды для всего рабочего процесса или отдельного шага. Для получения дополнительной информации см. задания env и ..steps[*].env .

Если с одним и тем же именем определено несколько переменных среды, GitHub использует наиболее конкретную переменную среды. Например, переменная среды, определенная на шаге, переопределит переменные задания и рабочего процесса с тем же именем во время выполнения шага.Переменная, определенная для задания, переопределит переменную рабочего процесса с тем же именем во время выполнения задания.

Пример

  рабочих мест:
  задание1:
    среда:
      FIRST_NAME: Мона
  

заданий..defaults

Используйте jobs..defaults , чтобы создать карту настроек по умолчанию, которые будут применяться ко всем шагам в задании. Вы также можете установить настройки по умолчанию для всего рабочего процесса. Дополнительные сведения см. в разделе по умолчанию .

Если с одним и тем же именем определено более одного параметра по умолчанию, GitHub использует наиболее конкретный параметр по умолчанию. Например, параметр по умолчанию, определенный в задании, переопределит параметр по умолчанию с тем же именем, который определен в рабочем процессе.

заданий..defaults.run

Использовать заданий. .defaults.run для предоставления оболочки по умолчанию и рабочего каталога для всех выполнить шагов задания. Контекст и выражения не допускаются в этом разделе.

Вы можете указать параметры оболочки и рабочего каталога по умолчанию для всех выполнения шагов задания. Вы также можете установить настройки по умолчанию для запуска для всего рабочего процесса. Дополнительные сведения см. в разделе jobs.defaults.run . Вы не можете использовать контексты или выражения в этом ключевом слове.

Если с одним и тем же именем определено более одного параметра по умолчанию, GitHub использует наиболее конкретный параметр по умолчанию. Например, параметр по умолчанию, определенный в задании, переопределит параметр по умолчанию с тем же именем, который определен в рабочем процессе.

Пример: настройка по умолчанию
выполнить параметров шага для задания
  рабочих мест:
  задание1:
    запуски: ubuntu-последняя
    значения по умолчанию:
      бегать:
        оболочка: баш
        рабочий каталог: скрипты
  

заданий. .steps

Задание содержит последовательность задач, называемую шагов . Шаги могут запускать команды, запускать задачи установки или запускать действие в вашем репозитории, общедоступном репозитории или действие, опубликованное в реестре Docker.Не все шаги выполняют действия, но все действия выполняются как шаг. Каждый шаг выполняется в собственном процессе в среде исполнителя и имеет доступ к рабочей области и файловой системе. Поскольку шаги выполняются в своем собственном процессе, изменения переменных среды не сохраняются между шагами. GitHub предоставляет встроенные шаги для настройки и выполнения задания.

Вы можете выполнять неограниченное количество шагов, если вы находитесь в пределах использования рабочего процесса. Дополнительные сведения см. в разделах «Ограничения использования и выставление счетов» для бегунов, размещенных на GitHub, и «О самостоятельных исполнителях» для ограничений на использование бегунов, размещенных на собственном хосте.

Пример

  название: Привет от Моны

на: нажать

вакансии:
  моя работа:
    Название: Моя работа
    запуски: ubuntu-последняя
    шаги:
      - имя: Распечатать приветствие
        среда:
          MY_VAR: Привет! Меня зовут
          FIRST_NAME: Мона
          MIDDLE_NAME:
          LAST_NAME: Октокот
        запустить: |
          эхо $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME.
  

заданий..steps[*].id

Уникальный идентификатор шага.Вы можете использовать идентификатор для ссылки на шаг в контекстах. Дополнительные сведения см. в разделе «Контексты».

заданий..steps[*].if

Вы можете использовать условное выражение , если , чтобы предотвратить запуск шага, если условие не выполнено. Вы можете использовать любой поддерживаемый контекст и выражение для создания условия.

Когда вы используете выражения в условном выражении , если , вы можете опустить синтаксис выражения ( ${{ }} ), поскольку GitHub автоматически оценивает условное выражение , если как выражение. Дополнительные сведения см. в разделе «Выражения».

Пример: Использование контекстов

Этот шаг выполняется, только если тип события — pull_request , а действие — unassigned .

  шагов:
 - название: Мой первый шаг
   если: ${{ github.event_name == 'pull_request' && github.event.action == 'unassigned' }}
   run: echo Это событие представляет собой запрос на вытягивание, в котором был удален уполномоченный.
  
Пример: использование функций проверки состояния

Мой шаг резервного копирования запускается только в случае сбоя предыдущего шага задания.Дополнительные сведения см. в разделе «Выражения».

  шагов:
  - название: Мой первый шаг
    использует: octo-org/action-name@main
  - название: Мой резервный шаг
    если: ${{ сбой() }}
    использует: действия/героку@1.0.0
  

заданий..steps[*].name

Имя вашего шага для отображения на GitHub.

заданий..steps[*].uses

Выбирает действие, которое будет выполняться как часть шага вашего задания. Действие — это многократно используемая единица кода.Вы можете использовать действие, определенное в том же репозитории, что и рабочий процесс, в общедоступном репозитории или в опубликованном образе контейнера Docker.

Настоятельно рекомендуется указать версию используемого вами действия, указав номер Git ref, SHA или тега Docker. Если вы не укажете версию, это может нарушить ваши рабочие процессы или вызвать непредвиденное поведение, когда владелец действия публикует обновление.

  • Использование SHA фиксации выпущенной версии действия является самым безопасным с точки зрения стабильности и безопасности.
  • Использование конкретной основной версии позволяет получать критические исправления и исправления безопасности, сохраняя при этом совместимость. Это также гарантирует, что ваш рабочий процесс все еще должен работать.
  • Использование ветки действия по умолчанию может быть удобным, но если кто-то выпустит новую основную версию с критическим изменением, ваш рабочий процесс может прерваться.

Для некоторых действий требуются входные данные, которые необходимо задать с помощью ключевого слова с . Просмотрите файл README действия, чтобы определить необходимые входные данные.

Действия — это либо файлы JavaScript, либо контейнеры Docker. Если действие, которое вы используете, является контейнером Docker, вы должны запустить задание в среде Linux. Дополнительные сведения см. в разделе прогонов .

Пример: использование версионных действий
  шагов:
  
  - использует: action/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675
  
  - использует: action/checkout@v2
  
  - использует: action/[email protected]
  
  - использует: action/checkout@main
  
Пример: использование публичного действия

{владелец}/{repo}@{ref}

Вы можете указать ветку, ссылку или SHA в общедоступном репозитории GitHub.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        
        использует: action/heroku@main
      - название: Мой второй шаг
        
        использует: действия/[email protected]
  
Пример: использование общего действия в подкаталоге

{владелец}/{репо}/{путь}@{ссылка}

Подкаталог в общедоступном репозитории GitHub в определенной ветке, ссылке или SHA.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        использует: действия/aws/ec2@main
  
Пример: использование действия в том же репозитории, что и рабочий процесс

./путь/к/каталогу

Путь к каталогу, содержащему действие в репозитории вашего рабочего процесса. Вы должны проверить свой репозиторий перед использованием действия.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - имя: Проверить репозиторий
        использует: action/checkout@v2
      - имя: Использовать локальное мое действие
        использует: . /.github/actions/my-action
  
Пример: использование действия Docker Hub

докер://{изображение}:{тег}

Образ Docker, опубликованный в Docker Hub.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        использует: докер://alpine:3.8
  
Пример: использование реестра контейнеров пакетов GitHub

докер://{хост}/{изображение}:{тег}

Образ Docker в реестре контейнеров пакетов GitHub.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        использует: docker://ghcr.io/OWNER/IMAGE_NAME
  
Пример: использование действия общедоступного реестра Docker

докер://{хост}/{изображение}:{тег}

Образ Docker в общедоступном реестре.В этом примере используется реестр контейнеров Google по адресу gcr.io .

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        использует: docker://gcr. io/cloud-builders/gradle
  
Пример: использование действия внутри частного репозитория, отличного от рабочего процесса

Ваш рабочий процесс должен извлекать частный репозиторий и локально ссылаться на действие. Создайте токен личного доступа и добавьте токен в качестве зашифрованного секрета. Дополнительные сведения см. в разделах «Создание личного токена доступа» и «Зашифрованные секреты."

Замените PERSONAL_ACCESS_TOKEN в примере на имя вашего секрета.

  рабочих мест:
  моя_первая_работа:
    шаги:
      - имя: Проверить репозиторий
        использует: action/checkout@v2
        с участием:
          репозиторий: octocat/my-private-repo
          ссылка: v1.0
          токен: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
          путь: ./.github/actions/my-private-repo
      - имя: Запустить мое действие
        использует: ./.github/actions/my-private-repo/my-action
  

рабочих мест..steps[*]. run

Запускает программы командной строки, используя оболочку операционной системы. Если вы не укажете имя , именем шага по умолчанию будет текст, указанный в команде run .

По умолчанию команды выполняются с использованием оболочек без входа в систему. Вы можете выбрать другую оболочку и настроить оболочку, используемую для запуска команд. Дополнительные сведения см. в разделе jobs..steps[*].shell .

Каждое ключевое слово run представляет новый процесс и оболочку в среде выполнения.Когда вы предоставляете многострочные команды, каждая строка выполняется в одной и той же оболочке. Например:

Используя ключевое слово work-directory , вы можете указать рабочий каталог, в котором будет выполняться команда.

  - имя: Очистить временный каталог
  выполнить: пм -рф *
  рабочий каталог: ./temp
  

заданий..steps[*].shell

Вы можете переопределить настройки оболочки по умолчанию в операционной системе бегуна, используя ключевое слово оболочки . Вы можете использовать встроенные ключевые слова оболочки или определить собственный набор параметров оболочки. Команда оболочки, которая выполняется внутри, выполняет временный файл, содержащий команды, указанные в ключевом слове run .

Bash
Поддерживаемые платформы Shell Parameter Описание Команда
Все Bash Оболочка по умолчанию на платформах без окон со взысканием до ш .При указании оболочки bash в Windows используется оболочка bash, включенная в Git для Windows. bash --noprofile --norc -eo pipefail {0}
Все pwsh Ядро PowerShell. GitHub добавит расширение .ps1 к имени вашего скрипта. pwsh -command ". '{0}'"
Все python Выполняет команду python. python {0}
Linux / macOS sh Резервное поведение для платформ, отличных от Windows, если не предоставлена ​​оболочка и bash не найден в пути. sh -e {0}
Windows cmd GitHub добавляет расширение . %ComSpec% /D /E:ON /V:OFF /S /C "ЗВОНОК "{0}"" .
Windows pwsh Это оболочка по умолчанию, используемая в Windows. Ядро PowerShell. GitHub добавит расширение .ps1 к имени вашего скрипта.Если на вашем локальном исполнителе Windows не установлен PowerShell Core , вместо него используется PowerShell Desktop . pwsh -команда ". '{0}'" .
Windows powershell Рабочий стол PowerShell. GitHub добавит расширение .ps1 к имени вашего скрипта. powershell -command ". '{0}'" .
Пример: запуск скрипта с помощью bash
  шагов:
  - имя: Показать путь
    запустить: эхо $PATH
    оболочка: баш
  
Пример: запуск скрипта с помощью Windows
cmd
  шагов:
  - имя: Показать путь
    запустить: эхо %PATH%
    оболочка: cmd
  
Пример: выполнение скрипта с помощью PowerShell Core
  шагов:
  - имя: Показать путь
    запустить: эхо ${env:PATH}
    оболочка: pwsh
  
Пример: использование PowerShell Desktop для запуска сценария
  шагов:
  - имя: Показать путь
    запустить: эхо ${env:PATH}
    оболочка: пауэршелл
  
Пример: запуск скрипта Python
  шагов:
  - имя: Показать путь
    запустить: |
      импорт ОС
      печать (ос.окружение['ПУТЬ'])
    оболочка: питон
  
Пользовательская оболочка

Вы можете установить значение оболочки в строку шаблона, используя команду […options] {0} [. .more_options] . GitHub интерпретирует первое слово строки, разделенное пробелами, как команду и вставляет имя файла для временного скрипта по адресу {0} .

Например:

  шагов:
  - name: Показать переменные окружения и их значения
    запустить: |
      распечатать %ENV
    оболочка: перл {0}
  

Используемая команда, perl в этом примере, должна быть установлена ​​на исполнителе.

Сведения о программном обеспечении, включенном в средства выполнения, размещенные на GitHub, см. в разделе «Спецификации средств выполнения, размещенных на GitHub».

Коды выхода и предпочтения действий при ошибках

Для ключевых слов встроенной оболочки мы предоставляем следующие значения по умолчанию, которые выполняются исполнителями, размещенными на GitHub. Вы должны использовать эти рекомендации при запуске сценариев оболочки.

  • баш / ш :

    • Быстрый отказ при использовании set -eo pipefail : По умолчанию для bash и встроенной оболочки . Это также значение по умолчанию, когда вы не предоставляете опцию на платформах, отличных от Windows.
    • Вы можете отказаться от отказоустойчивости и получить полный контроль, указав строку шаблона в параметрах оболочки. Например, bash {0} .
    • sh-подобные оболочки завершаются с кодом выхода последней команды, выполненной в сценарии, что также является поведением по умолчанию для действий. Бегун сообщит о статусе шага как неудача/успешно на основе этого кода выхода.
  • powershell / pwsh

    • Отказоустойчивое поведение, когда это возможно.Для встроенной оболочки pwsh и powershell мы добавим $ErrorActionPreference = 'stop' к содержимому скрипта.
    • Мы добавляем if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } к сценариям powershell, поэтому статусы действий отражают последний код выхода сценария.
    • Пользователи всегда могут отказаться, не используя встроенную оболочку и указав собственный параметр оболочки, например: pwsh -File {0} или powershell -Command "& '{0}'" , в зависимости от необходимости. .
  • команда

    • По-видимому, нет другого способа полностью выбрать отказоустойчивое поведение, кроме написания сценария для проверки каждого кода ошибки и соответствующего реагирования. Поскольку мы не можем обеспечить такое поведение по умолчанию, вам необходимо прописать это поведение в своем сценарии.
    • cmd.exe завершится с уровнем ошибки последней выполненной программы и вернет код ошибки бегуну. Это поведение внутренне согласуется с предыдущим поведением по умолчанию sh и pwsh и является cmd.exe по умолчанию, поэтому это поведение остается неизменным.

заданий..steps[*].with

Карта входных параметров, определяемых действием. Каждый входной параметр представляет собой пару ключ/значение. Входные параметры задаются как переменные среды. Переменная имеет префикс INPUT_ и преобразуется в верхний регистр.

Пример

Определяет три входных параметра ( first_name , middle_name и last_name ), определенных действием hello_world .Эти входные переменные будут доступны для действия hello-world как переменные среды INPUT_FIRST_NAME , INPUT_MIDDLE_NAME и INPUT_LAST_NAME .

  рабочих мест:
  моя_первая_работа:
    шаги:
      - название: Мой первый шаг
        использует: действия/hello_world@main
        с участием:
          first_name: Мона
          отчество:
          last_name: Октокот
  

заданий..steps[*].with.args

Строка , определяющая входные данные для контейнера Docker.GitHub передает аргументов в ENTRYPOINT контейнера при запуске контейнера. Массив строк не поддерживается этим параметром.

Пример
  шагов:
  - name: Объясните, почему эта работа выполнялась
    использует: octo-org/action-name@main
    с участием:
      точка входа: /bin/echo
      args: событие ${{ github.event_name }} инициировало этот шаг.
  

args используются вместо инструкции CMD в Dockerfile .Если вы используете CMD в своем Dockerfile , используйте рекомендации, упорядоченные по предпочтениям:

  1. Задокументируйте необходимые аргументы в файле README действия и исключите их из инструкции CMD .
  2. Использовать значения по умолчанию, которые позволяют использовать действие без указания каких-либо аргументов .
  3. Если действие выставляет флаг --help или что-то подобное, используйте его по умолчанию, чтобы сделать ваше действие самодокументируемым.

рабочих мест. .steps[*].with.entrypoint

Переопределяет Docker ENTRYPOINT в Dockerfile или задает его, если он еще не был указан. В отличие от инструкции Docker ENTRYPOINT , которая имеет форму оболочки и исполняемого файла, ключевое слово entrypoint принимает только одну строку, определяющую исполняемый файл для запуска.

Пример
  шагов:
  - имя: Запустить пользовательскую команду
    использует: octo-org/action-name@main
    с участием:
      точка входа: /a/other/executable
  

Ключевое слово точка входа предназначено для использования с действиями контейнера Docker, но вы также можете использовать его с действиями JavaScript, которые не определяют никаких входных данных.

заданий..steps[*].env

Задает переменные среды для шагов, которые будут использоваться в среде бегуна. Вы также можете установить переменные среды для всего рабочего процесса или задания. Для получения дополнительной информации см. задания env и ..env .

Если с одним и тем же именем определено несколько переменных среды, GitHub использует наиболее конкретную переменную среды. Например, переменная среды, определенная на шаге, переопределит переменные задания и рабочего процесса с тем же именем во время выполнения шага.Переменная, определенная для задания, переопределит переменную рабочего процесса с тем же именем во время выполнения задания.

Публичные действия могут указывать ожидаемые переменные среды в файле README. Если вы устанавливаете секрет в переменной среды, вы должны установить секреты, используя контекст secrets . Дополнительные сведения см. в разделах «Использование переменных среды» и «Контексты».

Пример
  шагов:
  - название: Мое первое действие
    среда:
      GITHUB_TOKEN: секреты ${{.GITHUB_TOKEN }}
      FIRST_NAME: Мона
      LAST_NAME: Октокот
  

заданий. .steps[*].continue-on-error

Предотвращает сбой задания при сбое шага. Установите значение true , чтобы разрешить выполнение задания в случае сбоя этого шага.

заданий..steps[*].timeout-minutes

Максимальное количество минут для выполнения шага перед уничтожением процесса.

заданий..timeout-minutes

Максимальное количество минут, в течение которого задание может выполняться, прежде чем GitHub автоматически отменит его.По умолчанию: 360

Если время ожидания превышает ограничение времени выполнения задания для исполнителя, задание будет отменено, когда вместо этого будет достигнуто ограничение времени выполнения. Дополнительные сведения об ограничениях времени выполнения задания см. в разделах «Ограничения использования и выставление счетов» для исполнителей, размещенных на GitHub, и «О самостоятельных исполнителях» для ограничений на использование исполнителей, размещенных на собственном сервере.

рабочих мест..strategy

Используйте заданий..strategy , чтобы создать матрицу построения для ваших заданий.Вы можете определить различные варианты для запуска каждого задания.

рабочих мест..strategy.matrix

Используйте заданий..strategy.matrix для определения матрицы различных конфигураций заданий. Матрица позволяет создавать несколько заданий, выполняя подстановку переменных в одном определении задания. Например, вы можете использовать матрицу для создания заданий для более чем одной поддерживаемой версии языка программирования, операционной системы или инструмента. Матрица повторно использует конфигурацию задания и создает задание для каждой настроенной вами матрицы.

Матрица заданий может генерировать максимум 256 заданий за один запуск рабочего процесса. Это ограничение также распространяется на самостоятельных бегунов.

Каждый параметр, который вы определяете в матрице , имеет ключ и значение. Определенные вами ключи становятся свойствами в контексте матрицы , и вы можете ссылаться на свойство в других областях вашего файла рабочего процесса. Например, если вы определяете ключ os , содержащий массив операционных систем, вы можете использовать свойство matrix.os в качестве значения ключевого слова run-on , чтобы создать задание для каждой операционной системы.Дополнительные сведения см. в разделе «Контексты».

Порядок, в котором вы определяете матрицу , имеет значение. Первый параметр, который вы определите, будет первым заданием, выполняемым в вашем рабочем процессе.

Пример: запуск нескольких версий Node.js

Вы можете указать матрицу, указав массив для параметров конфигурации. Например, если средство выполнения поддерживает версии Node.js 10, 12 и 14, вы можете указать массив этих версий в матрице .

В этом примере создается матрица из трех заданий путем установки ключа узла на массив из трех узлов. версии js. Чтобы использовать матрицу, в примере свойство контекста matrix.node задается как значение входного параметра действия setup-node node-version . В результате будут запущены три задания, каждое из которых использует свою версию Node.js.

  стратегия:
  матрица:
    узел: [10, 12, 14]
шаги:
  
  - использует: action/setup-node@v2
    с участием:
      
      версия узла: ${{ matrix.node }}
  

Действие setup-node является рекомендуемым способом настройки узла.js при использовании бегунов, размещенных на GitHub. Для получения дополнительной информации см. действие setup-node .

Пример: работа с несколькими операционными системами

Вы можете создать матрицу для запуска рабочих процессов в более чем одной операционной системе исполнителя. Вы также можете указать более одной конфигурации матрицы. В этом примере создается матрица из 6 заданий:

  • 2 операционные системы, указанные в массиве os
  • 3 версии Node. js, указанные в массиве узлов

При определении матрицы операционных систем необходимо установить значение запусков на матрицу .свойство контекста os , которое вы определили.

  запусков: ${{ matrix.os }}
стратегия:
  матрица:
    ОС: [убунту-18.04, убунту-20.04]
    узел: [10, 12, 14]
шаги:
  - использует: action/setup-node@v2
    с участием:
      версия узла: ${{ matrix.node }}
  

Чтобы узнать о поддерживаемых параметрах конфигурации для средств выполнения, размещенных на GitHub, см. раздел «Виртуальные среды для средств выполнения, размещенных на GitHub».

Пример: Включение дополнительных значений в комбинации

Вы можете добавить дополнительные параметры конфигурации к уже существующему заданию построения матрицы.Например, если вы хотите использовать определенную версию npm , когда выполняется задание, использующее windows-latest и версию 8 узла , вы можете использовать include , чтобы указать эту дополнительную опцию.

  запусков: ${{ matrix.os }}
стратегия:
  матрица:
    os: [macos-последняя, ​​windows-последняя, ​​ubuntu-18.04]
    узел: [8, 10, 12, 14]
    включают:
      
      
      - ОС: windows-последняя
        узел: 8
        нпм: 6
  
Пример: Включение новых комбинаций

Вы можете использовать include для добавления новых заданий в матрицу сборки.Любые несоответствующие конфигурации включения добавляются в матрицу. Например, если вы хотите использовать узел версии 14 для сборки в нескольких операционных системах, но вам нужно одно дополнительное экспериментальное задание с использованием узла версии 15 в Ubuntu, вы можете использовать include , чтобы указать это дополнительное задание.

  запусков: ${{ matrix.os }}
стратегия:
  матрица:
    узел: [14]
    os: [macos-последняя, ​​windows-последняя, ​​ubuntu-18.04]
    включают:
      - узел: 15
        ОС: Ubuntu-18.04
        экспериментальный: правда
  
Пример: Исключение конфигураций из матрицы

Можно удалить определенные конфигурации, определенные в матрице построения, с помощью параметра исключить . Использование exclude удаляет задание, определенное матрицей сборки. Количество заданий представляет собой перекрестное произведение количества операционных систем ( os ), включенных в предоставленные вами массивы, за вычетом любых вычитаний ( исключая ).

  запусков: ${{ matrix.os }}
стратегия:
  матрица:
    os: [macos-последняя, ​​windows-последняя, ​​ubuntu-18.04]
    узел: [8, 10, 12, 14]
    исключать:
      
      - os: macos-последняя
        узел: 8
  

Примечание: Все включают комбинаций, обрабатываются после исключают .Это позволяет использовать include для добавления обратных комбинаций, которые ранее были исключены.

Использование переменных среды в матрице

Вы можете добавить пользовательские переменные среды для каждой комбинации тестов, используя ключ include . Затем вы можете обратиться к пользовательским переменным среды на более позднем этапе.

В этом примере элементы матрицы для узла версии настроены на использование разных значений для переменных среды site и datacenter .Шаг подробностей сайта Echo использует env : ${{ matrix.env }} для ссылки на пользовательские переменные:

  имя: Node.js CI
на: [нажать]
вакансии:
  строить:
    запуски: ubuntu-последняя
    стратегия:
      матрица:
       включают:
         - версия узла: 10.x
           сайт: "прод"
           центр обработки данных: "site-a"
         - версия узла: 12.x
           сайт: "Дэв"
           центр обработки данных: "site-b"
    шаги:
      - имя: Детали сайта Echo
        среда:
          САЙТ: ${{матрица.сайт }}
          ЦЕНТР ДАННЫХ: ${{ matrix.datacenter }}
        выполнить: эхо $SITE $DATACENTER
  

рабочих мест..strategy.fail-fast

Когда для jobs..strategy.fail-fast установлено значение true , GitHub отменяет все выполняемые задания, если какое-либо задание matrix завершается сбоем. По умолчанию: правда

рабочих мест..strategy.max-parallel

Использовать заданий..strategy.max-parallel , чтобы установить максимальное количество заданий, которые могут выполняться одновременно при использовании стратегии задания матрицы .По умолчанию GitHub максимизирует количество параллельно выполняемых заданий в зависимости от доступных исполнителей на виртуальных машинах, размещенных на GitHub.

  стратегия:
  макс-параллельно: 2
  

заданий..продолжить-при-ошибке

Предотвращает сбой рабочего процесса при сбое задания. Установите значение true , чтобы разрешить выполнение рабочего процесса в случае сбоя этого задания.

Пример: Предотвращение сбоя выполнения рабочего процесса при выполнении определенного сбойного матричного задания

Можно разрешить сбой определенных заданий в матрице заданий без сбоя выполнения рабочего процесса. Например, если вы хотите разрешить только экспериментальное задание с узлом , установленным на 15 , без сбоя запуска рабочего процесса.

  запусков: ${{ matrix.os }}
продолжение при ошибке: ${{ matrix.experimental }}
стратегия:
  отказоустойчивость: ложь
  матрица:
    узел: [13, 14]
    ОС: [macos-последняя, ​​Ubuntu-18.04]
    экспериментальный: [ложь]
    включают:
      - узел: 15
        ОС: Ubuntu-18.04
        экспериментальный: правда
  

рабочих мест..container

Примечание: Если ваши рабочие процессы используют действия контейнера Docker, контейнеры заданий или контейнеры служб, вы должны использовать средство запуска Linux:

  • Если вы используете средства выполнения, размещенные на GitHub, вы должны использовать средство выполнения Ubuntu.
  • Если вы используете собственные средства выполнения, вы должны использовать компьютер с Linux в качестве средства выполнения и должен быть установлен Docker.

Используйте задания ..container для создания контейнера для выполнения любых шагов задания, для которых еще не указан контейнер. Если у вас есть шаги, в которых используются действия сценария и контейнера, действия контейнера будут выполняться как одноуровневые контейнеры в той же сети с теми же подключениями тома.

Если вы не установите контейнер , все шаги будут выполняться непосредственно на хосте, указанном параметром run-on , если только шаг не относится к действию, настроенному для запуска в контейнере.

Пример: выполнение задания в контейнере

  рабочих мест:
  моя работа:
    контейнер:
      изображение: узел: 14.16
      среда:
        NODE_ENV: разработка
      порты:
        - 80
      тома:
        - my_docker_volume:/volume_mount
      опции: --cpus 1
  

При указании только образа контейнера ключевое слово image можно опустить.

  рабочих мест:
  моя работа:
    контейнер: узел: 14. 16
  

заданий..контейнер.изображение

Используйте jobs..container.image , чтобы определить образ Docker, который будет использоваться в качестве контейнера для запуска действия. Значение может быть именем образа Docker Hub или именем реестра.

заданий..container.credentials

Если реестр контейнеров образа требует аутентификации для извлечения образа, вы можете использовать задания ..container.credentials , чтобы установить карту из имени пользователя и пароля .Учетные данные — это те же значения, которые вы бы предоставили команде docker login .

Пример: определение учетных данных для реестра контейнеров
  контейнер:
  изображение: ghcr.io/владелец/изображение
  реквизиты для входа:
     имя пользователя: ${{github.actor}}
     пароль: ${{ secrets.github_token }}
  

рабочих мест. .container.env

Использовать задания ..container.env для установки карты переменных среды в контейнере.

заданий..container.ports

Использовать заданий..container.ports для установки массива портов для предоставления в контейнере.

заданий..container.volumes

Использовать заданий..container.volumes , чтобы задать массив томов для использования контейнером. Тома можно использовать для обмена данными между службами или другими этапами задания. Вы можете указать именованные тома Docker, анонимные тома Docker или привязать монтирование к хосту.

Чтобы указать том, вы указываете исходный и конечный путь:

<источник>:<путь_назначения> .

— это имя тома или абсолютный путь на хост-компьютере, а — абсолютный путь в контейнере.

Пример: монтирование томов в контейнер
  томов:
  - my_docker_volume:/volume_mount
  - /данные/мои_данные
  - /источник/каталог:/пункт назначения/каталог
  

рабочих мест..container.options

Используйте задания . .container.options для настройки дополнительных параметров ресурсов контейнера Docker. Список параметров см. в разделе « docker create options».

Предупреждение: Параметр --network не поддерживается.

рабочих мест..services

Примечание: Если ваши рабочие процессы используют действия контейнера Docker, контейнеры заданий или контейнеры служб, вы должны использовать средство запуска Linux:

  • Если вы используете средства выполнения, размещенные на GitHub, вы должны использовать средство выполнения Ubuntu.
  • Если вы используете собственные средства выполнения, вы должны использовать компьютер с Linux в качестве средства выполнения и должен быть установлен Docker.

Используется для размещения сервисных контейнеров для задания в рабочем процессе. Контейнеры служб полезны для создания баз данных или служб кэширования, таких как Redis. Средство выполнения автоматически создает сеть Docker и управляет жизненным циклом сервисных контейнеров.

Если вы настроили свое задание для запуска в контейнере или ваш шаг использует действия контейнера, вам не нужно сопоставлять порты для доступа к службе или действию.Docker автоматически предоставляет все порты между контейнерами в одной и той же пользовательской мостовой сети Docker. Вы можете напрямую ссылаться на сервисный контейнер по его имени хоста. Имя хоста автоматически сопоставляется с именем метки, которое вы настраиваете для службы в рабочем процессе.

Если вы настроили задание для запуска непосредственно на компьютере исполнителя, а ваш шаг не использует действие контейнера, вы должны сопоставить все необходимые порты контейнера службы Docker с хостом Docker (машиной исполнителя). Вы можете получить доступ к контейнеру службы, используя localhost и сопоставленный порт.

Дополнительные сведения о различиях между контейнерами сетевых служб см. в разделе «О контейнерах служб».

Пример: использование локального хоста

В этом примере создаются две службы: nginx и redis. Когда вы указываете порт хоста Docker, но не порт контейнера, порт контейнера случайным образом назначается свободному порту. GitHub устанавливает назначенный порт контейнера в контексте ${{job.services..ports}} . В этом примере вы можете получить доступ к портам сервисного контейнера, используя задание ${{.services.nginx.ports['8080'] }} и ${{ job.services.redis.ports['6379'] }} контекстов.

  услуги:
  нгинкс:
    изображение: nginx
    
    порты:
      - 8080:80
  редис:
    изображение: редис
    
    порты:
      - 6379/TCP
  

заданий..services..image

Образ Docker для использования в качестве сервисного контейнера для запуска действия. Значение может быть именем образа Docker Hub или именем реестра.

рабочих мест..services..credentials

Если реестр контейнеров образа требует аутентификации для извлечения образа, вы можете использовать задания ..container.credentials , чтобы установить карту из имени пользователя и пароля . Учетные данные — это те же значения, которые вы бы предоставили команде docker login .

Пример
  услуги:
  мойсервис1:
    изображение: ghcr.io/owner/myservice1
    реквизиты для входа:
      имя пользователя: ${{ github.актер }}
      пароль: ${{ secrets.github_token }}
  мойсервис2:
    изображение: dockerhub_org/myservice2
    реквизиты для входа:
      имя пользователя: ${{ secrets.DOCKER_USER }}
      пароль: ${{ secrets.DOCKER_PASSWORD }}
  

заданий..services..env

Задает карту переменных среды в контейнере службы.

заданий..services..ports

Задает массив портов для предоставления в контейнере службы.

заданий..services..volumes

Задает массив томов для использования сервисным контейнером. Тома можно использовать для обмена данными между службами или другими этапами задания. Вы можете указать именованные тома Docker, анонимные тома Docker или привязать монтирование к хосту.

Чтобы указать том, вы указываете исходный и конечный путь:

<источник>:<путь_назначения> .

— это имя тома или абсолютный путь на хост-компьютере, а — абсолютный путь в контейнере.

Пример
  томов:
  - my_docker_volume:/volume_mount
  - /данные/мои_данные
  - /источник/каталог:/пункт назначения/каталог
  

заданий..services.. options

Дополнительные параметры ресурсов контейнера Docker. Список параметров см. в разделе « docker create options».

Предупреждение: Параметр --network не поддерживается.

заданий..использует

Расположение и версия повторно используемого файла рабочего процесса для запуска в качестве задания. Используйте один из следующих синтаксисов:

  • {владелец}/{репозиторий}/{путь}/{имя файла}@{ref} для повторного использования рабочих процессов в общедоступных репозиториях.
  • ./{путь}/{имя файла} для многократно используемых рабочих процессов в одном репозитории.

{ref} может быть SHA, тегом выпуска или именем ветки. Использование SHA фиксации является самым безопасным для стабильности и безопасности. Дополнительные сведения см. в разделе «Усиление безопасности для действий GitHub.” Если вы используете второй параметр синтаксиса (без {owner}/{repo} и @{ref} ), вызываемый рабочий процесс происходит из той же фиксации, что и рабочий процесс вызывающего объекта.

Пример

  рабочих мест:
  call-workflow-1-in-local-repo:
    использует: octo-org/this-repo/.github/workflows/workflow-1.yml@172239021f7ba04fe7327647b213799853a9eb89
  call-workflow-2-in-local-repo:
    использует: ./.github/workflows/workflow-2.yml
  вызов рабочего процесса в другом репо:
    использует: octo-org/another-repo/.github/workflows/workflow.yml@v1
  

Дополнительные сведения см. в разделе «Повторное использование рабочих процессов».

рабочих мест.

Когда задание используется для вызова многократно используемого рабочего процесса, вы можете использовать с для предоставления карты входных данных, которые передаются в вызываемый рабочий процесс.

Любые входные данные, которые вы передаете, должны соответствовать входным спецификациям, определенным в вызываемом рабочем процессе.

В отличие от jobs..steps[*].with входные данные, которые вы передаете с jobs. .with недоступны в качестве переменных среды в вызываемом рабочем процессе. Вместо этого вы можете ссылаться на входные данные, используя контекст inputs .

Пример
  рабочих мест:
  рабочий процесс вызова:
    использует: octo-org/example-repo/.github/workflows/call-workflow.yml@main
    с участием:
      имя пользователя: мона
  

заданий..с.

Пара, состоящая из строкового идентификатора ввода и значения ввода.Идентификатор должен соответствовать имени входа, определенному on.workflow_call.inputs. в вызываемом рабочем процессе. Тип данных значения должен соответствовать типу, определенному on.workflow_call.inputs..type в вызываемом рабочем процессе.

Допустимые контексты выражений: github и требуется .

рабочих мест..secrets

Когда задание используется для вызова повторно используемого рабочего процесса, вы можете использовать секреты для предоставления карты секретов, которые передаются вызываемому рабочему процессу.

Все секреты, которые вы передаете, должны соответствовать именам, определенным в вызываемом рабочем процессе.

Пример
  рабочих мест:
  рабочий процесс вызова:
    использует: octo-org/example-repo/.github/workflows/call-workflow.yml@main
    секреты:
      токен доступа: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
  

заданий..secrets.

Пара, состоящая из строкового идентификатора секрета и значения секрета. Идентификатор должен соответствовать имени секрета, определенному on.workflow_call.secrets. в вызываемом рабочем процессе.

Допустимые контексты выражения: github , need и secrets .

Шпаргалка по шаблону фильтра

В фильтрах путей, ответвлений и тегов можно использовать специальные символы.

  • * : Соответствует нулю или более символов, но не соответствует символу /. Например, Octo* соответствует Octocat .
  • ** : соответствует нулю или более любых символов.
  • ? : соответствует нулю или одному предшествующему символу.
  • + : Соответствует одному или нескольким предшествующим символам.
  • [] Соответствует одному символу, указанному в скобках или включенному в диапазоны. Диапазоны могут включать только az , AZ и 0-9 . Например, диапазон [0-9a-z] соответствует любой цифре или строчной букве. Например, [CB]at соответствует Cat или Bat , а [1-2]00 соответствует 100 и 200 .
  • ! : В начале паттерна отрицает предыдущие положительные паттерны. В нем нет особого смысла, если не первый символ.

Символы * , [ и ! — это специальные символы в YAML. Если вы начинаете шаблон с * , [ или ! шаблон необходимо заключить в кавычки.

 
- '**/README.md'



- **/README.md
  

Дополнительные сведения о синтаксисе фильтра ветвей, тегов и путей см. в разделе ” on..<ветки|теги> “, ” on..<ветки|теги> “, и ” on..paths .”

Шаблоны для соответствия ветвям и тегам

Узор Описание Описание Описание
Особенности / * Подстановочный знак * соответствует любому символу, но не совпадает с Slash (/). Функция / My-Fivil

Особенности

/ Ваша филиал

Характеристики / ** ** Подстановочные знаки соответствует любому символу, включая Slash (/) в ветке и теге имена. Особенности / бета-а / моя филиал

функция

/ ваша филиал

Main

релизы / мона-The-othoCat

Соответствует точному имени ветви или имени тега. main

releases/mona-the-octocat

'*' Соответствует всем именам веток и тегов, которые не содержат 0/090 a). Символ * — это специальный символ в YAML. Когда вы начинаете шаблон с * , вы должны использовать кавычки. основной

выпуски

'**' Соответствует всем именам ветвей и тегов.Это поведение по умолчанию, когда вы не используете фильтр ветвей или тегов . все/ветки

каждый/тег

'*feature' * символ в YAML. Когда вы начинаете шаблон с * , вы должны использовать кавычки. Мона-функция

Ver-10-Характеристики

V2 * Соответствует филиал и имена тегов, которые начинаются с V2 . V2

v2.0

v [12] [0-9] + [0-9] + соответствует всем семантическим филиалам версий и теги с основной версией 1 или 2. v1.10.1

v2.0.0

Шаблоны для сопоставления путей к файлам

Шаблоны путей должны соответствовать всему пути и начинаться с корня репозитория.

Узор

любые файлы в корневом каталоге 905 / 9060 репозитория.

Символ * — это специальный символ в YAML. Когда вы начинаете шаблон с * , вы должны использовать кавычки. README.md

server.rb

'*.jsx?' ? Символ соответствует нулю или одному из предшествующих символов. Page.js

Page.jsx

'**' ** Подстановочные знаки соответствует любому символу, включая Slash (/).Это поведение по умолчанию, если вы не используете фильтр пути . all/the/files.md
'*.js' Подстановочный знак * соответствует любому символу, но не соответствует косой черте ( / ). Соответствует всем файлам .js в корне репозитория. app.js

index.js

'**. js' Соответствует всем файлам .js 900 в репозитории. index.js

js / index.js

SRC / js / app.js

Docs / * Все файлы в корневом каталоге Docs , в корне репозитория. docs/README.md

docs/file.txt

docs/** документы/README.md

docs/mona/octocat.txt

docs/**/*.md Файл с расширением .md в любом месте каталога .05s .md Docs / readme.md

Docs / mona / hello-world.md

Docs / a / markdown / file.md

'** / Docs / **' Любые файлы в каталоге docs в любом месте репозитория. документы/привет.md

dir/docs/my-file.txt

space/docs/plan/space.doc

'**/README.md' 9 AD файл 9 в хранилище. README.MD

JS / README.MD

'** / * SRC / **' Любой файл в папке с SRC суффикс в любом месте в репозитории. a/src/app.js

my-src/code/js/app.js

'**/*-post.md' Файл с суффиксом -post.md в любом месте репозитория. my-post.md

Путь / их-post.md

'** / Migrate - *. SQL' Файл с префиксом Migrate- и суффикс .sql в любом месте репозитория. migrate-10909.sql

db/migrate-v1. 0.sql

db/sept/migrate-v1.sql

*.md

!README.md

Использование восклицательного знака ( ! ) перед шаблоном отрицает его. Если файл соответствует шаблону, а также соответствует отрицательному шаблону, определенному в файле позже, файл не будет включен. Hello.md

не совпадает

Readme.md

Docs / hello.md

*.md

!README.md

README*

Шаблоны проверяются последовательно. Шаблон, отрицающий предыдущий шаблон, будет повторно включать пути к файлам. hello.md

README.md

README.doc

Думайте о правильном подходе

Матрица приоритетов действий — это инструмент, который позволяет вам максимально эффективно использовать свое время, помогая вам выбирать правильные задачи и возможности для реализации. Мир полон возможностей. К сожалению, никогда не хватает времени, чтобы использовать все эти возможности. Следовательно, вам нужно усердно выбирать свои возможности и задачи, чтобы максимально использовать свое время. Вы хотите убедиться, что выбираете те задачи, которые обеспечат вам наибольшую отдачу от потраченного времени. Вы также хотите избегать тех задач, которые не продвигают вас вперед.

Матрица приоритетов действий — это простой инструмент, который может помочь убедиться, что вы тратите свое время на выполнение правильных задач в правильном порядке.Постоянно работая над правильными вещами, вы получите улучшенные результаты в долгосрочной перспективе.

Матрица приоритетов действий представляет собой сетку 2×2. На оси X у нас есть усилия, необходимые для выполнения задачи, от низкого к высокому. По оси Y мы отмечаем влияние на результаты выполнения задачи. Чтобы использовать этот инструмент, оцените свои задачи или список дел сначала по усилиям, а затем по их влиянию. Затем поместите каждое задание в сетку в соответствии с его оценкой. Четыре квадранта:

  1. Быстрые выигрыши
  2. Крупные проекты
  3. Заполнители и
  4. Неблагодарные задачи

Быстрые выигрыши

Это задачи, требующие небольших усилий, но оказывающие большое влияние.Как таковые, они очень привлекательны, поскольку имеют высокую отдачу при небольших затратах энергии. Выполнение быстрых побед должно быть вашим главным приоритетом, и вы должны сосредоточиться на этих задачах как можно больше.

Крупные проекты

Это задачи, которые могут дать вам значительные результаты (воздействие), но, в отличие от быстрых побед, они требуют от вас больших затрат времени. Эти типы задач должны быть вашим следующим приоритетом после быстрых побед. Вам нужно будет потратить много времени на эти проекты, чтобы выполнить их, но будьте осторожны, чтобы эти задачи не поглощали все ваше время.

Вставки

Это задачи, которые требуют от вас небольших усилий для выполнения, но они также мало влияют на ваши результаты. Как следует из названия, вы используете эти задачи, чтобы заполнить свое время. Вы должны выполнять эти задачи только в том случае, если у вас есть свободное время после работы над вашими быстрыми победами и крупными проектами. Подумайте о том, чтобы делегировать эти задачи, если у вас есть такая возможность. В качестве альтернативы рассмотрите возможность полного отказа от этих задач, если это возможно.

Неблагодарные задачи

Это задачи, которые малоэффективны, но требуют значительных усилий.Вы должны стремиться полностью исключить эти задачи, так как они не стоят вашего времени.

Использование модели

Чтобы использовать модель, выполните следующие четыре шага:

  1. Составьте полный список всех ваших задач.
  2. Оценивайте свои задачи по трудозатратам и результативности. Для этого вы можете использовать любую шкалу, которая вам нравится, но хорошо работает простая шкала от 1 до 10, где единица очень низкая, а десять очень высокая.
  3. Поместите каждое действие в матрицу в соответствии с его усилиями и результатами.
  4. Расставьте приоритеты в своей деятельности:
  5. Дайте быстрым победам наивысший приоритет.
  6. Оставшееся время посвятите своим основным проектам. Вы должны тратить большую часть своего времени на эти задачи.
  7. Если у вас есть свободное время, займитесь своими делами. В противном случае делегируйте или откажитесь от этих задач.
  8. Устранение неблагодарных задач. Тратьте абсолютно нулевое время на выполнение этих задач.

Матрица приоритетов действий очень тесно связана с матрицей Эйзенхауэра, которая используется для определения приоритетов в личном списке дел с учетом срочности и важности.

APAMLAHarvardVancouverChicagoIEEEThink Insights (11 февраля 2022 г.) Матрица приоритетов действий: определите подходящие возможности для реализации . Получено с https://thinkinsights.net/consulting/action-priority-matrix/ ». Матрица приоритетов действий: определите подходящие возможности для реализации. » Think Insights – 11 февраля 2022 г., https://thinkinsights .net/consulting/action-priority-matrix/ Think Insights 18 мая 2021 г. Матрица приоритетов действий: определите подходящие возможности для использования. , просмотрено 11 февраля 2022 г., https://thinkinsights.net/consulting/action-priority-matrix/>Think Insights — Матрица приоритетов действий: определите подходящие возможности для использования. [Интернет]. [По состоянию на 11 февраля 2022 г.]. Доступно по адресу: https://thinkinsights.net/consulting/action-priority-matrix/ Матрица приоритетов действий: определите подходящие возможности для реализации. ” Think Insights – по состоянию на 11 февраля 2022 г. https:// thinkinsights.net/consulting/action-priority-matrix/ Матрица приоритетов действий: Определите подходящие возможности для реализации. “Think Insights [онлайн]. Доступно: https://thinkinsights.net/consulting/action-priority-matrix/ . [Доступ: 11 февраля 2022 г.]

Github Actions: Matrix Releases. Недавно я работал над программным проектом. on… | by nwillc

Photo by Markus Spiske on Unsplash

Недавно я работал над программным проектом, над обязательными выпусками для нескольких платформ. Вот как я реализовал его, используя матричную стратегию Github Action .

TLDR

Вы можете просто посмотреть на код здесь.

Релизы

Я начал проект только с одной целевой платформой. Я никогда не реализовывал процесс выпуска с артефактами в Github, но, поскольку я недавно использовал Github Actions для своего CI/CD, я посмотрел на него в поисках решения. Я нашел действия/создать-выпуск, которые позволили мне примерно со страницей YAML сделать следующее при нажатии тега версии:

  • Создать двоичный артефакт
  • Создать выпуск
  • Добавить двоичный файл в выпуск

Его было просто реализовать, он работал безупречно, и все, что мне нужно было сделать, это пометить мой код, чтобы запустить его.

А потом…

Мне нужно было выпустить вторую целевую платформу. Нет проблем, я изменил YAML следующим образом:

  • Создать двоичный артефакт для платформы A
  • Создать двоичный артефакт для платформы B
  • Создать выпуск
  • Добавить двоичный файл A в выпуск
  • Добавить двоичный файл B в выпуск

Вы видите, куда это идет? Когда мне нужно было добавить третью целевую платформу, я снова копировал и вставлял что-то, чтобы заставить ее работать, но затем приступил к ее рефакторингу.

Войдите в матрицу

Я просмотрел циклы в действиях, но вместо этого нашел матричную стратегию, которая позволяет выполнять одно задание для нескольких конфигураций. После этого я разделил мою единственную работу на три:

  • Работа 1: Использование матричной стратегии для создания всех артефактов целевой платформы
  • Работа 2: Создание версии
  • Работа 3: Использование матричной стратегии для добавить все артефакты в релиз

Я не буду подробно описывать полученный YAML, это было бы многовато, но вы можете посмотреть его здесь. Давайте просто посмотрим на структуру:

 заданий: # Работа 1 
артефактов:
стратегия:
матрица:
цель: [
{ 'os': 'darwin', 'arch': 'amd64' },
{ 'os ': 'linux', 'arch': 'amd64' },
{ 'os': 'linux', 'arch': '386' }
] шаги:
- имя: Create Artifact # Job 2
release:
запуски: ubuntu-latest
потребности: артефакты

шаги:
- имя: Создать выпуск

# Работа 3
добавить:
потребности: [ артефакты, выпуск ]
стратегия:
матрица:
цель: [
{ 'os' : 'darwin', 'arch': 'amd64' },
{ 'os': 'linux', 'arch': 'amd64' },
{ 'os': 'linux', 'arch': '386' }
] шаги:
- имя: Загрузить в выпуск

При такой структуре у нас есть три задания, два из которых выполняются с матричной стратегией , поэтому они будут выполняться параллельно для всех целей и одного выпуска работа посередине.

Проблемы

Эта структура действительно создала некоторые проблемы:

  • Во-первых, совместное использование артефактов между заданиями. Для этого есть определенные действия. Вам нужно загрузить-артефакт в одном задании, затем загрузить-артефакт в другом.
  • Во-вторых, задание release создает URL-адрес, необходимый для задания add . Для этого Actions предоставляет механизм outputs . Вы записываете вывод в версии и ссылаетесь на него по имени в add.

С этими решениями мне удалось сделать именно то, что я хотел.

Как все прошло?

  • Плюсы : Я удалил вырезание и вставку, и теперь добавление новых целей — это просто вопрос обновления списков целей. То, что можно было бы сделать параллельно сейчас, это, заметьте, фоновый процесс, поэтому я никогда не жду его.
  • Минусы : были накладные расходы, вызванные обменом файлами и значениями между заданиями. Результирующий YAML лучше, чем раньше, но он не так прост, как я надеялся.

Подкаст Equity in Action — Эпизод 5 — Матрица изменений

О серии:

Change Matrix запустила новую серию подкастов на 2021 год под названием «Справедливость в действии». С момента основания в 2008 году основатели Элизабет Ветциг, Рэйчел Эспириту и Суганья Сокалингам уделяли особое внимание культурной компетентности и устранению неравенства. Мы по-прежнему уделяем особое внимание справедливости во всех наших текущих проектах, постоянно ищем способы действовать и с нетерпением ждем мира, в котором все люди получают то, что им нужно, удобным для них способом в своих сообществах.


Что мы обсуждаем в этом выпуске:

Основой работы партнера-основателя Change Matrix доктора Суганьи Сокалингам является справедливость. Суганья имеет обширный опыт в области культурной и языковой компетенции, неравенств и неравенства в отношении здоровья, межкультурного общения, управления конфликтами и многого другого. Хотя она участвует во многих проектах, она в основном делит свое время между Ресурсным центром технической помощи для Программы посещения матерей, младенцев и детей раннего возраста на дому (MIECHV) и Тихоокеанским юго-западным центром передачи технологий психического здоровья (PS-MHTTC).

Послушайте, как соучредитель КМ Элизабет Ветциг говорит с Суганьей о преимуществах коучинга и важности избавления от «ограничивающих убеждений».

Стенограмма разговора:

Элизабет:
Вы слушаете подкаст «Справедливость в действии», подготовленный Change Matrix. Мы делимся историями людей, связанных с нашей организацией, которые добились положительных изменений в справедливости, с целью вдохновить вас на действия.Я получаю фантастическую привилегию брать интервью у кого-то, кто мне близок и дорог. Она не только имеет отношение к этой организации, но и является ее основателем вместе со мной и Рэйчел Эспириту.

Суганья Сокалингам присутствует в моей жизни с конца 90-х. И одна из причин, по которой у нас начались глубокие беседы, заключается в том, что я был сосредоточен на конфликте и на том, как конфликт проявлялся в том, как мы создавали системы. И она была сосредоточена на культуре и на том, как культура часто была препятствием для достижения положительных результатов и должна была прославляться как способ исцеления и повышения устойчивости.Итак, мы начали этот разговор о том, как нам нужно понимать культуру, чтобы понять конфликт, потому что конфликт — это культурный опыт. И как мы должны были понять необходимость конфликта и достижения культурной компетентности и достижения истинной справедливости и интеграции. Этот разговор никогда не прекращался для нас, много-много лет спустя. Так что для меня большая честь приветствовать Суганью Сокалингам в этом пространстве. А вот и мы, Суганья. Что Вы думаете об этом?

Суганья:
Спасибо, Элизабет.Ух ты. Это возвращает воспоминания об августе 1999 года, когда я впервые поступил в Джорджтаунский [университет]. И ты был одним из очень немногих людей, которых я встретил сразу, потому что многие были в отпуске. Но что я помню, так это то, что мы называли себя не разговорами о кулерах, а разговорами о принтере, потому что мы встречались перед принтером. И мы бы начали такой органичный разговор о культуре, конфликтах и ​​общении, и о том, как все это вместе действительно связывает работу, которую мы делаем, предоставляя услуги людям.

Элизабет:
И вы знаете, я была так благодарна, потому что вы предоставили мне такое мягкое место для посадки, чтобы я мог облажаться и делать возмутительные заявления и действительно пытался найти свой путь, когда дело дошло до понимания влияния культуры. И я думаю, что вы должны взять на себя большую ответственность за мое образование и взять на себя большую ответственность. Желание было, но я немного повозился. И я всегда ценил то, что ты был для меня безопасным местом, и мы могли обмениваться некоторыми идеями.Мне любопытно, не могли бы вы вернуть нас немного назад, потому что всю свою карьеру вы занимались акционерным капиталом, и это была замечательная карьера. Почему? Ты хотел это сделать? Что заставило вас пойти по этому пути?

Суганья:
Да, кажется, я уже делился этим раньше. Мне было 13 лет, когда в моей стране разразилась гражданская война. И в одночасье люди определенных рас и национальностей перестали считаться гражданами. Они фактически считались людьми второго сорта. Это означало, что возможности получить высшее образование — а я как раз собирался поступить в среднюю школу — получить высшее образование, получить хорошую работу в государственном секторе, открыть свое дело и иметь собственный бизнес для нас больше не были доступны.И это казалось таким несправедливым. И я был так зол, что страна, которую я называл раем, вдруг просто отобрали у меня.

Элизабет:
Знаешь, это так сильно отличается от переживаний расизма в этой стране, в Соединенных Штатах. Так много людей говорят о том, что они никогда не знали ничего другого. Рождаются того цвета, которым они рождаются. Рожденные с расовым происхождением, которое у них есть, и вещи никогда не доступны. И в то время как у вас был этот опыт, когда после того, как вы наслаждались и были равным и включенным гражданином в своей стране, он внезапно исчез.Так вот, вы знали раньше, когда такого не было, а потом испытали, что было после того, как эти права отобрали. Так что я могу только вообразить это чувство гнева и недоумения в каком-то смысле, что это могло произойти.

Суганья:
Абсолютно. И столько сочувствия и понимания к коренным американцам в этой стране, которые действительно испытали нечто очень похожее. И я думаю, что это было, может быть, даже хуже из-за геноцида и лишения культуры.Мне повезло, что я смог уехать и сохранить свою культуру, но для лиц, получивших убежище, для беженцев, для коренных американцев и для многих афроамериканцев, привезенных в эту страну, культура была лишена.

Элизабет:
Да. Похоже, это был действительно мощный опыт, который сформировал вашу работу и работу, которая ведется на уровне штата и на федеральном уровне, а также в Матрице изменений, где мы пытаемся внедрить ее во все, что мы делаем, и я чрезвычайно горжусь.И я знаю, что ты приложил к этому большую руку. Итак, Суганья, прямо сейчас переносим вас в 2021 год. У вас есть довольно широкое представление о ландшафте Соединенных Штатов. Мне интересно, не могли бы вы предложить пару вещей с вашей точки зрения, которые кажутся действительно срочными. Что кажется неотложным в нашем путешествии к справедливости прямо сейчас?

Suganya:
Сектор общественного здравоохранения пытается решить проблему неравенства в нашей стране уже более 30 лет. И безотлагательность, которую мы ощущаем сейчас, на самом деле возникла из-за двух крупных инцидентов в нашей стране.Одна — смерть Джорджа Флойда, а другая — COVID-19. Они оба как бы сняли повязку, которую мы наложили на наше общество, и действительно показывают неравенство и неравенство так, как мы никогда раньше этого не видели. И я думаю, что это действительно повысило осведомленность. Возникло желание учиться и расширять свои знания. И это возможность для всех нас собраться вместе. Для тех из нас, кто борется с неравенством, и для наших союзников, которые хотят поддержать нас, [чтобы] стать более справедливым обществом, принять меры.

Элизабет:
Да. И когда вы сказали «срать пластырь», я подумал, что мы видим глубину и тяжесть раны так, как мы, возможно, не хотели видеть раньше. Может быть, для некоторых, не мог видеть раньше. Но мы это видим. Это здесь. Это у всех на виду. И вы говорили о повышении осведомленности и расширении нашего понимания. И я много слышал о том, что нам нужно объективно оценивать объективность. Нам нужна конструкция справедливости. Нам нужна концепция.Это ценность. Я также слышал, однако, что посреди всего этого есть какое-то беспокойство. Необходимо действовать. Как мы уважаем все конструкции, ценности и объективы, но при этом приступаем к действию? Итак, размышляя об этом, если бы я мог спросить вас, какие важные действия, по вашему мнению, мы должны предпринять сейчас?

Suganya:
Я думаю, добраться до первопричины, которую мы действительно раскопали сейчас как системный расизм, структурный расизм, из-за которого людям было трудно получить доступ к услугам, использовать услуги и даже достичь здорового статуса.Улучшение состояния здоровья. Итак, я думаю, что теперь, когда мы знаем, что не можем разучиться, и поскольку мы действительно набрались смелости, чтобы посмотреть на первопричину, мы теперь можем ее устранить. Мы можем решить те системные [проблемы] и структуры, которые мешают предоставлять услуги, которые являются справедливыми, культурно резонирующими и уместными и меняют жизнь людей к лучшему.

Элизабет:
Да. Это намного больше, чем нам нужно быть добрыми друг к другу. Это намного больше, чем нам нужно, чтобы включать отдельных людей.То, о чем вы говорите, — это гораздо более сложная задача, которая требует от нас размышлений о политике, требует от нас размышлений о происхождении части этого структурного расизма. Это требует от нас также подумать о том, как все они взаимозависимы. Когда вы думаете о жилье, когда вы думаете о психическом здоровье, когда вы думаете об образовании, вы не можете рассматривать системный расизм по отдельности, потому что они немного зависят друг от друга. И поэтому, когда я думаю об этом, я начинаю задаваться вопросом о лидерах, которые несут ответственность за выявление структурного расизма, определение политики, которая либо способствует этому, либо стоит на пути к его прекращению.И это действительно большая работа. Итак, мне просто любопытно, что вы думаете о том, что нам нужно сосредоточиться на лидерстве как способе искоренения структурного расизма, который является конечной целью.

Suganya:
Вы знаете, мы с вами являемся сторонниками концепции адаптивного лидерства Рона Хейфеца, потому что мы действительно знаем, что нам нужно решать очень сложные проблемы, и простых решений не существует. И мне нравится то, что он говорит, что требуется коллектив, группа людей и их коллективный разум, чтобы научиться преодолевать проблемы и находить решения.И поэтому я искренне в это верю. Я искренне верю, что если мы сможем собраться вместе и собраться вместе с очень разными точками зрения, мы сможем определить способы, которыми мы можем изменить ситуацию, и найти решения, которые будут иметь смысл.

Элизабет:
Да. Ты прав. Это сложное мероприятие, которое требует много голосов в течение длительного периода времени. И иногда у меня в голове возникает образ множества лидеров, стоящих у пропасти и гадающих, когда же мы начнем падать.Когда мы начнем перебирать и действительно осмысленно действовать, чтобы демонтировать, разрушить, разобрать, изучить и, в некотором смысле, заставить белых людей сдаться. Быть готовыми пожертвовать своими привилегиями и властью ради общего блага. Итак, я почти ответил на свой вопрос здесь, но когда вы стоите у этой пропасти, что нам мешает двигаться вперед? Что заставляет нас бояться предпринимать эти действия?

Суганья:
Ну, это всегда страх перед неизвестностью, не так ли? Мы действительно не знаем, что собираемся рисковать.Мы собираемся шагнуть в эту пустоту, как сказал бы Хейфец. И мы тоже, думаю, не обратили внимания на бывалые голоса. Жизненный опыт людей, которые прошли через это и знают, и могут иметь некоторые ответы, но мы думаем о них как о непрофессионалах, молодых людях, людях, у которых на самом деле нет докторской степени и образования, и как же они придумают ответы? Итак, я думаю, что нам действительно нужно изменить то, как мы думаем об этом, и у кого на самом деле могут быть некоторые решения.Это действительно требует от нас работать с нашими сообществами более глубоким и гораздо более аутентичным способом, чтобы действительно искать там опыт.

Элизабет:
Да. Я имею в виду общественную экспертизу. Этот голос нужно возвышать, поддерживать и поддерживать. И я думаю, что для этого требуется определенный тип лидера с определенной смелостью. Чтобы облегчить это вовлечение голосов живого опыта. Сообщества, которые имеют жизненный опыт. Я думаю, что многим лидерам требуется мужество, чтобы сделать это.Это также требует времени и ресурсов, которые часто не выделяются на работу. Итак, я думаю, мне интересно, есть ли поддержка и услуги, или в основном поддержка, которые особенно полезны для тех лидеров, которые имеют влияние и власть и могут внести изменения, которые по какой-либо причине чувствуют себя неохотно или нерешительно. Что могло бы помочь этим людям действительно возвысить эти голоса сообщества?

Suganya:
Знаете, чем больше я провожу тренингов и вебинаров, тем больше понимаю, что у нас есть образованная, знающая и опытная аудитория.И поэтому мы теряем, не имея возможности услышать от них. И я знаю, что мы делаем это в Матрице изменений, потому что мы фокусируемся на обучении и позволяем и помогаем людям действительно использовать свой голос, чтобы отстаивать изменения, демонтировать расистскую инфраструктуру или политику. Я думаю, что поскольку у нас есть люди, обладающие опытом, я думаю, что наша работа заключается в том, чтобы задавать эти трудные вопросы. Чтобы задать те сложные вопросы, которые помогут им думать об этом, возможно, по-другому. И поэтому я просто чувствую, что коучинг, который мы проводим, был очень актуальным.

Я только что разговаривал с молодым лидером в области психического здоровья и образования, который на коуч-сессиях понял, что его жизненный опыт очень важен для вовлечения других людей. И я думаю, что до коучинга они, возможно, никогда не чувствовали, что могут это сделать, но в процессе коучинга они осознали ценность, которую они приносят, делясь собой, своим опытом, своим опытом. И я думаю, что в последние несколько месяцев в общении с ними я вижу совсем другого лидера.Лидер, который готов идти на риск, который готов шагнуть в это неопределенное пространство и поделиться своим опытом и, следовательно, незаконными действиями других.

Элизабет:
Да. Это такая мощная последняя фраза, которую вы предложили, «вызывать действия у других», потому что это звучит так, как будто то, что мы делаем через коучинг, вдохновляет или поддерживает отдельных лидеров, чтобы они задействовали более широкий набор голосов. Итак, мы делаем это, помогая им создать собственное видение того, как это могло бы выглядеть.И мы делаем это, помогая им действительно определить шаги, чтобы добраться туда и риски, которые могут возникнуть, и как они будут подходить к ним и преодолевать их.
И я должен согласиться с тем, что считаю коучинг одной из самых значимых вещей, которыми мы занимаемся в Change Matrix, особенно для людей, которые стоят на краю пропасти, знают, что у них есть роль и знают, что они имеют влияние, но они просто не совсем готовы думать о том, как это сделать. И что я испытал, так это то, что они хотят сделать это правильно.И поэтому, пока они не поймут, что сделают это правильно, они не будут уверены, что сделают это. Поэтому я думаю, что коучинг дает им не полную уверенность, а небольшую уверенность в том, что риск стоит того. Стоит выложить себя. Это похоже на действительно важную работу, которую мы делаем прямо сейчас.

Suganya:
Вы только что напомнили мне о том, что Бренда, наш тренер, поделилась со мной две недели назад, когда она спросила: «Каковы ваши ограничивающие убеждения?» И это, я думаю, очень критично.Я думаю, что если мы сможем помочь лидерам определить их ограничивающие убеждения, а затем найти способ преодолеть эти убеждения, я думаю, мы сможем внести необходимые изменения.

Элизабет:
Да. Я думаю ты прав. Мы просто должны помочь людям шагнуть в пустоту. И я думаю, что с коучингом мы можем это сделать. Итак, Суганья, мне было на 1000% приятно провести это время с тобой. И я думаю, что те, кто услышат это, узнают кое-что, и кто знает, что произойдет?

Итак, вы все слушали «Справедливость в действии», и в следующем месяце у нас будет еще один подкаст о том, как исследовательница в области педиатрии и насилия со стороны интимного партнера среди подростков в сельских общинах смогла реализовать справедливость в своей работе.Итак, мы с нетерпением ждем этого. И еще раз, Суганья, спасибо.

Суганья:
Всегда пожалуйста, Лиз.

Элизабет:
Хорошо.

Экшен

Matrix Photoshop от UnicDesign

Матрица Экшен Photoshop

Превратите свою фотографию в эффект Matrix Photoshop , вдохновленный постером фильма Matrix , всего за несколько кликов! Откройте свою фотографию, просто проведите кистью по объекту и просто запустите действие.Это действительно так просто! Используя экшен Matrix Photoshop , создание нового эффекта искажения матрицы никогда не было таким простым и увлекательным .

Действие сделает всю работу за вас, предоставив вам полностью многослойные и настраиваемые результаты, которые вы можете в дальнейшем модифицировать. Каждый элемент представляет собой один слой. Текст представляет собой полностью редактируемый текстовый слой , вы можете использовать свой собственный текст и шрифт и вносить любые изменения текста.

Экшен также сделан так, что каждый раз, когда вы запускаете экшен — вы будете получать уникальный матричный эффект , даже если вы используете одну и ту же зачищенную область.Действие всегда будет создавать уникальную вариацию мазков кисти. Вы можете создать неограниченное количество результатов!

Особенности:
  • Просто, легко и весело – даже для начинающих.
  • Экономит часы и дни работы.
  • Неограниченные/рандомизированные результаты — каждый запуск действия создаст уникальный результат.
  • Полностью многослойные и настраиваемые результаты — каждый элемент представляет собой отдельный слой.
  • Множество вариантов настройки результатов.
  • Полностью редактируемый текст.
  • Подробный видеоурок прилагается.
  • Круглосуточная неограниченная поддержка включена в стоимость.
Совместимость:

Экшен протестирован и работает в Photoshop (английские версии) CS6, CC, CC 2015.5, CC 2017, CC 2018, CC 2019, CC 2020, CC 2021+.

Экшен работает только в английской версии Photoshop. Если вы используете другой язык, вы можете изменить язык таким образом. После того, как вы воспроизведете экшен, вы можете вернуть его на свой родной язык.

Видеоруководство:

Экшен поставляется с видеоруководством, демонстрирующим, как использовать экшен и как настроить результаты, чтобы получить максимальную отдачу от эффекта.

Поддержка:
Если вам нужна помощь с акцией или у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами в любое время через контактную форму на странице нашего профиля Envato.
Вам также может понравиться:

>

Welspun One | Политика матрицы дисциплинарных мер

ВВЕДЕНИЕ

Welspun One Logistics Parks Pvt.Ltd. («Компания» или «Компания») сформировала настоящую Матрицу дисциплинарных мер («Политика» или «Настоящая Политика») для инициирования дисциплинарных мер в случае совершения ненадлежащего или неэтичного действия на основании результатов расследования в соответствии с План реагирования на мошенничество, установленный Компанией.

«Дисциплинарное взыскание» означает любое действие, которое может быть предпринято по завершении/во время расследования, включая, помимо прочего, предупреждение, наложение штрафа или любое другое действие, которое считается уместным с учетом тяжести нарушения. иметь значение.

«Комитет по дисциплинарным взысканиям» означает комитет, который время от времени создается Компанией и состоит из избранных старших сотрудников Компании. До тех пор, пока не будет создан отдельный Комитет по дисциплинарным взысканиям, Комитет по этике также будет действовать как Комитет по дисциплинарным взысканиям

.
ПРОЦЕДУРА НАЧАЛА ДИСЦИПЛИНАРНОГО МЕРОПРИЯТИЯ

Комитет по дисциплинарным взысканиям Компании публикует рекомендацию Комитета по этике, может применять дисциплинарные взыскания в отношении следующих лиц:

  • Предмет жалобы;
  • Сотрудник, не являющийся Субъектом, который вовлечен/причастен к неправомерному поведению;
  • Сотрудник, не являющийся Субъектом, который проявляет халатность при выполнении своих обязанностей;
  • Информатор, если доказано, что жалоба является необоснованной или фиктивной, или подана со злым умыслом на основе ложных или вводящих в заблуждение доказательств.

Прежде чем рекомендовать какие-либо дисциплинарные меры, Комитет по этике должен убедиться в следующем:

  • Субъект(ы)/другой(ие) сотрудник(и)/информатор(ы) получили/получили справедливую возможность быть выслушанными, и от них получено сотрудничество.
  • По предъявленным обвинениям допрошены доказательства/свидетели, если таковые имеются;
  • Субъект(ы)/другой(ие) сотрудник(и)/разоблачитель(и) были проинформированы/были проинформированы относительно обвинения и имеющихся против них доказательств
КАТЕГОРИЯ ЛЮДЕЙ

Комитет по этике классифицирует Субъекта(ов)/другого Работника(ов) в зависимости от степени причастности к неправомерному поведению:

Старший№ Уровень причастности к неправомерным действиям Цветовое кодирование
1 Субъект(ы)/другой сотрудник(и), которые непосредственно вовлечены или, как представляется, непосредственно вовлечены в неправомерное поведение Красный
2 Субъект(ы)/другой(ые) сотрудник(и), которые знали или, как казалось, знали о неправомерных действиях, но проявляли халатность из-за явного бездействия Янтарный
3 Субъект(ы)/другой сотрудник(и), которые не принимают непосредственного участия или не кажутся причастными к неправомерным действиям или которые являются осведомителями Зеленый
КАТЕГОРИЯ НЕПРАВОНОМИЧЕСКИХ ПОВЕДЕНИЙ

Комитет по этике классифицирует проступок как «незначительный, серьезный, грубый» на основании результатов расследования.Кроме того, если жалоба после расследования окажется необоснованной или ложной, она будет рассмотрена в соответствии с матрицей, указанной ниже. Таблица может служить руководством и носит ориентировочный характер и будет зависеть от фактических результатов расследования, проведенного Главным специалистом по этике:

Классификация Описание Ориентировочные сценарии
Мелкие проступки Незначительным проступком можно назвать любое неправомерное действие Сотрудника, которое причиняет минимальный вред или ущерб и наносит меньший ущерб репутации и активам Компании.
  • Неправомерное ограничение работоспособности и производительности труда работника
  • Неподобающее поведение в офисе, а также с любыми другими Сотрудниками
  • Несоблюдение правил или правил техники безопасности из-за небрежного поведения, которое может создать незначительную опасность для имущества, человека или окружающей среды
  • Попытка спровоцировать драку или запугивание других крепкими словами
Крупный проступок Крупный проступок — это любое ненадлежащее или неэтичное действие, причиняющее существенный вред или ущерб и наносящее ущерб репутации или активам Компании.
  • Несанкционированное использование активов Компании
  • Работа по совместительству/по совместительству
  • Насилие или угроза
  • Саботаж или вандализм
  • Злоупотребление властью
  • Злоупотребление психоактивными веществами
Грубые проступки Грубый проступок (включая преднамеренное действие) — это действие, которое может рассматриваться как серьезное, оправдывающее увольнение Субъекта за такое правонарушение.
Такие действия влияют на отношения доверия между Компанией и Сотрудником, что иногда затрудняет продолжение рабочих отношений.
  • Получение или дача взятки при выполнении возложенных обязанностей
  • Необъявленный конфликт интересов
  • Утечка конфиденциальной информации/интеллектуальной собственности Компании и ее клиентов
  • Незаконное присвоение средств/активов Компании
  • Манипуляции с записями компании, информацией и документами
  • Утечка неопубликованной ценовой информации
  • Несоблюдение правил или правил техники безопасности, повлекшее за собой гибель людей или потерю имущества
Легкомысленная жалоба Необоснованные жалобы, которые признаны необоснованными или заявлены не по доброй воле. Жалоба (жалобы), которые впоследствии оказались необоснованными или поданными со злонамеренными намерениями
ПРИМЕРНАЯ ДИСЦИПЛИНАРНАЯ МАТРИЦА

На основе категоризации людей (раздел 3) и проступков (раздел 4) предлагается следующая дисциплинарная матрица. Следующая матрица содержит примерные последствия, которые могут быть применены, если проступок будет доказан после расследования:

Классификация Зеленый Янтарный Красный
Брутто Нет действий Завершение Завершение
Майор
  • Снижение заработной платы
  • Отказ от поощрения/бонуса
  • Завершение
Несовершеннолетний
  • Устная консультация
  • Письменное предупреждение

Следующая матрица содержит ориентировочные последствия, которые могут быть приняты в случае необоснованных жалоб:

Первое нарушение Второе нарушение Третье нарушение
  • Устная консультация
  • Письменное предупреждение
  • Снижение заработной платы
  • Отказ от поощрения/бонуса
Прекращение
ДЕЙСТВИЯ
  • Рекомендации по применению дисциплинарных мер в соответствии с разделом 5 выше основаны на тяжести проступка.Отчеты о расследованиях каждого дела сильно различаются с точки зрения вовлеченных вопросов, уровня имеющихся доказательств, а также характера и степени любых доступных смягчающих обстоятельств.
  • В отношении Субъектов/других Сотрудников, которые кажутся непосредственно причастными к неправомерным действиям, должны быть предприняты следующие юридические действия в зависимости от уровня причастности к неправомерным действиям и наличия юридических доказательств после консультации с командой юристов:
Уровень участия и наличие доказательств Юридический иск Лечение
Высокий Принятие гражданских/уголовных мер Удерживаются все сборы, кроме обязательных сборов
Средний Нет гражданских/уголовных дел Полный и окончательный расчет без уведомления
Низкий Попросить уйти в отставку Полный и окончательный расчет с уведомлением о выплате
  • В устной консультации или письменном предупреждении должны быть изложены характер неправомерного поведения и изменение поведения или улучшение показателей, ожидаемых (с указанием временных рамок) от Субъекта.Субъекту следует сообщить, как долго предупреждение будет оставаться в силе, и его следует проинформировать о последствиях дальнейших неправомерных действий или неспособности улучшить работу в течение периода, согласованного Комитетом по этике, в зависимости от серьезности жалобы.
  • Если проступок Субъекта носит серьезный характер, может быть уместно сразу перейти к суровым дисциплинарным мерам без какого-либо предупреждения. Это может произойти, если действия Субъекта оказали или могут оказать серьезное или вредное влияние на Компанию или ее репутацию.
  • Некоторые действия, называемые грубыми проступками, могут быть настолько серьезными сами по себе или иметь такие серьезные последствия, что могут потребовать устранения Субъекта после первого нарушения. Но всегда следует соблюдать справедливый дисциплинарный процесс, прежде чем увольнять за грубый проступок. Кроме того, Субъект должен быть проинформирован как можно скорее о причинах прекращения.
  • Комитет по этике должен обратиться за помощью к Руководству, рекомендуя дисциплинарные меры по мере необходимости Комитету по дисциплинарным мерам.
  • Если Субъект постоянно не может или не желает посещать дисциплинарное собрание без уважительной причины или не сотрудничает с ним, Комитет по этике документирует это в отчете о расследовании, и Комитет по этике принимает решение на основе имеющейся информации и доказательств.
  • Комитет по этике может рекомендовать внести в черный список поставщиков или других третьих лиц, причастных к неправомерным действиям.
ФАКТОРЫ, УЧИТЫВАЕМЫЕ ПРИ ПРИНЯТИИ ДИСЦИПЛИНАРНОГО ПРИМЕНЕНИЯ:

Дисциплинарные меры, рекомендованные Комитетом по этике, должны быть соразмерны серьезности и серьезности «проступка».Комитет по этике может по своему усмотрению рекомендовать соответствующее дисциплинарное взыскание за конкретный проступок, и оно должно быть наложено по уважительной и достаточной причине.

Комитет по этике должен обеспечить справедливое, прозрачное и последовательное рассмотрение всех вопросов, обеспечив следующее:

  • Все шаги, указанные в Плане реагирования на мошенничество, должны быть предприняты без необоснованной задержки;
  • Главный специалист по этике должен провести тщательное расследование для установления фактов по делу;

Комитет по этике должен принять все разумные меры для обеспечения конфиденциальности на протяжении всего процесса.

Комитет по этике должен рассмотреть следующие аспекты, прежде чем рекомендовать какие-либо дисциплинарные меры:

  • Тяжесть нарушения;
  • Старшинство и срок пребывания Субъекта(ов)/другого Работника(ов)/Информатора(ов) в организации;
  • Сроки передачи важнейших обязанностей;
  • Влияние неправомерных действий на других Сотрудников и отдел или Компанию;
  • Намерение Субъекта(ов)/другого Сотрудника(ов)/Информатора(ов).
ОТСТАТЬ

Возмездие может быть определено как прямое/косвенное неблагоприятное административное решение и/или действие, которое угрожает, рекомендуется или предпринимается в отношении любого лица, которое:

  • Добросовестно сообщил о любой озабоченности, которая раскрывает или демонстрирует информацию, которая может свидетельствовать о неправомерных действиях;
  • Содействовал расследованию неправомерных действий.

Следующие неблагоприятные действия могут представлять собой акт возмездия против информатора:

  • Преследование
  • Дискриминация
  • Необоснованные отрицательные оценки эффективности
  • Необоснованные изменения в договоре: увольнение, понижение в должности, переназначение или перевод
  • Необоснованное изменение обязанностей
  • Необоснованное неразрешение на отпуск
  • Угроза осведомителю, его семье и/или имуществу, включая угрозы, которые могут исходить извне Компании

Компания не потерпит возмездия против любого, кто выражает искреннюю озабоченность.Возмездие представляет собой проступок и влечет за собой строгие дисциплинарные меры, включая увольнение.

ВЕДЕНИЕ ЗАПИСЕЙ

Комитет по этике должен обеспечить ведение соответствующих записей для всех рекомендаций дисциплинарных мер Комитету по дисциплинарным взысканиям.

Отдел кадров (HR) должен обеспечить ведение и обновление соответствующих записей о принятых дисциплинарных взысканиях в личном деле сотрудников

ОБЗОР И ПЕРЕСМОТР

Комитет по этике в консультации с отделом кадров может пересматривать и пересматривать эту матрицу по мере необходимости, которую Компания сочтет необходимой.

Каскадер Нео о том, как «Матрица» навсегда изменила действие

Матрица. Фото: предоставлено студией

Этот сериал изначально был показан в 2019 году. Мы переиздаем его, поскольку Воскрешение Матрицы выходит в кинотеатрах и HBO Max.

« Матрица буквально изменила индустрию», — говорит Чад Стахелски, который был дублером Киану Ривза в фильме и впоследствии стал одним из самых занятых постановщиков трюков в индустрии.В настоящее время он наиболее известен тем, что снял фильмов о Джоне Уике , в которых также снимался Ривз. (Стахелски снял первый  Джон Уик  с коллегой-ветераном трюков Дэвидом Литчем, а последующие сиквелы руководил самостоятельно.) Но он был бы первым, кто признал, что эти фильмы, не говоря уже о большинстве других, над которыми он работал, никогда бы не существовало без Матрица . «Раньше, — вспоминает он, — боевые сцены были второстепенными по сравнению с автомобильными погонями, погонями на лошадях, погонями на вертолетах и ​​погонями на моторных лодках.И какие бои там были сосредоточены на «одноствольном бою или Арнольде Шварценеггере, который забивает вас до смерти руками».

Но Матрица показала, что последовательность боя может быть изящной и удивительной, а также рассказывать историю. Даже зарождающийся жанр фильмов о супергероях, который вскоре стал доминирующим, вырвал большую страницу из пьесы Вачовски. Подумайте о Человеке-пауке, который учится использовать свои силы, или о Черной вдове, которая быстро уничтожает комнату, полную злодеев, все еще привязанной к стулу, или о Росомахе, прорубающем себе путь сквозь армии головорезов.«Теперь, — говорит Стахелски, — боевики хотят, чтобы их большие эпизоды были построены вокруг боев. Подумайте о любом боевике за последнее десятилетие или около того, в котором нет ни одной сцены драки. Матрица  сказал: «Посмотрите, что вы можете сделать со своими героями». Режиссер и легенда каскадеров недавно взял перерыв в напряженном графике, заканчивая Джон Уик: Глава 3 — Парабеллум  , чтобы поговорить со мной о том, как Матрица изменил кино — и свою жизнь — навсегда.

Как вы впервые получили работу для  Матрица ?
Давным-давно, в 1996 году, Вачовски и Юэн Ву-Пинг, хореограф боев, искали актеров в Австралии, Китае, Канаде и США.С., чтобы найти для Киану дублера по боевым искусствам. В то время боевые искусства не были настолько популярны в крупнобюджетных фильмах. Это считалось более малобюджетным и дешевым. Большинство боев в то время были боями с одним оружием, или Арнольд Шварценеггер забивал вас до смерти руками. Это была совсем другая эпоха боевых искусств. В то время я работал над телешоу под названием Самозванец . И я должен был сделать автомобильный удар утром. Так что меня сбила машина, я проломил себе голову и умудрился сделать 11 часов утра.м. прослушивание в Бербанке из Пасадены. Я все еще истекал кровью, когда добрался туда. Во-первых, они хотели знать, не бомж ли я — у меня все еще была кровь на футболке, и я пытался остановить кровотечение из небольшой раны на голове. Я был большим фанатом азиатского кино, поэтому узнал Юэнь Ву-Пина; Я узнал некоторых ребят из его команды по всем великим фильмам Джета Ли и Джеки Чана.

Я пошел, думая: Хорошо, мне придется сделать дроп и шпагат; кинут пинком и будет .Они немного говорили по-китайски, а потом указали на этого парня Чен Ху. Они сказали: «Просто делай то, что делает этот парень; копируй его». Я вышел через полтора часа, мокрый от пота, пройдя все комбинации боевых искусств, удары ногой, сальто, акробатический пас… Это до сих пор самое длинное и самое трудное прослушивание, которое я когда-либо видел. был, и я был совершенно не готов. Это был первый раз, когда я встретил Киану. Мы сделали пару фотографий вместе, и я рассталась.

Месяц проходит, ничего.Проходит почти два месяца, и мне снова звонят. — Эй, ты не мог бы вернуться? Итак, я иду на тот же съемочный склад в Бербанке, и это было буквально то же самое прослушивание, движение за движением, снова и снова. Через неделю или две мне предложили выступить. Они сказали: «Эй, как насчет того, чтобы поехать в Австралию и удвоить Киану?» Я подумал: «Ой, это круто. Но извините. Нет, нельзя». Я все еще был на телешоу.

Люди Икс: Начало: Росомаха. Фото: предоставлено студией

Правда? Так как же вы пришли к тому, что снялись в фильме?
У Киану была травма шеи, поэтому все действия отодвинули на следующий год. Итак, проходит пара месяцев, и мне звонит Барри Осборн, продюсер, и говорит: «Эй, мы устроили все бои. Теперь ты можешь это сделать? И я сел в самолет в январе, чтобы начать съемки в Австралии. Я приехал в Сидней в первый же день на репетиции, и до сих пор это был самый сложный процесс, через который я проходил до того момента в своей карьере — просто невероятное количество повторений и попыток сделать все правильно, так что что все идеально.Тренируясь с Киану, с парнями из Гонконга, всем приходилось все запоминать. Требовали много.

А Вачовски были, мягко говоря, дотошными. Раскадровки были сотни и сотни страниц. У меня до сих пор хранится их копия. И я вам не говно, они почти точно фильм. Точки редактирования могут немного отличаться, но это так хорошо продумано и концептуально почти идентично тому, что на большом экране. Это жутко. Я не буду вам врать, любой, кто работал на Вачовски, кто все еще психически функционирует, навсегда и положительно влияет на них.Их трудовая этика заставляет стыдиться даже самых трудолюбивых людей. Мы все стали лучше благодаря этим фильмам, и все мы хотим стать лучше, и все мы хотим произвести впечатление на наших наставников. Мне сейчас 50 лет, и все, о чем я могу думать, это, типа, . Ой, чувак, надеюсь, им понравится этот .

Какое у вас было впечатление о Киану до того, как вы снялись в Матрица ?
Он очень вдумчивый, но в то же время очень ориентирован на команду. Он ест, спит, тусуется с командой.В Австралии вы, скорее всего, увидите его ужинающим в китайском квартале Сиднея с парнями из Гонконга и командой каскадеров. Даже в фильмах о Джоне Уике , по сей день, он очень близок со своей командой каскадеров, потому что они проводят с ним так много времени. Он парень, который уберет парня с камерой. Он очень ориентирован на команду. Он любит этот мир; ему нравится быть частью этого.

Когда вы начинали, вам давали сценарий?
Я не получил скрипт, пока не приземлился.Прочитал и ни хрена не понял. Я подумал: Как, черт возьми, мы собираемся это сделать? У меня довольно хорошее творческое мышление, чтобы собрать вещи воедино после просмотра репетиций и декораций, но Матрица  это единственный раз, когда это случалось со мной, чего буквально не было, пока я не увидел фильм, который я получил. Это. Я помню, как вошел, увидел очень ранний черновой вариант чего-то и подумал: «Вау, это довольно круто» — и до сих пор не понял. Потому что эффекты еще не были наложены.Потом мне посчастливилось попасть на премьеру в Вествуд. Когда я увидел и , это было ошеломительно.

Джон Уик. Фото: предоставлено студией

Это единственный фильм, который я могу вспомнить, в котором и трюки, и визуальные эффекты были по-настоящему революционными.
Есть определенные вещи, которые мотивируют эволюцию или мотивируют высокие ожидания в отрасли.Мне нравится франшиза « Миссия невыполнима », мне нравится франшиза о Бонде, но ни один Бонд или « Миссия невыполнима » не изменил дизайн действия. Такого никогда не было. После Матрица — достаточно взглянуть на жанр боевых искусств. Раньше он никогда не вырывался из мейнстрима. Вы не увидите ни фильмов со Сталлоне, ни фильмов о Шварценеггере, ни фильмов с Брюсом Уиллисом, где боевые искусства занимают видное место. Вы не увидите фильм стоимостью 100 или даже 50 миллионов долларов с боевыми искусствами.Наши герои боевиков этого не сделали. Американцы поклонялись одному мощному удару.

Но после Матрица я превратился из обычного каскадера в одного из крупнейших хореографов в бизнесе. Я основал компанию, которая занимается исключительно хореографией боевых искусств, и это выросло во всех фильмах John Wick и во всем остальном. Матрица буквально изменила отрасль. Приток хореографов боевых искусств и координаторов боев теперь приносит больше, и они более распространены и влиятельны в отрасли, чем постановщики трюков. Матрица произвела революцию в этом. Сегодня боевики хотят, чтобы их большие эпизоды были построены вокруг боев. Подумайте о любом боевике за последнее десятилетие или около того, в котором нет ни одной сцены драки. Матрица сказала: «Посмотрите, что вы можете сделать со своими героями». В свое время боевые сцены были второстепенными по сравнению с автомобильными погонями, погонями на лошадях, погонями на вертолетах и ​​погонях на моторных лодках. Итак, что есть в каждом великом фильме Marvel? Будь то полеты, космические корабли, лодки, самолеты и так далее, они хотят, чтобы экшн-дизайн был сосредоточен вокруг боевых сцен.

Был ли во время съемок момент, когда вы подумали: Хорошо, эта штука будет большой?
Я помню, как впервые оказался перед камерой в кадре в правительственном вестибюле, когда Кэрри-Энн строила стены. Мы репетировали это миллион раз. У нас были пиропатроны, которые должны были сработать. Все это были практические эффекты, поэтому вы не могли иметь мобильный телефон в пределах 300 футов от сцены, потому что в то время частота мобильных телефонов могла привести к срабатыванию электронных пиропатронов.У них было более тысячи пиропатронов, и они сдулись, а мы видим их и просто говорим: «Боже мой». Мне нужно было сделать то, что я перекатываюсь к винтовке M16, поднимаю ее одной рукой, а затем Киану стреляет и идет в бой или что-то в этом роде. Я помню, что установка была однодневной, так что вы делаете один дубль, и требуется день для сброса, а затем вы делаете второй дубль. В этот момент я почти никого не встретил на съемочной площадке. Я в костюме и собираюсь идти, и я помню, как продюсер Джоэл Сильвер подошел ко мне — я никогда в жизни не встречал этого человека — посмотрел мне прямо в глаза и сказал: «Не надо». к черту это.«В принципе, не пропустите . И он одарил меня тем взглядом. Он очень интенсивный человек. И я такой: Хорошо. Не пропустите пистолет . Они сказали, что будет много мусора, так что я просто тренировался делать сальто с закрытыми глазами. И я клянусь вам, как только они закричали, сработал первый пиропатрон, и я ни хрена не мог видеть .

Оставить комментарий