Skip to content

Commit 3e0eb0a

Browse files
authored
Merge branch 'AcademySoftwareFoundation:main' into 1493_win_pkg_cache_issue
2 parents e318ce3 + fca0b86 commit 3e0eb0a

File tree

114 files changed

+3156
-9315
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+3156
-9315
lines changed

.github/workflows/benchmark.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ jobs:
2525

2626
steps:
2727
- name: Checkout
28-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
28+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2929

3030
- name: Setup python ${{ matrix.python-version }}
31-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
31+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
3232
with:
3333
python-version: ${{ matrix.python-version }}
3434

@@ -49,7 +49,7 @@ jobs:
4949
run: |
5050
python ./.github/scripts/validate_benchmark.py
5151
52-
- uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
52+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
5353
with:
5454
name: "benchmark-result-${{ matrix.python-version }}"
5555
path: ./out
@@ -68,13 +68,13 @@ jobs:
6868
max-parallel: 1
6969

7070
steps:
71-
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
71+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
7272
with:
7373
name: "benchmark-result-${{ matrix.python-version }}"
7474
path: .
7575

7676
- name: Checkout (release)
77-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
77+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
7878
if: ${{ github.event_name =='release' }}
7979
with:
8080
ref: main
@@ -88,13 +88,13 @@ jobs:
8888
# token: "${{ secrets.GH_ACTION_TOKEN }}"
8989

9090
- name: Checkout (pr)
91-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
91+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
9292
if: ${{ github.event_name !='release' }}
9393
with:
9494
path: src
9595

9696
- name: Setup python ${{ matrix.python-version }}
97-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
97+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
9898
with:
9999
python-version: ${{ matrix.python-version }}
100100

.github/workflows/copyright.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ jobs:
2020

2121
steps:
2222
- name: Checkout
23-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
23+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2424

2525
- name: Set up Python
26-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
26+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
2727
with:
2828
python-version: 3
2929

.github/workflows/flake8.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ jobs:
2929

3030
steps:
3131
- name: Checkout
32-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
32+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3333

3434
- name: Set up Python
35-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
35+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
3636
with:
3737
python-version: 3.11
3838

.github/workflows/installation.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ jobs:
7979
REZ_INSTALL_COMMAND: pip install --target C:\ProgramData\rez .
8080

8181
steps:
82-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
82+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8383

8484
- name: Setup python ${{ matrix.python-version }}
85-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
85+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
8686
with:
8787
python-version: ${{ matrix.python-version }}
8888

.github/workflows/pypi.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ jobs:
1919

2020
steps:
2121
- name: Checkout
22-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
22+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2323

2424
- name: Set up Python
25-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
25+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
2626
with:
2727
python-version: 3.11
2828

.github/workflows/scorecard.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ jobs:
2525

2626
steps:
2727
- name: "Checkout code"
28-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
28+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2929
with:
3030
persist-credentials: false
3131

3232
- name: "Run analysis"
33-
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
33+
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
3434
with:
3535
results_file: results.sarif
3636
results_format: sarif
@@ -52,7 +52,7 @@ jobs:
5252
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
5353
# format to the repository Actions tab.
5454
- name: "Upload artifact"
55-
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
55+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
5656
with:
5757
name: SARIF file
5858
path: results.sarif
@@ -61,6 +61,6 @@ jobs:
6161
# Upload the results to GitHub's code scanning dashboard (optional).
6262
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
6363
- name: "Upload to code-scanning"
64-
uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
64+
uses: github/codeql-action/upload-sarif@2d92b76c45b91eb80fc44c74ce3fce0ee94e8f9d # v3.30.0
6565
with:
6666
sarif_file: results.sarif

.github/workflows/sonarcloud.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: SonarQube
2+
on:
3+
push:
4+
branches:
5+
- main
6+
jobs:
7+
sonarqube:
8+
name: SonarQube Scan
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
12+
with:
13+
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
14+
- name: SonarQube Scan
15+
uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 #v5.3.1
16+
env:
17+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
18+
with:
19+
args: >
20+
-Dsonar.organization="academysoftwarefoundation"
21+
-Dsonar.projectKey="AcademySoftwareFoundation_rez"
22+
-Dsonar.projectName="rez"
23+
-Dsonar.sources="src/"
24+
-Dsonar.tests="tests/"
25+
-Dsonar.exclusions="sonar.exclusions=src/build_utils/**,src/rez/data/**,src/rez/tests/**,src/rez/vendor/**"
26+
-Dsonar.python.version="3.7, 3.8, 3.9, 3.10, 3.11, 3.12"

.github/workflows/tests.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ jobs:
6060

6161
steps:
6262
- name: Checkout
63-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
63+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
6464

6565
- name: Setup python ${{ matrix.python-version }}
66-
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
66+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
6767
with:
6868
python-version: ${{ matrix.python-version }}
6969

@@ -93,12 +93,12 @@ jobs:
9393

9494
- name: Run tests
9595
id: tests
96-
run: rez-selftest -v -- --cov=rez --cov-report=xml:coverage.xml
96+
run: rez-selftest -v -- --cov=rez --cov=rezplugins --cov-report=xml:coverage.xml
9797
env:
9898
_REZ_ENSURE_TEST_SHELLS: ${{ matrix.shells }}
9999

100100
- name: Upload coverage reports to Codecov
101-
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
101+
uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
102102
# Run on both success and failure, but only if coverage.xml exists.
103103
if: ${{ hashFiles('coverage.xml') != '' && (steps.tests.outcome == 'success' || steps.tests.outcome == 'failure') }}
104104
with:

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_rez&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=AcademySoftwareFoundation_rez)
1717
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_rez&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=AcademySoftwareFoundation_rez)
1818
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_rez&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=AcademySoftwareFoundation_rez)
19-
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_rez&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=AcademySoftwareFoundation_rez)
19+
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_rez&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=AcademySoftwareFoundation_rez)<br>
20+
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8389/badge)](https://www.bestpractices.dev/projects/8389)
2021

2122

2223
- [What Is Rez?](#what-is-rez)

SECURITY.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<!-- SPDX-License-Identifier: Apache-2.0 -->
2+
<!-- Copyright Contributors to the Rez Project -->
3+
4+
# Security Policy
5+
6+
## Reporting a Vulnerability
7+
8+
If you think you've found a potential vulnerability in rez, please
9+
report it by filing a GitHub [security
10+
advisory](https://github.com/AcademySoftwareFoundation/rez/security/advisories/new). Alternatively,
11+
email [email protected] and provide your contact info for further
12+
private/secure discussion. If your email does not receive a prompt
13+
acknowledgement, your address may be blocked.
14+
15+
Our policy is to acknowledge the receipt of vulnerability reports
16+
within 48 hours. Our policy is to address critical security vulnerabilities
17+
rapidly and post patches within 14 days if possible.
18+
19+
## Known Vulnerabilities
20+
21+
The only currently known security vulnerability is issue [#937](https://github.com/AcademySoftwareFoundation/rez/issues/937).
22+
No others are known at this time.
23+
24+
See the [release notes](CHANGES.md) for more information.
25+
26+
## Supported Versions
27+
28+
In general, the rez project release strategy is purely sequential, and we will drop support for any
29+
major version which is not the current development major version. However, we may at our discretion issue
30+
patches for prior major versions with compelling reasoning. The rez project team takes compatibility very
31+
seriously, deprecations are telegraphed, and forward compatibility is incredibly important, making it
32+
reasonable to expect that users of rez attempt to stay close to the newest version as possible.
33+
34+
## Signed Releases
35+
36+
Signed releases are not yet supported.
37+
38+
We plan to add signed releases soon. The following details are speculative but likely:
39+
40+
Release artifacts are signed via
41+
[sigstore](https://www.sigstore.dev). See
42+
[release-sign.yml](.github/workflows/release-sign.yml) for details.
43+
44+
To verify a downloaded release at a given tag:
45+
46+
% pip install sigstore
47+
% sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/rez/.github/workflows/release-sign.yml@refs/tags/<tag> rez-<tag>.tar.gz
48+
49+
## Security Expectations
50+
51+
### Software Features
52+
53+
- The rez project implements a package management solution that is agnostic
54+
to build system, shell, platform, architecture, operating system, or
55+
packaged toolset. rez can be used to package python, javascript, C++, or
56+
even binaries. As long as it is possible to express the way your package
57+
modifies the environment to expose itself to be consumed, rez can package it.
58+
59+
- rez is implemented in python, and consists primarily of simply its own
60+
source, a handful of vendored python packages, and is installed to a system
61+
in the form of a virtualenv-powered executable, tied to a python interpreter.
62+
63+
- rez exposes a robust CLI which can be used to do common operations like build
64+
or release packages, to resolve and drop into a shell for a given environment,
65+
or to freeze context files that can be used to bake and reuse resolves.
66+
67+
- rez exposes an API that can be used, in and out of isolation, to perform many
68+
of the same tasks, as well as more granular operations, so that groups can
69+
also leverage many of the low-level constructs that make the higher-level CLI
70+
usages possible. An important disclaimer is that the rez API has not yet been
71+
robustly reviewed and modified to express what the boundaries of the public vs
72+
private API are, meaning that some internals may currently be exposed that rez
73+
may in the future be moved, hidden, or removed.
74+
75+
- rez reads and writes to/from stdout, as well as to/from json-like rxt files.
76+
rez also writes temporary shell context files like .sh or .bat scripts on a
77+
shell-by-shell basis, as a shell entrypoint into the chosen environment.
78+
79+
- rez exposes a rich plugin system which can be used and configured in order to
80+
augment and expand its use-cases or integrations per the users preferences.
81+
82+
- rez will engage in network calls only if configured to do so. Typically, this
83+
would be the case with the built-in `memcached` functionality, or to publish
84+
`amqp` messages on package release.
85+
86+
- The only login credentials that rez currently expects to come into contact
87+
with are those needed for the context tracking feature, where the amqp userid
88+
and password are encoded in a dictionary to be used when making the amqp
89+
connection.
90+
91+
- rez does not handle, or expect to handle, any other sort of login credentials
92+
to any network, file system, or verson-control system currently. rez expects
93+
that these details are handled independently and outside of rez.
94+
95+
- rez packages and plugins can, by definition and by design, result in the
96+
execution of arbitrary code. It is critical that users of rez maintain their
97+
own strict control over their own package repositories, configs, and not trust
98+
arbitrary packages or plugins given to them by unknown sources. rez takes no
99+
responsibility for malicious effects caused by that execution of code.
100+
101+
### Software Dependencies
102+
103+
rez depends on python and virtualenv, in order to be installed.
104+
105+
At runtime, without any user-provided plugins, rez depends on the following
106+
table of vendored packages, their versions, and details related to any
107+
modifications made:
108+
109+
[Vendored Packages](https://github.com/AcademySoftwareFoundation/rez/blob/main/src/rez/vendor/README.md)
110+
111+
### Potential Vulnerabilities
112+
113+
It is expected that maliciously crafted packages, or rxt files, could cause any
114+
type of issue that would ordinarily be causable as the result of a json file load,
115+
or an arbitrary code execution. Do not use or consume packages or context files
116+
provided from untrusted sources without undue validation, care, or sandboxing.
117+
118+
#### Development Cycle and Distribution
119+
120+
rez is downloadable and buildable as (mostly) python source via the GitHub
121+
releases page. Only members of the project's Technical Steering Committee have
122+
write permissions on the source code repository. All critical software changes
123+
are reviewed by at least one TSC member.
124+
125+
rez is also distributed as a [PyPI](https://pypi.org/project/rez/) package,
126+
however this distribution is not yet usable as a so-called "production install",
127+
for which details can be found in the
128+
[docs](https://rez.readthedocs.io/en/stable/installation.html#installation-via-pip).
129+
This may change in the future.

0 commit comments

Comments
 (0)